2013-06-12 2 views
0

Для большей ясности: это не функция возврата null. Речь идет о функции, бросающей Exception, которая оказывается null.Camera.open() THROWS null

throw null; 

Нравится это.

У меня есть приложение для камеры, которое отлично работает в мороженое сэндвич. В прянике он рушится; однако, я только что видел Camera.open()thrownull.

try { 
    releaseCameraAndPreview(); 
    mCamera = Camera.open(camera); 
    //and the above throws ... 
} catch (Exception e) { 
    e.printStackTrace(); 
    //and e is null, causing a NullPointerException 
} 

releaseCameraAndPreview это:

private void releaseCameraAndPreview() { 
    if (mCamera != null) { 
     mCamera.stopPreview(); 
     mCamera.release(); 
     mCamera = null; 
    } 
} 

Камера равна нулю в этой точке, так ничего не происходит.

Я даже не знал, что это было возможно, чтобы выбросить null. Что это значит?

+0

releaseCameraAndPreview(); проверьте, что происходит в этой функции. Также опубликуйте полный стек tats – Triode

+0

post stacktrace в любом случае. – njzk2

+1

использование mCamera.release(); после сделанного изображения –

ответ

0

Перезагрузка телефона исправлена; Я могу только предположить, что камера попала в поврежденное состояние каким-то образом во время тестирования.

+1

, но это не лучшее решение для этого. –

+0

Я знаю, но я не могу понять, почему 'Camera.open()' также выдавал бы «null». –

0

Заблокирует камеру, чтобы другие процессы не обращались к ней. Объекты камеры заблокированы по умолчанию, если не вызвана функция unlock(). Вместо этого вместо этого используется reconnect().
С уровня API 14, камера автоматически блокируется для приложений в start(). Приложения могут использовать камеру (например, масштабирование) после начала записи. Нет необходимости вызывать это после начала или остановки записи.

Проверьте, заблокирован ли объект и попробуйте его разблокировать.

https://developer.android.com/reference/android/hardware/Camera.html#lock%28%29

Смежные вопросы