研究android sensor service

在Android10及以后版本,传感器服务的编程接口发生了变化,传感器接口继承自ISensors。文章介绍了如何实现初始化、获取传感器列表等关键函数,并详细阐述了服务的注册过程,包括SensorsImpl类的作用以及如何通过vintf_fragments配置服务。同时,强调了动态HALs的配置和SELinux策略对服务启动的重要性。
摘要由CSDN通过智能技术生成

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值