我正在Android中开发一个小型相机捕捉程序。
我没有使用Intent
打开相机并显示它的图像。我直接使用相机:
if (myPreviewRunning) {
myCamera.stopPreview();
myPreviewRunning = false;
}
Camera.Parameters parameters = myCamera.getParameters();
display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
display = getWindowManager().getDefaultDisplay();
Camera.Size optimalSize = getOptimalSize(parameters.getSupportedPreviewSizes(), width, height);
parameters.setPreviewSize(optimalSize.width, optimalSize.height);
if (display.getRotation() == Surface.ROTATION_0 ||display.getRotation() == Surface.ROTATION_270)
{
parameters.setPreviewSize(optimalSize.height, optimalSize.width);
ViewGroup.LayoutParams layoutParams = mySurfaceView.getLayoutParams();
layoutParams.width = optimalSize.height;
layoutParams.height = optimalSize.width;
mySurfaceView.setLayoutParams(layoutParams);
myCamera.setDisplayOrientation(90);
}
else
{
myCamera.setDisplayOrientation(180);
mySurfaceView.getLayoutParams().width = optimalSize.width;
mySurfaceView.getLayoutParams().height = optimalSize.height;
}
myCamera.setParameters(parameters);
myCamera.setPreviewDisplay(holder);
myCamera.startPreview();
到目前为止,使用此代码我可以将相机旋转为“自然”行为,因此当我将手机旋转到横向时,它会旋转图像并在横向上看到它。但由于某些原因,我需要预览图像保持纵向模式,即使我放置了风景。
如何强制相机预览保持纵向模式?
编辑: AndroidManifest.xml
<activity
android:name="CameraViewer"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
我希望能够做到这一点: