2013年4月12日金曜日

Android機種依存(カメラ編) 鬼門その3

鬼門その3
プレビュー用SurfaceView関連

 SurfaceViewを利用してプレビューを表示する場合、表示しているSurfaceViewには手を出せないんで、Viewを重ねて処理している方が多いかと思います。
この場合Resume時やレイアウトの変更時に上に重ねたViewが下に行っちゃったりします。
 対処としては、Resume時、レイアウト変更時に上に重ねたViewにbringToFront()をかけてやる。
これで今のところうまくいってます。

 あと、setPreviewSizeでプレビューのサイズを指定しても実際に表示されるプレビューはSurfaceViewのサイズになります。
 なので比率がおかしくなったりしないようにカメラのPreviewSizeに合わせてSurfaceView側の大きさを変えましょう。

 それとsurfaceDestroyedイベントできちんとカメラを開放しましょう。でないと他のアプリでカメラが使えなくなったりします。解放はこんな感じで↓

public void surfaceDestroyed(SurfaceHolder holder) {
    if(camera != null){
        camera.setPreviewCallback(null);
        camera.stopPreview();
        camera.release();
    }
    camera = null;
}

0 件のコメント:

コメントを投稿