AndroidManifest.xmlファイルで画面の向きを指定しない場合、デフォルトの表示方向は横長です。電話機を回転させるたびにアンドロイドは取得した画像を変更して画像を電話機と揃えるようにします。したがって、2つのオプションがあります:
1.1。 AndroidManifest.xmlファイルで画面の向きを指定し、適切に画面の向きを設定:
のAndroidManifest.xml:
<activity
android:label="@string/app_name"
android:name=".CameraPreview"
android:screenOrientation="portrait" >
CameraPreview.java:
mCamera.setPreviewDisplay(holder);
mCamera.setDisplayOrientation(90);
または
のAndroidManifest.xmlを:
<activity
android:label="@string/app_name"
android:name=".CameraPreview"
android:screenOrientation="landscape" >
CameraPreview.java:
mCamera.setPreviewDisplay(holder);
mCamera.setDisplayOrientation(0);
1.2。
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
int rotation = ((Activity)mCtx).getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 90; break;
case Surface.ROTATION_90: degrees = 0; break;
case Surface.ROTATION_180: degrees = 270; break;
case Surface.ROTATION_270: degrees = 180; break;
}
mCamera.setDisplayOrientation(degrees);
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
しかし、以来、あなたがまだのボタンで肖像画のレイアウトを設計しているようです:適切に画面が回転するたびに方向を選別AndroidManifest.xmlファイルに画面の向きを指定し、設定しないでください私は最良の選択肢が最初のものだと思う。
これは役に立ちます。
いいえ、いいですね、うまくいきますが、私の問題は、風景とポートレートの向きのサイズが異なることです。風景ではほぼフルスクリーンで、肖像画ではちょうど私は中央のディスプレイの3分の1だと思います。分かりますか? –
私はそれを得ました。私はちょうどGoogleのサンプルコードのchild.layout(...)を変更しなければならなかった。今はかなりうまく動作しますが、Nexusでテストされていることを知っているので、他のデバイスでテストしなければなりません。ありがとう! –