Andriod Sensor 架構(gòu)深入剖析
時間:2018-08-16作者:華清遠見
1、Android sensor架構(gòu) Android4.0系統(tǒng)內(nèi)置對傳感器的支持達13種,它們分別是:加速度傳感器(accelerometer)、磁力傳感器(magnetic field)、方向傳感器(orientation)、陀螺儀(gyroscope)、環(huán)境光照傳感器(light)、壓力傳感器(pressure)、溫度傳感器(temperature)和距離傳感器(proximity)等。 Android實現(xiàn)傳感器系統(tǒng)包括以下幾個部分:
各部分之間架構(gòu)圖如下: 2、Sensor HAL層接口 Google為Sensor提供了統(tǒng)一的HAL接口,不同的硬件廠商需要根據(jù)該接口來實現(xiàn)并完成具體的硬件抽象層,Android中Sensor的HAL接口定義在:hardware/libhardware/include/hardware/sensors.h 對傳感器類型的定義:
傳感器模塊的定義結(jié)構(gòu)體如下:
該接口的定義實際上是對標準的硬件模塊hw_module_t的一個擴展,增加了一個get_sensors_list函數(shù),用于獲取傳感器的列表。 對任意一個sensor設(shè)備都會有一個sensor_t結(jié)構(gòu)體,其定義如下:
每個傳感器的數(shù)據(jù)由sensors_event_t結(jié)構(gòu)體表示,定義如下:
其中,sensor為傳感器的標志符,而不同的傳感器則采用union方式來表示,sensors_vec_t結(jié)構(gòu)體用來表示不同傳感器的數(shù)據(jù),sensors_vec_t定義如下:
Sensor設(shè)備結(jié)構(gòu)體sensors_poll_device_t,對標準硬件設(shè)備hw_device_t結(jié)構(gòu)體的擴展,主要完成讀取底層數(shù)據(jù),并將數(shù)據(jù)存儲在struct sensors_poll_device_t結(jié)構(gòu)體中,poll函數(shù)用來獲取底層數(shù)據(jù),調(diào)用時將被阻塞定義如下:
控制設(shè)備打開/關(guān)閉結(jié)構(gòu)體定義如下:
3、Sensor HAL實現(xiàn)(以LM75溫度傳感器為例子) (1)打開設(shè)備流程圖
(2)實現(xiàn)代碼分析 在代碼中含有兩個傳感器ADC電位器和LM75溫度傳感器,所以在sensor.c中,首先需要定義傳感器數(shù)組device_sensor_list[],其實就是初始化struct sensor_t結(jié)構(gòu)體,初始化如下:
定義open_sensors函數(shù),來打開Sensor模塊,代碼如下:
在這個方法中,首先需要為hw_device_t分配內(nèi)存空間,并對其初始化,設(shè)置重要方法的實現(xiàn)。 control_open_data_source()打開傳感器并使能設(shè)備:
調(diào)用sensor__data_poll方法讀取數(shù)據(jù):
/*輪詢讀取數(shù)據(jù)*/ Sensor相關(guān)技術(shù): 相關(guān)資訊
發(fā)表評論
|
全國咨詢電話:400-611-6270,雙休日及節(jié)假日請致電值班手機:15010390966
在線咨詢: 曹老師QQ(3337544669), 徐老師QQ(1462495461), 劉老師 QQ(3108687497)
企業(yè)培訓(xùn)洽談專線:010-82600901,院校合作洽談專線:010-82600350,在線咨詢:QQ(248856300)
Copyright 2004-2018 華清遠見教育科技集團 版權(quán)所有 ,京ICP備16055225號,京公海網(wǎng)安備11010802025203號