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
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐