一、传感器类型
- 方向传感器:Sensor.TYPE_ORIENTATION
- 光线传感器:Sensor.TYPE_LIGHT
- 磁场传感器:Sensor.TYPE_MAGETIC_FIELD
- 温度传感器:Sensor.TYPE_AMBIENT_TEMPERATURE
- 加速度传感器:Sensor.TYPE_ACCELEROMETER
- 陀螺仪传感器:Sensor.TYPE_GYROSCOPE
二、使用方法
获取某种类型传感器:
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
注册监听,获取传感器变化值:
sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_GAME);
第三个参数为采样率,分别为最快、游戏、普通、用户界面。
- 最快:SensorManager.SENSOR_DELAY_FASTEST
最低延迟,对手机电力大量消耗。不是特别敏感的传感器不推荐使用。 - 游戏:SensorManager.SENSOR_DELAY_GAME
游戏延迟,大多数游戏使用 - 普通:SensorManager.SENSOR_DELAY_NORMAL
标准延迟,对于一般的益智类游戏可以使用 - 用户界面:SensorManager.SENSOR_DELAY_UI
用于屏幕方向自动旋转,相对节省电量
三、实例
public class MainActivity extends AppCompatActivity {
private SensorManager sensorManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取SensorManager
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
//获取Sensor
Sensor sensor = sensorManager.getDefaultSensor(SensorManager.SENSOR_ORIENTATION);
//注册监听
sensorManager.registerListener(new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float[] values = sensorEvent.values;
float value = values[0];
Toast.makeText(MainActivity.this, "方向:"+value, Toast.LENGTH_SHORT).show();
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
}, sensor, SensorManager.SENSOR_DELAY_GAME);
}
}