public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != Sensor.TYPE_ORIENTATION
|| event.values.length < 3)
return;
long currentTime = System.currentTimeMillis();
if ((currentTime - lastUpdate) > 100) {
long diffTime = (currentTime - lastUpdate);
lastUpdate = currentTime;
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
}
}
x<0 x>0
^
|
+-----------+--> y>0
| |
| |
| |
| | / z<0
| | /
| | /
O-----------+/
|[] [ ] []/
+----------/+ y<0
/
/
|/ z>0 (toward the sky)
O: Origin (x=0,y=0,z=0)
手机放水平了,
屏幕左方向下倾斜 event.values[SensorManager.DATA_Z] 大于0
屏幕上方向下倾斜 event.values[SensorManager.DATA_Y] 大于0
就算Android的屏幕变成横幅时,上面规则一样适用。 只不过这时屏幕左方是短的一测。
event.values[SensorManager.DATA_X]是屏幕水平,然后东南西北转的时候变化的。
0=North, 90=East, 180=South, 270=West