Android Sensor 架構深入剖析

2021-06-23 01:06:54 字數 2438 閱讀 4915

華清遠見嵌入式學院講師。

1、android sensor架構

android4.0系統內建對感測器的支援達13種,它們分別是:加速度感測器 (accelerometer)、磁力感測器(magnetic field)、方向感測器(orientation)、陀螺儀(gyroscope)、環境光照感測器(light)、壓力感測器(pressure)、 溫度感測器(temperature)和距離感測器(proximity)等。

android實現感測器系統包括以下幾個部分:

各部分之間架構圖如下:

2、sensor hal層介面

google為sensor提供了統一的hal介面,不同的硬體廠商需要根據該介面來實現並完成具體的硬體抽象層,android中sensor的hal介面定義在:hardware/libhardware/include/hardware/sensors.h

對感測器型別的定義:

感測器模組的定義結構體如下:

該介面的定義實際上是對標準的硬體模組hw_module_t的乙個擴充套件,增加了乙個get_sensors_list函式,用於獲取感測器的列表。

對任意乙個sensor裝置都會有乙個sensor_t結構體,其定義如下:

每個感測器的資料由sensors_event_t結構體表示,定義如下:

其中,sensor為感測器的標誌符,而不同的感測器則採用union方式來表示,sensors_vec_t結構體用來表示不同感測器的資料,sensors_vec_t定義如下:

sensor裝置結構體sensors_poll_device_t,對標準硬體裝置 hw_device_t結構體的擴充套件,主要完成讀取底層資料,並將資料儲存在struct sensors_poll_device_t結構體中,poll函式用來獲取底層資料,呼叫時將被阻塞定義如下:

控制裝置開啟/關閉結構體定義如下:

3、sensor hal實現(以lm75溫度感測器為例子)

(1)開啟裝置流程圖

(2)實現**分析

在**中含有兩個感測器adc電位器和lm75溫度感測器,所以在sensor.c中,首先需要定義感測器陣列device_sensor_list,其實就是初始化struct sensor_t結構體,初始化如下:

定義open_sensors函式,來開啟sensor模組,**如下:

在這個方法中,首先需要為hw_device_t分配記憶體空間,並對其初始化,設定重要方法的實現。

control_open_data_source()開啟感測器並使能裝置:

呼叫sensor__data_poll方法讀取資料:

/*輪詢讀取資料*/

static int sensors__data_poll(struct sensors_data_context_t *dev, sensors_data_t * values)

else

usleep(500000);

return id_magnetic_field;

}else if(count%3 == 1) //讀取溫度感測器值

else

close(dev->event_fd[1]);

dev->event_fd[1]= open("/sys/bus/i2c/devices/0-0048/temp1_input", o_rdonly);

usleep(500000);

return id_temperature;

}else if(count%3 == 0) //讀取方向感測器模擬值}}

Android Sensor 架構深入剖析

android sensor 架構深入剖析 華清遠見嵌入式學院講師。1 android sensor架構 android4.0系統內建對感測器的支援達13種,它們分別是 加速度感測器 accelerometer 磁力感測器 magnetic field 方向感測器 orientation 陀螺儀 g...

Android Sensor 架構深入剖析

1 android sensor架構 android4.0系統內建對感測器的支援達13種,它們分別是 加速度感測器 accelerometer 磁力感測器 magnetic field 方向感測器 orientation 陀螺儀 gyroscope 環境光照感測器 light 壓力感測器 press...

Android Sensor 架構深入剖析

1 android sensor架構 android4.0系統內建對感測器的支援達13種,它們分別是 加速度感測器 accelerometer 磁力感測器 magnetic field 方向感測器 orientation 陀螺儀 gyroscope 環境光照感測器 light 壓力感測器 press...