Androidでカメラ周りを触りました。
カメラのプレビュー表示に何度かつまったので情報を共有します。
今回はGalaxy SAndroid 2.2で開発をしました。

プレビューの色おかしくなる

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
	mCamera.stopPreview();
	Camera.Parameters params = mCamera.getParameters();
	// formatを使うとプレビューの色がおかしくなる
        // params.setPreviewFormat(format); 
        // プレビューのフォーマットを指定してやるときちんと映る
        params.setPreviewFormat(ImageFormat.NV21);
〜省略〜

setTypeは3.0以上でdeprecatedですが、それより下のバージョンでは必要

  • SDKによって警告が出ますが、Android 3.0未満のバージョンはないと落ちます。
mHolder = getHolder();
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

他のAndroid端末に対応するにはまだまだ頑張らないといけない。