Под блокировкой и разблокировкой вы имеете в виду, когда экран спит или нажатие выключателя питания устройства переводит устройство в спящий режим, а затем снова просыпается?
Если это так, я подозреваю, что вам нужно отпустить камеруресурсов в вашем 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()
Это хорошо работает для меня, когда устройство выключается и снова включается, или мое приложение в противном случае переходит в фоновый режим.