android - 检测方向变化,当 Android 只允许纵向时

标签 android android-orientation

我必须解决以下问题:我有一个 Activity,它是 android:screenOrientation="portrait"。虽然,当设备旋转到横向而此 Activity 可见时,我必须启动另一个,并且当设备旋转回纵向时,我必须 finish() 横向 Activity 。我尝试使用 BroadcastReceiver 执行此操作,但由于 android:screenOrientation="portrait",此特殊 Activity 未收到任何广播。非常感谢任何帮助。

谢谢。

最佳答案

Philipp 在 Get phone orientation but fix screen orientation to portrait 中的解决方案工作非常适合我:

即使在 list 中通过 android:screenOrientation="portrait"禁用了自动方向切换,您也可以使用 SensorManager 类获取 Android 设备的方向

查看此代码(由 Philipp 提供,查看上面的链接):

SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
    sensorManager.registerListener(new SensorEventListener() {
        int orientation=-1;;

        @Override
        public void onSensorChanged(SensorEvent event) {
            if (event.values[1]<6.5 && event.values[1]>-6.5) {
                if (orientation!=1) {
                    Log.d("Sensor", "Landscape");
                }
                orientation=1;
            } else {
                if (orientation!=0) {
                    Log.d("Sensor", "Portrait");
                }
                orientation=0;
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // TODO Auto-generated method stub

        }
    }, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);

关于android - 检测方向变化,当 Android 只允许纵向时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176991/

相关文章:

android - 将大量图像加载到内存会导致内存不足异常 - Android

android - D/skia : --- Failed to create image decoder with message 'unimplemented'

android - 像在相机应用程序中一样检测方向

android - 仅在发布版本中将 screenOrientation 设置为 "portrait"

android - 如何创建在指定屏幕位置显示的 android Activity ?

java - R.java 文件在 Android Studio 中未更新

Android Studio/ADB 突然停止初始化/连接/工作

java - Android Java 登录 Activity 方向更改

android - android 中三星设备上的相机捕获方向

android - onConfigurationChanged 不会在 android 中任何时候被调用