我需要在不手动处理传感器数据的情况下检测安卓设备的方向变化,同时保持活动方向固定在某个方向。
onConfigurationChange
不起作用,因为它会将我的活动固定在不旋转的状态。
我认为通过操纵传感器数据来检测方向变化是一种发明轮子的行为,因为安卓已经嵌入了检测设备方向变化的算法实现。而从另一方面来说,检测方向变化并非像这样简单的检查。
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
将无法工作)