我必须解决以下问题:我有一个 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/