4,客户端和服务端的连接
在上一章初始化的过程中论述到, SensorManager.cpp会通过binder机制调用sensor服务的getSensorList方法获取sensor的相关信息。
那数据是通过binder机制调用服务端获取的吗?
其实, java层的SystemSensorManager.java和SensorManager.cpp是对应的;
java层的SensorEventQueue和SensorEventQueue.cpp是对应的;
4.1 连接流程分析
android_hardware_SensorManager.cpp中对应的nativeInitBaseEventQueue为nativeInitSensorEventQueue,主要逻辑如下,
1,调用SensorManager的createEventQueue方法,
SensorManager* mgr = reinterpret_cast<SensorManager*>(sensorManager);
•••
sp<SensorEventQueue> queue(mgr->createEventQueue(clientName, mode));
2,构造Receiver对象,
sp<Receiver> receiver = new Receiver(queue, messageQueue, eventQWeak, scratch);
createEventQueue方法之后的调用流程图如下,