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();
						}
					}
				});
			}
		});
    }

こんな感じで、排他処理を行うようにしました。

みなさんも気をつけてください。

関連する記事:

Facebookでコメント

コメント

  1. コメント 0

  1. トラックバック 0

*

return top