Sensor 传感器相关知识点记录
SensorManager
-
概要:
SensorManager 是一个让你能够访问到设备传感器的系统服务
The sensor manager is a system service that lets you access the device sensors.
-
获取方式:
通过获取 SENSOR_SERVICE 获取
val sensorManager = getSystemService(requireContext(),SensorManager::class.java)
获取设备上可用的传感器列表
-
使用 SensorManager 获取到全部的传感器
val sensorList: List<Sensor> = mSensorManager.getSensorList(Sensor.TYPE_ALL) val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //可以获取到光传感器 val sensorName = sensor.name //能够获取到传感器的名字
Sensor 是一个单独的类,代表着一个传感器对象,Sensor.TYPE_ALL 常量指示全部可用的传感器
获取到传感器的数据
-
SensorEventListener 说明
当传感器数据发生变化的时候,Android 传感器框架构建了一个事件(SensorEvent),我们可以使用 SensorEventListener 接口来监听数据变化,并在 onSensorChanged()回调中处理新数据
When sensor data changes, the Android sensor framework generates an event (a
SensorEvent
) for that new data. Your app can register listeners for these events, then handle the new sensor data in anonSensorChanged()
callback. All of these tasks are part of theSensorEventListener
interface. -
SensorEventListener 接口详情
SensorEventListener 包括两个回调函数,我们能够在其中处理传感器数据
- onSensorChanged() : 当传感器数据时可用的,我们可以在这里处理我们 APP 中的新传感器数据
- onAccuracyChanged(): 当传感器精确度改变后,我们的 APP 能够响应这个变化
-
SensorEventListener 的使用
-
Activity 实现 SensorEventListener ,并实现两个回调方法
class MainActivity() : AppCompatActivity(),SensorEventListener{ override fun onSensorChanged(sensor:Sensor, accuracy:Int){ //TODO } override fun onSensorChanged(event:SensorEvent){ //TODO } }
SensorEvent 事件分析
val sensorType = sensor.type //类型 val sensorName = sensor.name //传感器名
-
使用 SensorManager 在 onStart 方法注册监听
override fun onStart(){ sensorManager.registerListener (this,sensor,SensorManager.SENSOR_DELAY_NORMAL); }
-
在 onStop 中解除监听
override fun onStop(){ sensorManager.unregisterListener(this); }
-