Пример ошибки камеры при блокировке / разблокировке устройства - PullRequest
4 голосов
/ 25 августа 2011

Я работаю с камерой и использую точно такой же пример, приведенный в документации: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html

Я запускаю пример на Xoom с Android 3.1 и 3.2.

Моя проблема в том, что когда я блокирую и разблокирую Xoom, камера не возвращается.Изображение остается прежним, пока я не заблокировал планшет, и красный свет тоже не возвращается.

Если кто-нибудь может мне помочь, я буду признателен.

Ответы [ 2 ]

8 голосов
/ 25 августа 2011

Под блокировкой и разблокировкой вы имеете в виду, когда экран спит или нажатие выключателя питания устройства переводит устройство в спящий режим, а затем снова просыпается?

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

В приложениях Android 2.2 и 2.3, которые я имею дело с камерой, я использую шаблон:

onCreate:
 - get reference to the camera
onResume:
- sv = (SurfaceView)this.findViewById(R.id.capture_SurfaceView);
            mHolder = sv.getHolder(); 
            mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
            mHolder.setSizeFromLayout();
            mHolder.addCallback(this); 
surfaceChanged:
- Camera.setPreviewDisplayHolder()
- Camera.startPreview()
onPause:
- Camera.stopPreview
- SurfaceHolder.removeCallback()
- Camera.release()

Это хорошо работает для меня, когда устройство выключается и снова включается, или мое приложение в противном случае переходит в фоновый режим.

0 голосов
/ 05 марта 2012

В одном решении может быть задано отображение поверхности невидимым и снова видимым в onResume (), это позволяет уничтожить поверхность и воссоздать ее.

...