Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android使用Senson获取设备方向_Android_Android Service_Orientation_Android Sensors_Android Windowmanager - Fatal编程技术网

Android使用Senson获取设备方向

Android使用Senson获取设备方向,android,android-service,orientation,android-sensors,android-windowmanager,Android,Android Service,Orientation,Android Sensors,Android Windowmanager,我正在开发一个应用程序,在一个服务类中,我使用WindowManager来扩展视图。因此,通常视图布局会根据设备方向更改其方向,但当我打开相机应用程序时,方向不会更改。如下图所示:- 因此,如何根据设备方向更改视图方向 谢谢确定您的设备的自然方向是否在横向/纵向中,或者您的应用程序的资源是否在横向/纵向中呈现是有区别的。听起来你想要前者: int getNaturalOrientation() { WindowManager windowManager = (WindowManage

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

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


谢谢

确定您的设备的自然方向是否在横向/纵向中,或者您的应用程序的资源是否在横向/纵向中呈现是有区别的。听起来你想要前者:

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;
    }
}
int getNaturalOrientation(){
WindowManager WindowManager=(WindowManager)context.getSystemService(context.WINDOW\u服务);
Display defaultDisplay=windowManager.getDefaultDisplay();
int rotation=defaultDisplay.getRotation();
如果(旋转==曲面.rotation_0 | | rotation==曲面.rotation_180){
如果(display.getDisplayHeight()>=display.getDisplayWidth()){
返回ActivityInfo.SCREEN\u方向\u纵向;
}
返回ActivityInfo.SCREEN\u方向\u横向;
}否则{
if(display.getDisplayHeight()

~受Chromium src中代码的启发:

官方Android不支持浮动活动,因此这取决于您的供应商。我曾想过使用SensonEventListner,但怀疑这是否会导致应用程序速度变慢,Android手机升温变快?