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); }
li>
在 onStop 中解除监听
override fun onStop(){ sensorManager.unregisterListener(this); }
-