【发布时间】:2011-03-31 18:34:07
【问题描述】:
我这里有 2 个机器人。
在他们两个中,当我打开我的应用程序时,摄像头显示非常错误(侧身转动 90 度并且通常拉伸......)
在其中一部手机中,有一个键盘,当我打开键盘时,应用程序可以正常工作...由于键盘强制定向,我认为问题在于手机总是期望相同的方向,但SDK 不同意。
然后我如何通知相机它应该一直使用什么方向?
【问题讨论】:
标签: android
我这里有 2 个机器人。
在他们两个中,当我打开我的应用程序时,摄像头显示非常错误(侧身转动 90 度并且通常拉伸......)
在其中一部手机中,有一个键盘,当我打开键盘时,应用程序可以正常工作...由于键盘强制定向,我认为问题在于手机总是期望相同的方向,但SDK 不同意。
然后我如何通知相机它应该一直使用什么方向?
【问题讨论】:
标签: android
如果您的应用程序在 v2.2 或更高版本上运行,您可以使用 camera.setDisplayOrientation(90) 将相机方向旋转为纵向。
在 v2.2 之前,相机只能横向显示,因此您必须将 Activity 设置为横向。
为了支持 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 及以下版本将不再受到关注。
【讨论】: