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等形式来灵活使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值