Android Sensor框架简述(二)

上一章总结了SensorService的工作流程,现在细分一下OnFirstRef()函数究竟做了什么

l流程图
流程很清晰,SensorService第一次创建之后,运行onFirstRef函数

其中调用getSensorList获得Sensor的列表,之后循环对每个Sensor进行注册,并把SensorList交给UserSensorList,之后UserSensorList将提交给JAVA框架层。

最后运行run,即SensorService的函数threadLoop

其中对SensorDevice使用poll函数来获取数据,之后处理虚拟传感器(由多个硬件传感器数据结合模拟一个传感器工作),比如直线加速度传感器等,最后sendEvents,将数据发送到管道中供APP应用层使用。


应用层数据使用

  1. 获取sensor manager对象;
    SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);

  2. 获取sensor object;
    Sensor mGYRSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);

    sensor可能会有很多,可以用sensorlist全部获取

  3. 定义eventListener:
    SensorEventListener mGYRSensorListener = new SensorEventListener()

  4. 注册eventListener;
    mSensorManager.registerListener(mGYRSensorListener, mGYRSensor,

    SensorManager.SENSOR_DELAY_GAME, mHandler);
    
  5. 卸载eventListener;
    mSensorManager.unregisterListener(mGYRSensorListener);

以上应用的方式非常灵活,不一定严格遵循此格式,可以通过Service等形式来灵活使用

文章目录
  1. 1. 应用层数据使用