Android – Не удается подключиться к камере

Я использую образец кода APIDemo для Android.

Когда я запускаю пример CameraPreview, сначала он выдавал мне ошибку .

Я проследил, что один вниз, и образец работал некоторое время.
Теперь он больше не работает. Это говорит

ERROR/AndroidRuntime(2949): java.lang.RuntimeException: Fail to connect to camera service 

Что может быть причиной этого? Это происходит, когда camera.open() .

Благодаря,
тройник

Не забудьте правильно освободить все имеющиеся ресурсы камеры:

  @Override public void surfaceDestroyed(SurfaceHolder holder) { if (mCam != null) { mCam.stopPreview(); mCam.setPreviewCallback(null); mCam.release(); mCam = null; } } @Override public void surfaceCreated(SurfaceHolder holder) { if (mCam == null) { mCam = Camera.open(); try { mCam.setPreviewDisplay(holder); // TODO test how much setPreviewCallbackWithBuffer is faster mCam.setPreviewCallback(this); } catch (IOException e) { mCam.release(); mCam = null; } } } 

Убедитесь, что элементы <uses-permission> находятся в правильных положениях в вашем файле AndroidManifest.xml .

Я также получаю этот тип проблемы на устройстве HTC. Чтобы решить добавить этот код:

 @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (camera!=null) { camera.stopPreview(); camera.release(); camera=null; } } 

И все же вы не можете запустить камеру, а затем перезапустить устройство.

Другая причина этой ошибки заключается в том, что при попытке открыть камеру, но какое-то другое приложение или даже ваше приложение уже использует камеру.

Кроме того, если вы используете эмулятор, убедитесь, что вы выбрали эмуляцию передней камеры и / или задней камеры.

Диспетчер виртуальных устройств Android-> Выбрать устройство-> Изменить-> Передняя камера-> Эмуляция

Как уже упоминалось, вы должны вызвать release () на объекте камеры, когда закончите.

Сначала я не делал этого, поэтому я изменил свой код, но все равно дал мне ту же ошибку. Я развертывал непосредственно на физическом телефоне и должен был перезапустить телефон, прежде чем он работал

Я также получил эту ошибку, когда я тестировал и прекратил выполнение до достижения точки в коде, когда:

 if (camera!=null){ camera.stopPreview(); camera.release(); camera=null; } 

назывался. Это заблокировало камеру, потому что она не была правильно выпущена. Мое решение состояло в том, чтобы выключить камеру и снова включить ее. Вы можете подтвердить это, пытаясь использовать встроенное приложение «Камера» в телефоне. Он не будет работать, потому что он все еще занят.

Second @ matt-burns, однако вы можете проверить, что вы только пытаетесь получить камеру один раз. Я забыл прокомментировать строку и пытался запустить два действия, которые попытались бы получить камеру.