sensor service编程接口
android 10以后sensor 继承自::android::hardware::sensors::V2_0::ISensors
需要实现
initialize
getSensorsList
setOperationMode
activate
batch
flush
injectSensorData
registerDirectChannel
configDirectReport
这几个虚函数。
hal
实例化Sensors类,然后将其注册为service。
SensorsImpl
SensorImpl是作为所有的sensor的代理接口,在Sensors的构造函中实例化SensorImpl类。
SensorsImpl的构造函数中检测已安装的sensor,并填充sensor_t数组。
getSensorsList
返回sensor_t数组长度,将senosr_t 成员的地址给list指针。
每个sensor实例化时,拉起一个线程,用于响应来自android层的请求。
添加sensors服务
android的服务由init进程拉起hwservicemanager服务,hwservicemanager通过解析
vintf_fragments的xml文件,以此确实需要拉起的服务(通过vintf_fragments指定的服务如果出现无法拉起的情况,系统将无法正常启动,会出现卡logo的情况)
Dynamically Available HALs
编写.rc文件。详细看官方文档
https://source.android.com/docs/core/architecture/hal/dynamic-lifecycle#automatic-lifecycles
会由hwservicemanager的ctl.interface_star信号拉起相应的服务。
Writing SELinux Policy
如果没有该策略文件,android将不会启动对应的服务程序。
详细查看官方文档
https://source.android.com/docs/security/features/selinux/device-policy#label_new_services_and_address_denials