Я создаю приложение, которое из 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 поставить галочку
Комментариев нет:
Отправить комментарий