私は次のAndroidコードを持っています(ここでは疑似コードで書かれています):
mCamera = configAndInitialize(); //all I want to do before taking picture
mCamera.startPreview();
mCamera.torchOn(); //setting parameters with flash mode torch
onClick(){
mCamera.stopPreview();
mCamera.takePicture();
mCamera.torchOff();
}
時々 (電話が最近再起動され、このアプリまでカメラが使用されていなかった場合)、このコードはエラー 100 カメラ サーバーが死亡した状態で終了します。カメラが正常に動作する前に写真を撮った場合。
私はそれをかなりの時間デバッグしていましたが、トーチで行をコメントアウトすると機能することがわかりました。写真を撮るときとそうでないときの両方のケースでトーチが機能しているのを見ることができます。
torchOn のコードは次のとおりです。
if(mCamera != null){
mCamera.stopPreview();
Camera.Parameters p = mCamera.getParameters();
List<String> supported = p.getSupportedFlashModes();
if (supported.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(p);
mCamera.startPreview();
}
トーチが原因で写真を撮ることができなかった理由はありますか? Motorola Razr と Samsung Galaxy SIII で発生したことを確認しました。
このアプリの 2 つのバージョンをデバイスにインストールしました (別の名前など)。そして、私は次のことを行います:
- デバイスを再起動する
- app-with-torch を試してみた
- app-with-torch がポイント 1 で機能する場合。
- app-without-torch を試してみた
- app-with-torch を試してみた
そして、結果は次のとおりです。
- トーチなしのアプリは常に機能します
- 試行の約 80% で app-with-torch がポイント 2 で機能しません。 (再起動後)
- app-with-torch はポイント 5 で常に機能します (app-without-torch が使用された後)。
写真を撮る直前に torchOff() を追加しても、アプリが動作し始めます。