ロックとロック解除とは、画面がスリープ状態になったとき、またはデバイスの電源スイッチが押されてデバイスがスリープ状態になり、再び起動したときを意味しますか?
その場合は、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()
これは、デバイスがオフになってから再びオンになったり、アプリがバックグラウンドになったりするときにうまく機能します。