下面三部
onstart()方法中
//1。获取一个传感器管理器 SensorManager manager = (SensorManager) getSystemService(SENSOR_SERVICE); //2.获取一个加速度传感器 Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); //3.注册加速度传感器 // SENSOR_DELAY_FASTEST = 0; // mes */ // SENSOR_DELAY_GAME = 1; // e user interface */ // SENSOR_DELAY_UI = 2; // ble for screen orientation // SENSOR_DELAY_NORMAL = 3; 参数一:设置传感器监听回调 参数二:监听长安起对象 参数三:传感器更新速度 manager.registerListener(listerner, sensor, SENSOR_DELAY_GAME);
public boolean registerListener(SensorEventListener listener, Sensor sensor, int samplingPeriodUs) {
private SensorEventListener listerner = new SensorEventListener() { @Override//当传感器的数值发生变化时调用 public void onSensorChanged(SensorEvent event) { float[] values = event.values;//长度为3 xyz轴加速度变化 float valueX = values[0]; //获取xyz加速度变化 float valueY = values[1]; float valueZ = values[2]; if (valueX > 17 || valueY > 17 || valueZ > 17) {//这个灵敏度测试 适中 long currentTimeMillis = System.currentTimeMillis(); if (currentTimeMillis - lastTime < 1000) { //设置时间不能 太短 如果不判断会一直执行 return; } lastTime = currentTimeMillis; starAnimation(); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { //传感器的精度发生变化时调用 } };
注意事项⚠️
在退出程序的时候需要解除注册,否则退出之后还会响应事件
onstop()方法中
//解除注册 systemService.unregisterListener(listener);
建议
初始化 onstart()方法
释放 onstop()方法
Android传感器类型表
- 加速度传感器:TYPE_ACCELEROMETER
以m/s2测量它设备所有三个物理轴线方向(x,y,和z)加速度。
- 周围温度传感器:TYPE_AMBIENT_TEMPERATURE
检测周围空气温度。
- 重力传感器:TYPE_GRAVITY
测量重力
- 陀螺仪传感器:TYPE_GYROSCOPE
以rad/s测量设备三个物理轴线方向(x,y,和z)。旋转速度。
- 光照传感器:TYPE_LIGHT
以lx测量周围的光线级别。
- 线性加速度传感器:TYPE_LINEAR_ACCELERATION
检测沿着一个轴向的加速度。
- 磁力传感器:TYPE_MAGNETIC_FIELD
测量周围的三个物理轴线方向的磁场。
- 方向传感器: TYPE_ORIENTATION
测量设备所有三个物理轴线方向(x,y和x)的旋转角度。
- 压力传感器:TYPE_PRESSURE
测量周围空气气压
- 接近传感器:TYPE_PROXIMITY
检测物体与手机的距离
- 相对湿度传感器:TYPE_RELATIVE_HUMIDITY
检测周围空气相对湿度
- 旋转矢量传感器:TYPE_ROTATION_VECTOR
用于检测运动和检测旋转。
- 温度传感器: TYPE_TEMPERATURE