Android开发Android技术知识

Android-Class(1)| Sensor

2019-10-12  本文已影响0人  yzbkaka

一.简介

Android系统提供了对传感器的支持,如果手机的硬件提供了这些传感器的话,那么我们就可以通过代码获取手机外部的状态。比如说手机的摆放状态、外界的磁场、温度和压力等等。

二.使用步骤

1.获得传感器管理对象

SensorManager mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);

2.获取传感器的类型

Sensor mSensor = mSensorManager.getDefaultSensor(传感器类型);

传感器可选类型如下:

Sensor.TYPE_ORIENTATION:方向传感器。
Sensor.TYPE_GYROSCOPE:陀螺仪传感器。
Sensor.TYPE_MAGNETIC_FIELD:磁场传感器。
Sensor.TYPE_GRAVITY:重力传感器。
Sensor.TYPE_LINEAR_ACCELERATION:线性加速度传感器。
Sensor.TYPE_AMBIENT_TEMPERATURE:温度传感器。
Sensor.TYPE_LIGHT:光传感器。
Sensor.TYPE_PRESSURE:压力传感器。

3.为传感器注册监听器

mSensorManager.registerListener(new SensorEventListener() {
        // 当传感器的值改变的时候回调该方法
        @Override
        public void onSensorChanged(SensorEvent event) {

        }
        // 当传感器精度发生改变时回调该方法
        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    }, mSensor, SensorManager.SENSOR_DELAY_GAME);

其中registerListener(SensorEventListener listener, Sensor sensor,int samplingPeriodUs)方法参数如下:

4.取消注册传感器

当我们在程序中不需要使用传感器后,需要我们进行手动取消注册释放资源:

mSensorManager.unregisterListener(this);

三.传感器作用详解

1.陀螺仪传感器

陀螺仪传感器用于感应手机的旋转速度。陀螺仪传感器给我们返回了当前设备的X、Y、Z三个坐标轴(坐标系统与加速度传感器一模一样)的旋转速度。旋转速度的单位是弧度/秒,旋转速度为:正值代表逆时针旋转,负值代表顺时针旋转。关于返回的三个角速度说明如下:

陀螺仪传感器一般是用于进行记步数功能的实现。

2.磁场传感器

磁场感应器主要读取设备周围的磁场强度。磁场传感器会返回三个数据,分别代表周围磁场分解到X、Y、Z三个方向的磁场分量,磁场数据的单位是微特斯拉。

3.重力传感器

重力传感器会返回一个三维向量,这个三维向量可显示重力的方向和强度。重力传感器的坐标系统和加速度传感器的坐标系统相同。

4.温度传感器

温度传感器用于获取设备所处环境的温度。温度传感器会返回一个数据,代表手机设备周围的温度,单位是摄氏度。

5.光传感器

光传感器用于获取设备周围光的强度。光传感器会返回一个数据,代表手机周围光的强度,单位是勒克斯。

6.压力传感器

压力传感器用于获取设备周围压力的大小。压力传感器会返回一个数据,代表设备周围压力的大小。

7.心率传感器

心率传感器是在5.0之后新增的一个传感器,用于返回佩戴设备的人每分钟的心跳次数。该传感器返回的数据准确性可以通过SensorEvent的accuracy进行判断,如果该属性值为:SENSOR_STATUS_UNRELIABLE或SENSOR_STATUS_NO_CONTACT,则表明传感器返回的数据是不太可靠的,应该丢弃。

在使用心率传感器时,需要增加如下权限:

<uses-permission android:name="android.permission.BODY_SENSORS"/>

参考资料:https://blog.csdn.net/Airsaid/article/details/52902299

上一篇下一篇

猜你喜欢

热点阅读