Android使用Sensons获取设备方向

安克什·库马尔·詹萨里亚

我正在开发应用程序,其中在服务类中使用WindowManager来扩展视图。因此,通常情况下,视图布局会根据设备方向更改其方向,但是当我打开相机应用程序时,方向不会更改。如下图所示:

图1

图2

因此,如何根据设备方向更改视图方向。

谢谢

伊戈尔·加纳波斯基(IgorGanapolsky)

确定设备的自然方向是在横向/纵向还是在横向/纵向渲染应用程序资源之间是有区别的。听起来您想要前者:

int getNaturalOrientation() {
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display defaultDisplay = windowManager.getDefaultDisplay();
    int rotation = defaultDisplay.getRotation();
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) {
        if (display.getDisplayHeight() >= display.getDisplayWidth()) {
            return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        }
        return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
    } else {
        if (display.getDisplayHeight() < display.getDisplayWidth()) {
            return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
        }
        return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
    }
}

〜受Chromium src中的代码启发:https//chromium.googlesource.com/chromium/src/+/aca91b5d8a53d77e98021d560305a996864df5e8/content/public/android/javatests/src/org/chromium/content/browser/ScreenOrientationListenerTest.java

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章