Подтвердить что ты не робот

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

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

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

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

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

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

Спасибо,
Тройник

4b9b3361

Ответ 1

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

    @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;
        }
    }
}

Ответ 3

Это происходит, если ваша деятельность не закрывает камеру правильно в surfaceDestroyed или onConfigurationChanged и т.д.

Не забывайте делать это каждый раз, когда вы выходите из своей деятельности:

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

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

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

Ответ 9

Второе @матовое ожоги, однако вы можете проверить, что вы только пытаетесь получить камеру один раз. Я забыл прокомментировать строку и пытался запустить два действия, которые попытаются получить камеру.