Androidでカメラアプリを作る場合の注意点
Androidでカメラアプリを作る場合、「Camera.autoFocus」又は、「Camera.takePicture」を使うと思うのですが、
その時に気を付けないとエラーを吐いてしまいます。
その気を付けないと行けない点は、排他処理です。
シャッターボタンを押下した時に走る、onClick処理が排他制御しないと画像取得のプロセスが2重に動作してしまい落ちてしまいます。
で作成した処理ですが、
/** * シャッター押下時の処理 * @param view */ public void onShutter(View view) { // 多重撮影禁止 synchronized (mObj) { if (mIsStart == false) onAutoFocus(view); } } /** * オートフォースでの画像撮影処理 * @param view */ public void onAutoFocus(View view) { mIsStart = true; mCamera.autoFocus(new AutoFocusCallback() { @Override public void onAutoFocus(boolean success, Camera camera) { camera.takePicture(null, null, new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { try { saveSD(data); camera.startPreview(); mIsStart = false; } catch (Exception e) { e.printStackTrace(); } } }); } }); }
こんな感じで、排他処理を行うようにしました。
みなさんも気をつけてください。
関連する記事:
- AndroidのPendingIntentで気を付けるべき事
- AndroidでActivityのスタックを削除する方法
- 暗黙的インテントの呼び出しでActivityNotFoundExceptionを防ぐ方法
- AndroidでUriからファイルパスを取得する方法
- Androidでのカメラ連動するアプリでのカメラの呼び出し方とデータ取得方法
コメント 0