通过SensorEventListener可以实现对传感器的监听,但是在监听之前,需要注册监听事件:
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_FASTEST);
具体的监听代码在下面方法中实现:
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {
if(Math.abs(event.values[2]) > 70.0f) {
orientation.setText("横屏");
} else if(Math.abs(event.values[1]) > 70.0f && Math.abs(event.values[1]) < 120) {
orientation.setText("竖屏");
} else if((Math.abs(event.values[2]) < 20.0f && Math.abs(event.values[1]) < 20.0f)
|| (Math.abs(event.values[2]) < 20.0f && Math.abs(event.values[1]) > 160.0f)) {
orientation.setText("水平");
} else{
orientation.setText("");
}
}
}
在不需要时,记得注销注册的服务哦:
mSensorManager.unregisterListener(this);
多说一句:看到这段代码,勾起了以往的一些回忆!雁过留名,人过留声!