Android:activity.getResources().getConfiguration().orientation 在三星 Galaxy 设备上返回错误值

Posted

技术标签:

【中文标题】Android:activity.getResources().getConfiguration().orientation 在三星 Galaxy 设备上返回错误值【英文标题】:Android: activity.getResources().getConfiguration().orientation returning wrong value on Samsung galaxy devices 【发布时间】:2018-07-24 10:18:56 【问题描述】:

对于我的 android 应用,activity.getResources().getConfiguration().orientation 返回的值始终为 1 (ORIENTATION_PORTRAIT),即使设备处于横向模式也是如此。这特别发生在三星 Galaxy 设备上。这导致我的片段使用纵向布局而不是项目中存在的横向布局。是否有其他方法可以检查三星设备的方向?有其他人面临同样的问题吗?

    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

    // Get device orientation
    Configuration config = activity.getResources().getConfiguration();
    mOrientation = config.orientation;

【问题讨论】:

Samsung... 但是您可以尝试通过使用资源来解决问题,如此处所述***.com/a/14929272/6386583 Check orientation on Android phone的可能重复 【参考方案1】:

您并不是第一个抱怨某些三星手机存在此缺陷的人:control orientation by sensor on Samsung devices。如果您不关心 SCREEN_ORIENTATION_REVERSE_PORTRAIT 的情况,也许对您来说SCREEN_ORIENTATION_SENSOR 会比 SCREEN_ORIENTATION_FULL_SENSOR 更好。

对于这家制造商做了一些不符合您预期的事情,我并不感到惊讶。我相信您仍然可以使用 OrientationListener 从加速度计中获取真实的设备方向,例如 How to detect my screen orientation in portrait locked screen in android?

【讨论】:

我尝试使用 SCREEN_ORIENTATION_SENSOR 但这也不起作用。当我的设备处于横向模式时,getResources().getConfiguration().orientation 仍然返回 1 (ORIENTATION_PORTRAIT)。 所以,OrientationListener 是你的选择 是的,我绝对可以尝试该解决方案,但理想情况下,我想要的是,当我扩展布局时,它应该自动检测要使用的布局文件夹(纵向或横向)。在这种情况下,设置正确的传感器将非常有用。这就是为什么我试图设置正确的传感器但直到现在都无法做到。 我的偏好一直是将相机预览保持在一个预定义的方向,可能是横向,就像所有预装的相机应用程序一样。动机是即使设备旋转,我也想保持取景器平滑。我仍然必须跟踪方向,至少要设置正确的 EXIF 旋转标志。

以上是关于Android:activity.getResources().getConfiguration().orientation 在三星 Galaxy 设备上返回错误值的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )

android 21 是啥版本

Android逆向-Android基础逆向(2-2)

【Android笔记】android Toast

图解Android - Android核心机制

Android游戏开发大全的目录