Android onSensorChanged水平センシング(TYPE_ORIENTATION)の方向
1388 ワード
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