2014年01月13日

Android カメラが縦向き(Portrait)の時にSurfaceViewのプレビュー画面がおかしくなる件について

AndroidプログラミングでPortraitにした時、どうしてもアスペクト比がおかしな、90度傾いたプレビュー画面が表示されちゃい困ってしまったのでメモ。

とりあえず調べた解決できたけどOrientation固定の方がいいのかなぁ…
でもUIレイヤーは固定したくないというジレンマ…


public void surfaceChanged(SurfaceHolder arg0, int arg1, int w, int h)
{
try
{
camera.stopPreview();
Camera.Parameters param = camera.getParameters();
WindowManager wm =
(WindowManager)Global.mainActivity.getSystemService(Context.WINDOW_SERVICE);
Display dp = wm.getDefaultDisplay();
int rot = dp.getRotation();
int d = 0;
switch(rot)
{
case Surface.ROTATION_0:
d=90;
param.setPreviewSize(h,w );
break;
case Surface.ROTATION_90:
d=0;
param.setPreviewSize(w, h);
break;
case Surface.ROTATION_180:
d=270;
param.setPreviewSize(h,w );
break;
case Surface.ROTATION_270:
d=180;
param.setPreviewSize(w, h);
break;
}
camera.setDisplayOrientation(d);param.setRotation(d);
//camera.setPreviewDisplay(getHolder());



camera.setParameters(param);
camera.startPreview();

}
catch (Exception e)
{
// TODO 自動生成された catch ブロック
Toast.makeText(Global.mainActivity.getApplicationContext(), "レベル3", 0).show();
}
}
param.setRotation(d);



posted by castor-09 at 02:36 | Comment(0) | Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: