HAL之sensor
Sensor相关文件路径
(1)传感器系统的java部分,实现文件为sensor*.java
frameworks\base\core\java\android\hardware
(2)传感器系统等JNI部分,演示Android.hardware.Sensor.Manager类的本质支持
frameworks\base\core\jni\android_hardware_SensorManager.cpp
(3)传感器的HAL层,演示传感器系统的硬件抽象层需要具体的实现
hardware\libhardware\include\hardware\sensors.h
(4)驱动层,根据不同平台有所差异
kernel\drivers\hwmon$(PROJECT)\sensor
HAL层sensor代码
(1)文件的android.mk
LOCAL_MODULE := sensors.default #重要,定义好的so名字,在JNI中会被加载调用
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS := -DLOG_TAG=\"Sensors\" \
-Wall \
-DSENSORHAL_ACC_ADXL346
# -DSENSORHAL_ACC_KXTF9
LOCAL_SRC_FILES := \
SensorBase.cpp \
InputEventReader.cpp \
AkmSensor.cpp \
sensors.cpp \
AdxlSensor.cpp
LOCAL_SHARED_LIBRARIES := liblog libcutils libdl
LOCAL_PRELINK_MODULE := false
include $(BUILD_SHARED_LIBRARY)
(2)填充相关结构体–sensors.h中定义的
sensors_module_t 定义sensor模块
struct sensors_module_t {
struct hw_module_t common;
/**
* Enumerate all available sensors. The list is returned in "list".
* @return number of sensors in the list
*/
int (*get_sensors_list)(struct sensors_module_t* module,
struct sensor_t const** list);
}

本文介绍了Android系统中传感器HAL层的工作原理,包括相关文件路径、JNI部分、HAL层的具体实现以及驱动层的细节。详细讲解了sensor编程的流程,从获取系统服务到注册SensorEventListener,阐述了SensorEventListener的核心作用及其方法onSensorChanged和onAccuracyChanged。
最低0.47元/天 解锁文章
2712

被折叠的 条评论
为什么被折叠?



