5.1 案例分析
案例分析
行13:创建一个传感器的管理器实例。SensorManager管理着传感器。
行14:创建一个加速度传感器实例。该传感器可以测量物理意义上的加速度,如重力加速度。
行20:获取传感器服务。
行21-22:Sensor getDefaultSensor(int type),该方法通过传感器ID返回传感器。Sensor类中定义了很多传感器,这里列出部分传感器ID,如下:
- l SENSOR_TYPE_ACCELEROMETER:加速度传感器
- l SENSOR_TYPE_MAGNETIC_FIELD:磁力传感器
- l SENSOR_TYPE_ORIENTATION:方向传感器
- l SENSOR_TYPE_GYROSCOPE:陀螺仪传感器
- l SENSOR_TYPE_LIGHT:光线感应传感器
- l SENSOR_TYPE_PRESSURE:压力传感器
- l SENSOR_TYPE_TEMPERATURE:温度传感器
- l SENSOR_TYPE_PROXIMITY:接近传感器
- l SENSOR_TYPE_GRAVITY:重力传感器
- l SENSOR_TYPE_LINEAR_ACCELERATION:线性加速度传感器
- l SENSOR_TYPE_ROTATION_VECTOR:旋转矢量传感器
实际上,手机厂商可能还会自己添加一些新型传感器。
行26:创建一个传感器事件监听器,该监听器在行53中被注册到mAccelerometer上,用于监听加速度。
行30-39:用于当传感器检测到数据发生变化时,该如何响应。
行53:将监听器注册到传感器上,并指定采样频率。
boolean registerListener(SensorEventListener listener,Sensor sensor,int rateUs)
参数的意义:listener:传感器的监听器、sensor:待监听的传感器、rateUs:传感器的采样率。
参数rateUs表示监听传感器改变的采样率,就是从传感器获取值的频率。它被定义在SensorManager中,方便我们直接使用,它定义了如下几个选项:
- l SensorManager.SENSOR_DELAY_FASTEST:最快,延迟最小。
- l SensorManager.SENSOR_DELAY_GAME:适合游戏的频率。
- l SensorManager.SENSOR_DELAY_NORMAL:正常频率。
- l SensorManager.SENSOR_DELAY_UI:适合普通用户界面UI变化的频率。
选择哪种采样率要参照所开发应用的情况,采样率越大,将越耗费资源,包括电量、CPU等。
行60-61:当Activity不在前台时,则注销传感器监听,避免浪费资源。
学员评价