Android 屏幕旋转检测

Android screen rotation detection

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

我的设备上有另一个应用程序 运行,它必须检测当前方向(portrait/landscape,是否反转并不重要)并在设备屏幕方向改变时执行某些操作。 我写了一个运行良好的 OrientationEventListener :

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

我的问题: 当屏幕关闭然后再打开时,库存 ROM 将屏幕旋转为纵向,直到屏幕被解锁。 ** 我既没有在屏幕旋转到纵向时也没有在解锁后旋转回横向时收到事件 **

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

Note: That I have no Activity on screen : i'm running in background and want to detect it from background.

感谢您的帮助

感谢 +satnam 辛格

这是我使用的示例代码:

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);

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