Sensor系列四 Framework层分析_Service端

一、Sensor framwork service介绍

在上一节Framework层分析_Client端已经介绍了Sensor在framework中的框架结构,本文主要分析SensorService的启动流程和HAL层的交互工作。其中SensorService中主要包含以下类:

(1)SensorService.cpp

./frameworks/native/service/sensorservice/SensorService.cpp

SensorService是Android Sensor Framework最核心的模块,它实现了主要的Sensor控制流和数据流逻辑,完成Sensor参数的配置,数据分发,Client请求数据处理等功能。

(2)BinderService

./frameworks/native/include/binder/BinderService.h

BinderService是Android Service框架的主要类,它提供了Service的生命周期管理、进程将通信、请求响应处理等功能。Android总的大部分Service都会继承此类。 

(3)SensorEventConnect

./framework/native/libs/gui/ISensorEventConnect.cpp

SensorEventConnect是sensor数据传输通道,当Client开始监听某一个Sensor时,一个对应的SensorEventConnect将会被创建,Server端在接收到Sensor数据后,通过写入到SensorEventConnect传输给Client端。

(4)SensorDevice

./framework/native/services/sensorservice/SensorDevice.cpp

该类主要负责与HAL层交互。下面看下程序走向图:


二、SensorService流程分析

在系统启动时,SystemServer中会启动需要开启的服务,系统服务通过调用startSensorService启动sensorService,调用JNI,通过SensorService::instantiate实例化SensorService对象。

SensorService创建之后,将会调用SensorService::onFirstRefs()方法,来完成初始化工作,首先通过SensorDevice::getInstance来创建对象dev,调用dev.getSensorList(&list)获取传感器列表,传入sensor_t类型的list,创建HardwareSensor对象,传递给registerSensor,注册传感器,下面看下SensorService的onFirstRef方法。

void SensorService::onFirstRef()
{
    ALOGD("nuSensorService starting...");
    SensorDevice& dev(SensorDevice::getInstance());//实例化SensorDevice

    if (dev.initCheck() == NO_ERROR) {
        sensor_t const* list;
        ssize_t count = dev.getSensorList(&list);//获取sensorlist
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值