我这里有2个机器人。
在他们两个中,当我打开我的应用程序时,相机显示出可怕的错误(侧面翻转90度,通常拉伸......)
在其中一部手机中,有一个键盘,当我打开键盘时,应用程序正常工作...由于键盘强制定位,我认为问题是手机期望总是相同的方向但是SDK不同意。
我如何通知相机应该始终使用哪种方向?
答案 0 :(得分:20)
如果您的应用程序在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及以下系统将会降低雷达。