我正在研究 Android 中的传感器数据采集(Samsung Galaxy S3 上的 Jelly Bean)。我是 Android/Linux 内部的新手。
我正在尝试阅读有关传感器样本如何从驱动程序上升到用户空间的 Android 资源。作为参考看看这里。我可以从 SensorManager 一直到 SensorService。我可以看到内核模块加载基础结构、事件输入设备的注册以及驱动程序中的 input_report_rel() 函数调用(例如 Galaxy S3 的开源加速度计驱动程序)。但我迷失在两者之间,即在硬件抽象层中。SensorService(借助 SensorDevice)最终通过 struct sensors_poll_device_t 中的函数指针调用 HAL。头文件位于 /hardware/libhardware/include/hardware 中。
HAL 在哪里实施?HAL 和内核输入子系统之间的交互是如何进行的?SensorService 如何发现平台中可用的传感器以及从用户空间访问它们的文件?
任何形式的帮助表示赞赏!