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