我需要检测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
将不起作用)
有一个定向事件的监听器。
通过在清单中设置screenOrientation
属性,您将不再能够从onConfigurationChanged
获取方向值,因为它将停止触发,可以实现SensorEventListener
来获取Pitch
,roll
和[C0 ]角度来计算方向,但是对于这样的任务来说有点复杂和过大。我发现的最佳解决方案是使用yaw
,以下代码将根据方向更改更新旋转值,该值根据旋转角度为0到4:
我的活动设置为始终处于纵向模式。将此代码放在Create上。