我这里有两个安卓设备。
在这两个设备中,当我打开我的应用程序时,相机显示的画面非常错误(通常是旋转90度并且拉伸...)
在其中一个手机上,有一个键盘,当我打开键盘时,应用程序可以正常工作...因为键盘强制要求方向,所以我想问题可能是手机始终期望相同的方向,但SDK不同意。
那么我该如何告诉相机它应该一直使用哪个方向?
我这里有两个安卓设备。
在这两个设备中,当我打开我的应用程序时,相机显示的画面非常错误(通常是旋转90度并且拉伸...)
在其中一个手机上,有一个键盘,当我打开键盘时,应用程序可以正常工作...因为键盘强制要求方向,所以我想问题可能是手机始终期望相同的方向,但SDK不同意。
那么我该如何告诉相机它应该一直使用哪个方向?
如果您的应用程序运行在 v2.2 或以上版本,您可以使用 camera.setDisplayOrientation(90) 来将摄像头方向旋转到纵向。
在 v2.2 版本之前,相机只能以横向方向显示,因此您必须将活动设置为横向方向。
为了支持 v2.2 (API 级别 8) 及之前和之后的设备,一种解决方案是在 AndroidManifest.xml 中将活动方向默认设置为横向。然后在运行时检查 API 级别,如果是 froyo 或更高版本,则将活动方向更改为纵向并旋转相机显示。
//in activity onCreate method
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO)
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//After opening camera - call via reflection
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class);
rotateMethod.invoke(mCamera, 90);
这是最直接的解决方案,希望随着新设备的推出,v2.1及以下版本将会被淘汰。