即使 autoRotation 关闭,也能获取 android 设备方向

Posted

技术标签:

【中文标题】即使 autoRotation 关闭,也能获取 android 设备方向【英文标题】:Get android device orientation even when autoRotation is turned off 【发布时间】:2015-12-20 16:23:36 【问题描述】:

我有一个 android 应用,其中屏幕方向在清单文件中设置为纵向。 它在 b/w 中使用自定义相机来拍照,我需要保存照片。

在保存图像之前,我必须根据用户握持相机的方式旋转图像,以便图像以正确的方向保存。

那么,即使我的应用程序以纵向模式运行并且 android“自动旋转”功能已打开,有什么方法可以让我获得设备方向。 我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

您应该根据图像中的方向信息进行旋转,而不是取决于设备方向。

Here is some more information 关于如何确定旋转。

既然这样没用,你有没有试过hackpod的回答here:

getResources().getConfiguration().orientation

【讨论】:

我得到了 onPictureCallBack() 中的 byte[] ,从那里我怎么能看到方向信息? 我添加了指向我关注的 SO 问题的链接。 刚试了一下,Exif Meta数据的方向也一直是1 是的,我也试过那个。不工作。最后现在我使用方向传感器来获取值,这不是我的问题的最佳解决方案。 对不起,我帮不了你:-(【参考方案2】:

要获得当前的设备方向,试试这个:

getWindowManager().getDefaultDisplay().getRotation();

【讨论】:

这给了我我的活动窗口方向。我一直把它设置为纵向【参考方案3】:

只需检查图像的高度和宽度。如果高度小于您的宽度,则表示用户水平握住手机,因此您必须旋转它。

【讨论】:

宽度和高度都相同,因为相机仅在纵向模式下工作。我现在检查了。【参考方案4】:

我目前正在使用 android 方向传感器来解决这个问题并且它工作得很好。直到有人给出更好的工作方法,我接受这个作为其他有相同问题的人的答案。

【讨论】:

以上是关于即使 autoRotation 关闭,也能获取 android 设备方向的主要内容,如果未能解决你的问题,请参考以下文章

即使在应用程序关闭时也能监听时区变化

即使在暂停时也能获取 iOS 应用的位置更新

iOS 6应该是Autorotate:没有被调用

即使不会爬虫技术,也能轻松获取的重要数据

数据即使不会爬虫技术,也能轻松获取的重要数据

Beginning iOS 7 Development《精通iOS7开发》05 Autorotation and Autosizing