android sensor framework: java to jni to sensorservice

 

java层怎样获得SensorList

registerListenerImpl

 

创建SensorEventQueue

jni调用libsensor.so

jni层Receiver

Receiver是很关键的一个class, 链接native 和java, 直接调用native/java函数

 

 

 libsensor.so

创建native SensorEventQueue

通过SensroManager得到ISensorEventConnection

SensorEventQueue的读写

SensorEventQueue并没有通过new BitTube创建socket, 而是通过dup获得了sensorservice的socketFd, Receiver监听的就是sensorservice的Fd 读到的也是sensorservice收到的数据

 

派生类SensorEventQueue

 

 

enableSensor

对sensor的配置、控制通过是ISensorEventQueue, 不是ISensorService. ISensorService的功能是获得SensorList.

 

java 层传入的参数如常说的采样率对应的是samplingPeriodUs,到SensorEventQueue里变成了delayUs意义就不明显了, 这里还有个单位的变化,java层是Us, Native层的SensorEventQueue的enableSensor转换成ns

public boolean registerListener(SensorEventListener listener, Sensor sensor,
    int samplingPeriodUs, int maxReportLatencyUs) 

status_t SensorEventQueue::enableSensor(int32_t handle, int32_t samplingPeriodUs,
                                        int64_t maxBatchReportLatencyUs, int reservedFlags) const {
    return mSensorEventConnection->enableDisable(handle, true, us2ns(samplingPeriodUs),
                                                 us2ns(maxBatchReportLatencyUs), reservedFlags);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值