Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Фотография с камеры из android.app.Service

Я создаю приложение, которое из Service делает фотографию с задней камеры телефона. Но во время выполнения у меня вылетает исключение:
java.lang.RuntimeException: Fail to connect to camera service
Вот исходный код моего Service
@SuppressWarnings("deprecation") public class I2 extends Service {
byte[] i1;
@Override public IBinder onBind(Intent i1) { return null; }
@Override public void onStart(Intent i1, int i2) { new Thread(new i1()).start(); return; }
private class i1 implements Runnable {
private byte[] i1 = null;
@Override public void run() { while (true) { try { Camera i1 = Camera.open(); i1.setPreviewDisplay(new SurfaceView(I2.this).getHolder()); i1.startPreview(); i1.takePicture(null, null, new PictureCallback() {
@Override public void onPictureTaken(byte[] i1, Camera i2) { I2.this.i1 = i1; //получаю byte картинки i2.stopPreview(); i2.release(); }
}); } catch (Exception e1) { Log.v("", "lnp_ " + e1.toString()); } try { Thread.sleep(10000); } catch (InterruptedException e1) { } } }
}
}
В файле AndroidManifest.xml разрешение на камеру добавил:

В интернете нашёл примеры проектов работы с камерой и нашёл следующее: https://examples.javacodegeeks.com/android/core/hardware/camera-hardware/android-camera-example/ но всё-равно та же самая ошибка! Подскажите, как её исправить?


Ответ

Перед тем, как получать доступ камере, и уж тем более фотографировать, необходимо вот эту строчку вписать:
Camera.getNumberOfCameras();
Спасибо пользователю @Yura Ivanov.

Если программируете на эмуляторе Android версии 5.0 и выше, то, надо зайти в Настройки -> Приложения -> "Имя Вашего приложения" -> Разрешения -> Camera поставить галочку

Комментариев нет:

Отправить комментарий