Мне нужно обнаружить изменение ориентации устройства Android, не играя вручную с данными датчика, при этом сохраняя ориентацию активности в какой-то ориентации
onConfigurationChange
не будет работать, так как моя активность будет привязана к тому, чтобы не вращаться.
Игра с данными датчика для обнаружения изменения ориентации Я считаю это изобретением колеса, поскольку в Android уже есть встроенная реализация алгоритма для обнаружения изменения ориентации устройства. А с другой стороны, обнаружение смены ориентации не является такой простой проверкой.
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER || event.values.length < 3) {
return;
}
//getResources().getConfiguration().orientation;
if (event.values[1] < 6.5 && event.values[1] > -6.5) {
if (orientation!=1) {
Log.d("Sensor", "Protrait");
}
orientation=1;
} else {
if (orientation!=0) {
Log.d("Sensor", "Landscape");
}
orientation=0;
}
}
Это действительно требует реальной обработки данных, такой как фильтрация от шума и внезапных коротких встряхиваний/вращений.
Есть идеи, как определить ориентацию устройства с помощью устаревших служб? (Еще раз, я буду придерживаться какой-то ориентации своей активности, поэтому onConfigurationChange
не будет работать)