我开发有针对性的SDK 8分钟SDK 7使用相机视图的应用程序。
显然,有旋转的肖像相机已经有一个讨论的相当数量的已经是这个问题。 目前,我有以下修补程序分开SDK 7 8+:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.FROYO){
theCamera.setDisplayOrientation(90);
} else {
parameters.set("orientation", "portrait");
parameters.set("rotation",90);
}
其作品既有2.1update1设备和SGS2我已经(运行ICS)上。
我的问题是,做什么样的可靠性,这些解决方案可以在各种设备? 我见过的“升级Froyo预”的局面几个解决方案,所以我怀疑这个解决方案对所有设备的工作。 我也想知道如何“setdisplayorientation”是在不同的设备尊重...
我非常感激听到对方的这方面的经验。
所以一些更多的信息: 如何正确设置Android摄像头的方向? 这说明,这些方法的工作一些时间。 所以,从点(SDK版本)的进一步的问题并setDisplayOrientation开始工作,所有的时间?
一个奇怪的解决方案,方向不会为所有设备完全相同。 它是完全取决于OEM,可以改变设备到设备(我曾尝试在许多设备上)。 你不能简单地解决它。 显示上首家推出带摄像头预览的活动,只是询问用户所提出的旋转是他想要的,让如果不是他去改变它。 基于用户选择,你可以处理它。
我相信你的方法效果很好。 你可能做的唯一的事情就是建立不同版本的APK的如果你觉得应用没有与设备无关。
我想检查的API级别不处理这个问题的正确方法。 看看下面的代码,以锁定方向。
public static void lockRotation(final AndroidActivity activity) {
Display display = ((WindowManager) activity.getSystemService(activity.WINDOW_SERVICE)).getDefaultDisplay();
// Lock the rotation effect
// For every 90 degrees we have an other orientation (not only landscape & portrait)
if (Surface.ROTATION_0 == display.getOrientation()) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (Surface.ROTATION_270 == display.getOrientation()) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (Surface.ROTATION_90 == display.getOrientation()) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (Surface.ROTATION_180 == display.getOrientation()) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}