Android人像相机的可靠性

我正在开发和应用针对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)。

我的问题是,这些解决scheme在各种设备上具有怎样的可靠性? 我已经看到了一些“pre-froyo”情况的解决scheme,所以我很怀疑这个解决scheme适用于所有设备。 我也想知道'setdisplayorientation'在不同的设备上有多好…

听说其他人的经验,我会很感激。


所以一些更多的信息: 如何正确设置Android相机方向? 这就解释了这些方法在某些时候是有效的。 所以进一步的问题从什么时候(SDK版本)setDisplayOrientation开始工作所有的时间?

Solutions Collecting From Web of "Android人像相机的可靠性"

一个奇怪的解决scheme,方向将不会完全相同的所有设备。 它完全依赖于硬件,可以改变设备到设备(我试过很多设备)。 你不能简单地修复它,只有一个选项,你刚刚允许用户设置旋转,一旦你的应用程序第一次启动获取由用户设置的基本旋转angular度并保存到设置一旦完成,你可以做任何你事后要。

我相信你的方法运作良好。 你可能做的唯一的事情就是构build不同版本的APK,如果你觉得应用程序不是独立于设备的话。

我认为检查API级别不是解决这个问题的正确方法。 查看下面的代码来locking方向。

 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); } }