方向传感器(Orientation sensor)
加速感应器(Accelerometer sensor)
陀螺仪传感器(Gyroscope sensor)
磁场传感器(Magnetic field sensor)
距离传感器(Proximity sensor)
光线传感器(Light sensor)
气压传感器(Pressure sensor)
温度传感器(Temperature sensor)
重力感应器(Gravity sensor,Android 2.3引入)
线性加速感应器(Linear acceleration sensor ,Android 2.3引入)
旋转矢量传感器(Rotation vector sensor,Android 2.3)
相对湿度传感器(Relative humidity sensor,Android 4.0)
近场通信(NFC)传感器(Android 2.3引入),NFC和其他不一样,具有读写功能。
当然除了这些以外还有其他比如心率传感器,记步传感器,指纹传感器等, 关于Android设备所支持的传感器类型可见官方文档 https://developer.android.com/guide/topics/sensors/sensors_overview#java

首先需要创建一个传感器的管理器

private SensorManager sensorManager;
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

获取手机支持的传感器列表,之后根据这个列表来创建传感器对象

private List<Sensor> sensors = new ArrayList<>();
sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

遍历传感器列表,并且注册

for(Sensor sensor:sensors){
     sensorManager.registerListener(SensorListener, sensorManager.getDefaultSensor(sensor.getType()), SensorManager.SENSOR_DELAY_NORMAL);
}

具体监听器代码

final SensorEventListener SensorListener = new SensorEventListener() {
        public void onSensorChanged(SensorEvent sensorEvent) {
            //当sensor的值发生变化的时候会触发这个回调方法
            editor.putString(sensorEvent.sensor.getName(),
                    String.valueOf(sensorEvent.values[0]) + "\r"
                    //+ "y=" + String.valueOf(sensorEvent.values[1]) + "\r"
                    //+ "z=" + String.valueOf(sensorEvent.values[2]) + "\r"
            );
            editor.apply();
        }
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            //当精度变化的时候来处理
        }
    };

这个时候就已经可以获取所有的传感器信息了。

千万不要忘了最后注销!!

sensorManager.unregisterListener(SensorListener);
最后修改日期:2020年3月25日

作者

留言

匿名进行回复 取消回复