【问题标题】:Android screen rotation detectionAndroid屏幕旋转检测
【发布时间】:2016-05-26 10:41:31
【问题描述】:

我有一个应用程序强制屏幕旋转为横向(外部应用程序通过 ADB 控制设备)

我的设备上运行了另一个应用程序,它必须检测当前方向(纵向/横向、反转与否无关紧要)并在设备屏幕方向改变时执行某些操作。 我写了一个很好用的 OrientationEventListener :

m_orientationEventListener = new OrientationEventListener(this) {
    @Override
    public void onOrientationChanged(int orientation) {
        doSomething()
    }
};
m_orientationEventListener.enable();

我的问题: 当屏幕关闭然后打开时,股票ROM将屏幕旋转到纵向,直到屏幕解锁。 ** 当屏幕旋转为纵向或解锁后旋转回横向时,我都没有收到事件**

有什么方法可以听这个吗?

注意:我在屏幕上没有活动:我正在后台运行并且 想从背景中检测它。

感谢您的帮助

【问题讨论】:

  • 使用 SensorEventListener。

标签: android listener screen-rotation


【解决方案1】:

谢谢 +satnam singh

这是我使用的示例代码:

m_sensorEventListener = new SensorEventListener() {
    @Override
    public void onSensorChanged(SensorEvent event) {
        if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
            Log.i(TAG,"Orientation : PORTRAIT");
        }
        else {
            Log.i(TAG,"Orientation : LANDSCAPE");
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {}
};

SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);
sm.registerListener(m_sensorEventListener, sm.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_NORMAL);

我添加了一个屏幕状态(开/关)BroadcastReceiver 以在屏幕关闭时关闭我的监听器并避免不必要的功耗

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多