亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Android Sensor HAL層深度解析:結(jié)構(gòu)體、流程與平臺適配調(diào)試

Android Sensor HAL層深度解析:結(jié)構(gòu)體、流程與平臺適配調(diào)試 簡介面向Android系統(tǒng)開發(fā)者的傳感器HAL層源碼包聚焦傳感器硬件抽象層的內(nèi)部實(shí)現(xiàn)適合需要深入理解傳感器框架、進(jìn)行自定義ROM或硬件適配的工程師尤其對系統(tǒng)級開發(fā)者價值明顯。包內(nèi)含27個文件包括13個C源文件、12個頭文件、1個靜態(tài)庫和1個構(gòu)建腳本源文件與頭文件實(shí)現(xiàn)傳感器驅(qū)動及HAL接口覆蓋加速度計(jì)、陀螺儀、磁力計(jì)、光感與接近傳感器等靜態(tài)庫提供MEMS融合算法構(gòu)建腳本負(fù)責(zé)編譯集成整體僅71KB。目前已有913人學(xué)習(xí)/下載。通過閱讀各傳感器驅(qū)動、輸入事件讀取與傳感器檢測模塊可梳理從底層文件節(jié)點(diǎn)讀取事件、數(shù)據(jù)校準(zhǔn)到HAL接口上報(bào)的完整鏈路掌握獲取傳感器列表、批處理、使能等核心接口的底層行為同時還能了解多傳感器協(xié)同、MEMS融合算法封裝、功耗優(yōu)化以及新增傳感器硬件的移植思路為系統(tǒng)級調(diào)試、性能調(diào)優(yōu)和故障排查提供直接參考。 接手過一個傳感器調(diào)試任務(wù)現(xiàn)象很典型上層應(yīng)用能讀到加速度計(jì)和陀螺儀的傳感器列表但數(shù)值永遠(yuǎn)停在同一個位置。第一反應(yīng)是查應(yīng)用代碼查了三天一無所獲。后來偶然打開HAL層的調(diào)試日志才發(fā)現(xiàn)數(shù)據(jù)鏈路早就斷了——問題根本不在應(yīng)用而在android的sensor hal層。那次經(jīng)歷之后我花了不少時間把HAL層的接口、結(jié)構(gòu)體、平臺適配邏輯完整梳理了一遍才真正看懂這個最深處的守門人在整條鏈路里扮演的角色。這篇文章的目標(biāo)很明確把sensor hal層里的關(guān)鍵結(jié)構(gòu)體、調(diào)用流程、平臺差異和排查方法講清楚。適合正在做驅(qū)動適配、系統(tǒng)中間件開發(fā)、傳感器bring up的工程師也想讓對傳感器內(nèi)部機(jī)制好奇的應(yīng)用層開發(fā)者知道一個傳感器沒數(shù)據(jù)的問題到底要過幾道門才能定位到根因。1. Sensor HAL層到底藏了什么密碼先看清整條數(shù)據(jù)鏈路1.1 從觸摸屏幕到傳感器數(shù)據(jù)一次上報(bào)要過幾道門很多Android開發(fā)者對傳感器框架的印象是注冊一個Listener然后等回調(diào)。但在回調(diào)的背后數(shù)據(jù)要穿過一條相當(dāng)長的鏈路。應(yīng)用層通過SensorManager.getDefaultSensor()拿到傳感器實(shí)例再通過registerListener()訂閱數(shù)據(jù)。這一步會向下走進(jìn)SensorManager的JNI層再通過Binder進(jìn)入SystemServer里的SensorService。SensorService是系統(tǒng)里的傳感器管理中樞它統(tǒng)一管理所有傳感器客戶端、事件分發(fā)和權(quán)限控制。SensorService真正取數(shù)據(jù)時會調(diào)用SensorDevice而SensorDevice做的事情是通過hw_get_module()加載一個以libsensors.xxx.so命名的HAL庫。這個so文件就是HAL層。它通常由芯片廠商或整機(jī)廠商提供向上實(shí)現(xiàn)Android定義的標(biāo)準(zhǔn)接口向下通過設(shè)備節(jié)點(diǎn)、I2C/SPI總線甚至協(xié)處理器和內(nèi)核驅(qū)動及物理傳感器交互。數(shù)據(jù)上報(bào)的方向則完全反過來傳感器硬件產(chǎn)生中斷或數(shù)據(jù) - 內(nèi)核驅(qū)動讀取寄存器 - HAL層通過poll輪詢或中斷事件拿到原始數(shù)據(jù) - 做濾波、校準(zhǔn)、坐標(biāo)轉(zhuǎn)換 - 交給SensorService - 再分發(fā)給上層應(yīng)用的回調(diào)函數(shù)。所以一次看似簡單的加速度計(jì)數(shù)值變化至少經(jīng)過應(yīng)用、框架、Native服務(wù)、HAL、內(nèi)核驅(qū)動、硬件六個環(huán)節(jié)。每一層都可能截?cái)鄶?shù)據(jù)而HAL層是唯一一個接口是公開的、實(shí)現(xiàn)是閉源的環(huán)節(jié)也是最難排查的環(huán)節(jié)。1.2 為什么說HAL層是獨(dú)家的HAL層的獨(dú)家體現(xiàn)在兩個層面。第一接口標(biāo)準(zhǔn)是公開的但具體實(shí)現(xiàn)每家都不同。AOSP定義了一套統(tǒng)一接口Android上層只認(rèn)這套接口但同一顆加速度計(jì)芯片在高通平臺上和MTK平臺上的HAL實(shí)現(xiàn)可能完全不同。高通的HAL往往會把傳感器邏輯下沉到DSP協(xié)處理器MTK則依賴自己的Sensor Hub硬件海思平臺又有自己的配置通道。上層看到的都是同一個SensorDemo底下的實(shí)現(xiàn)卻是八仙過海。第二真正的算法和校準(zhǔn)參數(shù)全都鎖在HAL層里。姿態(tài)融合、計(jì)步識別、握持檢測、溫漂補(bǔ)償這些獨(dú)家配方不會放進(jìn)內(nèi)核也不會放進(jìn)框架而是以靜態(tài)庫或私有配置的方式跟HAL綁定在一起。這也是廠商之間拉開體驗(yàn)差距的護(hù)城河。所以如果你想搞清楚某個平臺上傳感器的性格最直接的路徑就是打開它的HAL層代碼。2. HAL頭文件里的簽名檔sensors.h關(guān)鍵結(jié)構(gòu)體逐個啃2.1 sensor_t一張傳感器的身份證不管哪家平臺的Sensor HAL頭文件里第一個繞不開的結(jié)構(gòu)體就是sensor_t。它描述了一個傳感器的所有靜態(tài)能力上層拿到這張身份證后才知道怎么使用這個傳感器。下面是實(shí)際產(chǎn)品里必須填對的核心字段字段作用注意點(diǎn)name / vendor傳感器名字和廠商會影響用戶看到的顯示名handle傳感器的唯一句柄上層用這個ID來指定操作哪個傳感器一般從0開始編號type傳感器類型對應(yīng)SENSOR_TYPE_ACCELEROMETER、SENSOR_TYPE_GYROSCOPE等上層一大套分發(fā)邏輯依賴這個值maxRange量程加速度計(jì)常見的 ±16g 就要寫成 16.0 嗎不對很多驅(qū)動上報(bào)的是累加值要按實(shí)際轉(zhuǎn)換后的物理單位填寫resolution分辨率1 LSB對應(yīng)的物理量直接影響上層看到的數(shù)值精度power工作電流單位mASensorService做功耗統(tǒng)計(jì)時會用到minDelay最小上報(bào)周期單位微秒對應(yīng)最大采樣率maxDelay最大上報(bào)周期加了report_mode之后這個字段決定batch模式下最低頻率fifoReservedEventCount / fifoMaxEventCountFIFO事件數(shù)用來告訴系統(tǒng)這個傳感器支持多少事件緩存stringType字符串類型標(biāo)識從Android 4.0開始推薦使用比如android.sensor.accelerometerrequiredPermission訪問權(quán)限需要權(quán)限才能訪問的傳感器必須填比如心率傳感器這里要特別強(qiáng)調(diào)maxRange和resolution一定不能隨手抄參考代碼必須跟驅(qū)動里的實(shí)際轉(zhuǎn)換公式對齊。我就見過一個平臺加速計(jì)量程填成2g驅(qū)動實(shí)際輸出是4g的量程結(jié)果上層所有算力都基于錯誤量程做成的計(jì)步器偏差離譜。2.2 sensors_module_t 與 sensors_poll_device_t入口和操作句柄Android的HAL模塊有統(tǒng)一規(guī)范每個HAL都必須導(dǎo)出一個hw_module_t傳感器HAL則通過sensors_module_t擴(kuò)展。這個結(jié)構(gòu)體除了公共接口外最關(guān)鍵的是get_sensors_list()函數(shù)——它返回該設(shè)備上所有傳感器的sensor_t數(shù)組。static const struct sensor_t base_sensors[] { { .name BMI160 Accelerometer, .vendor Bosch, ... }, }; static int sensors_get_sensors_list(struct sensors_module_t* module, struct sensor_t const** list) { *list base_sensors; return ARRAY_SIZE(base_sensors); }上層拿到傳感器列表后再通過open()拿到sensors_poll_device_t這個操作句柄。sensors_poll_device_t繼承了hw_device_t并且擴(kuò)展出了activate、setDelay、poll、batch、flush這些關(guān)鍵函數(shù)。真實(shí)產(chǎn)品里HAL庫必須實(shí)現(xiàn)完整的方法表才能通過框架的加載校驗(yàn)。這里有個容易踩坑的點(diǎn)get_sensors_list返回的傳感器數(shù)組內(nèi)容必須在HAL加載期間保持有效不能是臨時變量否則上層訪問時會拿到野指針。有些平臺為了動態(tài)配置傳感器列表會分配一塊靜態(tài)存儲區(qū)再把可變指針填進(jìn)去。2.3 sensors_event_t上報(bào)數(shù)據(jù)的統(tǒng)一快遞盒上層從poll()里讀到的所有數(shù)據(jù)都用sensors_event_t來承載。這個結(jié)構(gòu)體把多種傳感器類型的事件做成了union針對不同類型切片解釋。typedef struct sensors_event_t { int32_t version; int32_t sensor; int32_t type; int32_t reserved0; int64_t timestamp; union { struct { float x, y, z; } acceleration; struct { float x, y, z; } gyro; struct { float x, y, z; } magnetic; struct { float light; } light; struct { float distance; } proximity; ... }; uint32_t flags; uint32_t reserved1[3]; } sensors_event_t;關(guān)鍵點(diǎn)在于timestamp。這個時間戳必須是CLOCK_MONOTONIC域的系統(tǒng)單調(diào)時鐘不能是CLOCK_REALTIME因?yàn)橄到y(tǒng)休眠時實(shí)時時鐘可能調(diào)整會導(dǎo)致傳感器事件的時間線錯亂。好多傳感器調(diào)試問題都出在這個細(xì)節(jié)上數(shù)據(jù)有、曲線有但時間線不定期倒跳最后定位到就是HAL里直接把內(nèi)核驅(qū)動的jiffies轉(zhuǎn)成了實(shí)時時鐘的毫秒數(shù)。另外一個字段是flags。在batch和direct channel模式下flags會標(biāo)記事件是否來自FIFO、是否為喚醒事件這個不多看一眼后面做功耗優(yōu)化時很容易踩坑。3. 真正干活的三板斧activate、setDelay、poll的實(shí)現(xiàn)邏輯3.1 activate的使能與禁用傳感器不是一開就完事上層調(diào)startListening()之后最終會轉(zhuǎn)化為HAL層的activate(handle, 1)調(diào)用。這個函數(shù)用真實(shí)的物理動作開啟傳感器把GPIO拉起來、通過I2C寫入電源模式寄存器、申請中斷、啟動輪詢線程等。activate(handle, 0)則做相反的事情。實(shí)現(xiàn)activate時的常見坑有同一個傳感器被多個客戶端同時使用但HAL層并不維護(hù)引用計(jì)數(shù)。SensorService已經(jīng)做了上層的客戶端管理它保證只有第一個和最后一個Listener來去時才會調(diào)用activate。HAL層如果自己也做引用計(jì)數(shù)反而容易出現(xiàn)狀態(tài)錯亂。不同上報(bào)模式的傳感器activate之后的預(yù)期行為也不同。連續(xù)上報(bào)型如加速度計(jì)需要馬上開始持續(xù)輸出數(shù)據(jù)on-change型如光感、接近傳感器只在數(shù)值變化時上報(bào)一次one-shot型如顯著運(yùn)動檢測只上報(bào)一次事件后自動進(jìn)入禁用狀態(tài)特殊上報(bào)型如姿態(tài)傳感器通常需要結(jié)合硬件中斷觸發(fā)。這些差異直接影響HAL層的具體實(shí)現(xiàn)方式。3.2 setDelay與batch參數(shù)換算頻率是門算術(shù)課setDelay(handle, period_ns)的參數(shù)是納秒周期的期望值但真實(shí)驅(qū)動往往只支持固定的幾檔頻率HAL層需要把期望值轉(zhuǎn)換成最近的硬件頻率。比如驅(qū)動支持 10ms、20ms、50ms 三檔上層要15msHAL可以取最近的20ms也可以直接向下取整到10ms行業(yè)內(nèi)通常傾向于取不小于請求值的檔位避免頻率不足導(dǎo)致上層計(jì)算的積分漂移。batch()則更復(fù)雜它同時設(shè)置了period_ns、max_report_latency_ns和flags。max_report_latency_ns表示硬件FIFO可以緩存事件多久不上報(bào)這個參數(shù)是傳感器省電的核心。如果傳感器硬件FIFO足夠HAL可以讓傳感器在低功耗模式下持續(xù)采集事件先存進(jìn)FIFO等到超過max_report_latency_ns或者FIFO快滿時再一次性上報(bào)AP側(cè)的cpu可以一直休眠。這也是為什么sensor_t里的fifoMaxEventCount要填準(zhǔn)因?yàn)樗鼪Q定了batch模式下FIFO能裝多少事件比如采樣率100HzFIFO容量為1000個事件那硬件大約可以緩存10秒的數(shù)據(jù)。3.3 poll與線程模型把數(shù)據(jù)穩(wěn)定送到上層poll()是個阻塞函數(shù)SensorService會開啟專門線程調(diào)用它HAL實(shí)現(xiàn)里最常見的做法是內(nèi)部維護(hù)一個環(huán)形緩沖區(qū)當(dāng)傳感器數(shù)據(jù)到來時寫入poll()被調(diào)用時把緩沖區(qū)里的數(shù)據(jù)拷貝到上層數(shù)組并返回事件個數(shù)。如果沒有數(shù)據(jù)則阻塞等待一個條件變量。實(shí)現(xiàn)poll時的幾個關(guān)鍵細(xì)節(jié)多傳感器共用一個poll線程靠傳入的傳感器句柄區(qū)分?jǐn)?shù)據(jù)來源。當(dāng)多個事件同時到達(dá)時poll()返回的是一個數(shù)組框架層會按數(shù)組順序分發(fā)。如果某個傳感器數(shù)據(jù)量大可以在一次poll里返回多個事件。環(huán)形緩沖區(qū)要加鎖且鎖內(nèi)不能做耗時的I2C讀取否則中斷上報(bào)會被鎖拖住。flush操作也要在poll線程里配合完成。上層調(diào)用flush()后HAL層的flush()函數(shù)不能直接返回一個事件因?yàn)槭录仨氉呓y(tǒng)一的事件通道。正確做法是在flush里置一個標(biāo)志讓poll線程在下一個循環(huán)中生成一個META_DATA_FLUSH_COMPLETE類型的事件返回。4. 平臺適配的暗礁高通、MTK、海思的HAL差異4.1 高通平臺從直接操作寄存器到DSP大管家高通老平臺比如MSM8916那一代的Sensor HAL相對簡單很多是直接在HAL里通過/dev節(jié)點(diǎn)操作I2C、SPI設(shè)備。到了后續(xù)平臺高通的傳感器框架逐步演變成以SLPI/ADSP為核心的模式傳感器被掛到DSP側(cè)DSP負(fù)責(zé)采樣和基礎(chǔ)算法AP側(cè)的Sensor HAL通過QMI/fastrpc消息與DSP通信。這個架構(gòu)的直觀影響是HAL層看到的不是一只裸傳感器而是一套運(yùn)行在DSP上的服務(wù)。上層調(diào)activateHAL會把請求包裝成消息發(fā)給傳感器核心再等待DSP的回執(zhí)。所以高通平臺上調(diào)HAL debug的時候不僅要在AP側(cè)打日志還得在DSP側(cè)看診斷輸出。高通平臺還附帶一個比較麻煩的配置點(diǎn)傳感器列表和軸向來。不同機(jī)型裝配的傳感器模組不同同型號主板也可能存在方向角差異這些是通過產(chǎn)品樹的配置文件來描述并由HAL加載的。手勢、休眠時是否保持傳感器上報(bào)等都在這套配置里做改錯一個坐標(biāo)軸所有數(shù)據(jù)都會顛倒。4.2 MTK平臺Sensor Hub與硬件級融合MTK平臺通常有獨(dú)立的Sensor Hub協(xié)處理器甚至是多核MCU架構(gòu)。重力加速度、陀螺儀、磁力計(jì)數(shù)據(jù)先由協(xié)處理器統(tǒng)一采集再由HAL層通過專用通道獲取。觸覺上MTK的功耗表現(xiàn)不錯也是因?yàn)镾ensor Hub把數(shù)據(jù)采集和部分算法從AP里解放了。MTK平臺調(diào)試時有個明顯特點(diǎn)很多傳感器的使能邏輯分散在HAL層和內(nèi)核驅(qū)動的meta通道里。如果單純改HAL而忽略內(nèi)核側(cè)的cust_alsps、cust_acc這類配置宏常常會出現(xiàn)HAL明明已經(jīng)打開了傳感器底層卻沒有數(shù)據(jù)的現(xiàn)象。MTK還通常要求在HAL里對傳感器進(jìn)行坐標(biāo)系轉(zhuǎn)換因?yàn)镾ensor Hub輸出的默認(rèn)坐標(biāo)系跟Android的約定坐標(biāo)系不一致。4.3 海思平臺的configs與pqtool.sh海思平臺在機(jī)頂盒、車載和部分手機(jī)方案中都有應(yīng)用。它的傳感器HAL層比較依賴專用配置文件工程師通常通過一個類似pqtool.sh的腳本在調(diào)試階段把寄存器序列、校準(zhǔn)參數(shù)寫入對應(yīng)配置文件再加載到HAL的初始化流程里。這種腳本生成配置、配置驅(qū)動HAL的模式跟高通和MTK直接用代碼寫死參數(shù)的做法很不一樣。pqtool.sh這類工具的價值在于它可以快速驗(yàn)證寄存器配置是否生效而不用反復(fù)改代碼重編。用這類工具導(dǎo)出的configs文件本質(zhì)上就是廠家傳感器工廠校準(zhǔn)參數(shù)的最終存檔調(diào)試完成后一定要備份好否則量產(chǎn)換料后數(shù)據(jù)漂移會非常嚴(yán)重。4.4 i2c-tools查看傳感器真面目的利器無論哪個平臺拿到一塊新板子第一件事是用i2c-tools確認(rèn)傳感器還在線。Android工程機(jī)上最常用的三個命令是i2cdetect掃描總線上掛著的設(shè)備、i2cget讀寄存器、i2cset寫寄存器。以一顆常見的加速度計(jì)為例寄存器0x0F是芯片ID寄存器。如果I2C地址是0x68掛在I2C總線2上可以用這條命令確認(rèn)它還活著i2cget -y 2 0x68 0x0f正常返回的ID應(yīng)該跟數(shù)據(jù)手冊一致比如0xD1就表示BMI160在線。如果返回異常大概率不是HAL問題而是驅(qū)動、上拉電阻或芯片焊接問題。i2c-tools的價值就是把硬件通沒通和軟件有沒有讀對這兩個問題快速切開省去在HAL層瞎找原因的半天時間。5. 踩坑實(shí)錄從看不到數(shù)據(jù)到HAL層日志的完整排查鏈路5.1 場景一傳感器列表能讀到但是數(shù)據(jù)不動這是最經(jīng)典的問題??吹竭@個現(xiàn)象別急著改代碼按下面的鏈路走一遍。第一步用dumpsys sensorservice確認(rèn)SensorService視角下的傳感器狀態(tài)。命令會列出所有已注冊的傳感器以及當(dāng)前活躍的客戶端。重點(diǎn)看兩點(diǎn)傳感器列表里有沒有目標(biāo)傳感器只有應(yīng)用能拿到列表才說明HAL層的get_sensors_list正常當(dāng)前客戶端有沒有注冊成功如果注冊失敗問題是權(quán)限或handle沖突。第二步用getevent看內(nèi)核事件。傳感器通常通過input子系統(tǒng)上報(bào)運(yùn)行g(shù)etevent -S后晃動手機(jī)看有沒有事件流。如果有事件說明驅(qū)動正常問題卡在HAL到框架之間如果沒有事件說明驅(qū)動或硬件根本沒工作。第三步打開HAL層的調(diào)試日志。多數(shù)HAL實(shí)現(xiàn)都支持設(shè)置屬性或編譯開關(guān)打開ALOGD。把日志打開后看activate有沒有被調(diào)用poll線程有沒有在等數(shù)據(jù)以及事件里帶的傳感器handle是不是應(yīng)用期待的handle。實(shí)際操作中我印象最深的一次是列表正常驅(qū)動事件也正常但HAL里poll的數(shù)據(jù)集死活不動。最后定位到問題出在HAL加載了舊版本的傳感器配置庫庫里的FIFO緩沖沒有真正初始化poll線程一直在空轉(zhuǎn)。這種問題沒有日志定位幾乎不可能憑肉眼發(fā)現(xiàn)。5.2 場景二數(shù)值漂移得像過山車數(shù)據(jù)動是動了但完全對不上物理量靜置時加速度計(jì)讀數(shù)還在往下掉。這類問題大概率出在兩個環(huán)節(jié)校準(zhǔn)參數(shù)沒加載或者坐標(biāo)映射錯誤。用i2c-tools讀原始寄存器看原始值是否穩(wěn)定。如果原始值穩(wěn)定說明硬件沒問題那就是HAL沒把offset和sensitivity應(yīng)用到上報(bào)值上。很多傳感器的校準(zhǔn)參數(shù)存放在/mnt/vendor/sensors/calibration這類路徑如果這些文件缺失或權(quán)限不足HAL會退回默認(rèn)值漂移自然就會出現(xiàn)。坐標(biāo)映射錯誤則表現(xiàn)為翻轉(zhuǎn)會跳變。比如把手機(jī)平放桌面Z軸應(yīng)該接近9.8如果讀數(shù)變成0或者負(fù)值要去檢查HAL里的坐標(biāo)系轉(zhuǎn)換矩陣。這類錯誤最常見的原因是從參考設(shè)計(jì)拷貝代碼時沒有根據(jù)當(dāng)前主板上的實(shí)際裝配方向修改。5.3 場景三功耗下不來省電是傳感器HAL設(shè)計(jì)里繞不開的話題。明明開啟了batch模式功耗還是居高不下通常要檢查三件事FIFO配置有沒有用上喚醒傳感器有沒有被頻繁使用poll線程有沒有在無事件時真正休眠。FIFO配置這塊我實(shí)測過把fifoMaxEventCount從100改成0之后同樣場景下整機(jī)功耗直接多了幾十毫安因?yàn)槊總€事件都會立即喚醒AP。對喚醒傳感器Android框架有獨(dú)立的紅外喚醒通道但HAL層必須正確標(biāo)記SENSOR_FLAG_WAKE_UP標(biāo)志否則傳感器事件無法在系統(tǒng)休眠時喚醒AP。5.4 排錯工具速查工具用途使用時機(jī)dumpsys sensorservice查看傳感器列表和客戶端狀態(tài)優(yōu)先使用getevent -S看內(nèi)核input事件流判斷驅(qū)動好壞i2cdetect/i2cget/i2cset直接訪問傳感器寄存器確認(rèn)硬件在不在線HAL層ALOGD日志確認(rèn)activate/poll內(nèi)部行為定位軟件邏輯sensors-stress測試程序壓力測試多客戶端并發(fā)驗(yàn)證穩(wěn)定性6. 不上手的知識點(diǎn)不算真會一個最小Sensor HAL骨架參考很多文章講HAL層只停留在概念這里我直接給一個教學(xué)級別的骨架說明一個最基本的加速度計(jì)HAL要怎么寫。真實(shí)產(chǎn)品必須在對應(yīng)平臺SDK基礎(chǔ)上適配不能直接照抄但對于理解接口關(guān)系這個骨架足夠了。#include hardware/sensors.h static int accel_activate(struct sensors_poll_device_t* dev, int handle, int enabled) { // 打開/關(guān)閉設(shè)備節(jié)點(diǎn)或通過ioctl控制傳感器電源 // 真實(shí)場景這里會寫I2C寄存器 return 0; } static int accel_set_delay(struct sensors_poll_device_t* dev, int handle, int64_t period_ns) { // 將period_ns轉(zhuǎn)換為采樣頻率檔位 return 0; } static int accel_poll(struct sensors_poll_device_t* dev, sensors_event_t* data, int count) { // 讀取驅(qū)動緩存或設(shè)備節(jié)點(diǎn)填充sensors_event_t data[0].type SENSOR_TYPE_ACCELEROMETER; data[0].sensor 0; data[0].timestamp systemTime(SYSTEM_TIME_MONOTONIC); // data[0].acceleration.x ...; // data[0].acceleration.y ...; // data[0].acceleration.z ...; return 1; } static struct sensors_poll_device_1_t sensor_device { .common { .tag HARDWARE_DEVICE_TAG, .module sensor_module, .close sensor_close, }, .activate accel_activate, .setDelay accel_set_delay, .poll accel_poll, .batch accel_batch, .flush accel_flush, };編譯時把這個文件所在的模塊加進(jìn)平臺的PRODUCT_PACKAGES或者直接放在vendor包中編譯產(chǎn)物就是libsensors_xxx.so。然后用dumpsys sensorservice驗(yàn)證能否看到傳感器列表再用一個測試APK或sensorstest讀取數(shù)據(jù)。這塊骨架里最容易被忽略的是.common.module必須指向一個合法的sensors_module_t而sensors_module_t里必須實(shí)現(xiàn)get_sensors_list。如果這兩個指針沒對齊HAL加載會直接失敗但錯誤提示往往藏在logcat較深的地方不容易被發(fā)現(xiàn)。時間戳這一欄也要認(rèn)真處理不要用time()這類秒級時鐘而要用systemTime(SYSTEM_TIME_MONOTONIC)或clock_gettime(CLOCK_MONOTONIC)否則框架層融合算法的數(shù)據(jù)順序會亂。寫這個骨架的過程中我反復(fù)提醒自己HAL層不是寫一個接口就完事每個字段、每個返回值都是跟上下層之間的一紙契約。你對契約的理解越精確調(diào)起問題來就越有底氣。這種先看鏈路再看協(xié)議、先確認(rèn)硬件再定位軟件的排查方式我自己用了很多年實(shí)測是處理傳感器問題效率最高的路徑。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久久久久99999国产精品| 日韩亚洲欧美中文字幕| av影片在线观看不卡| 男人久久天堂| 丁香婷婷大香蕉| 亚洲熟女一区二区| 人妻激情另类| 午夜福利无毒不卡| 91在线丝袜| 色999亚洲人成色| 欧美色九九| 亚洲色图激情小说| 黄色AAAAA欧美| 蜜臀一二三| 99久久婷婷丁香| 成人小电影网站tex| 超碰在线人妻| 国产一区二区av综合| 国产成人五月天丁香花| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 小电影欧美91| 亚洲图片在线| 欧美.亚洲.另类.丝袜.制服.诱惑| 亚洲欧洲日本精品中文a∨| 很黄很污的免费网站| 成人性爱免费播放| 老熟女中文字幕高清| 丁香五月婷婷五月| 天天看精品动漫视频一区| 色www精品视频在线观看| 国产97色在线| 另类小说综合网| 99无码| 人妻少妇色综合| 欧美亚洲日本激情在线| 久久性爱视频免费看| 色图四区| 亚洲日韩在线a不卡99精品| 亚洲日韩欧美一区二区| 久久綜合很很很| 亚洲欧洲网站免费观看| 国产操逼逼网| 中国乱伦一区二区| 日韩欧美一级特黄大片| 爽极品影院| 久久岛国| 国产精品不卡一区二区三区av| 清纯唯美综合亚洲| 中文字幕久久精视频久久大全| 国产午夜激片Av毛片不卡| 岛国免费视频在线| 亚洲成人无码影院| 九九久久综合| 大香蕉免费乱伦视频| 久久综合亚洲色1080p| 国产精品爽爽v| 91人妻精华帖| 一级毛片久久久久久久女人18| 秋霞午夜成人福利片片| 极品另类| 欧美性爱日韩性爱| 久久久久9999| 97久久超碰国产网站| 99色综合| 男人天堂2019亚洲| 五月婷婷激情网| 96AV精品| 韩日精品福利视频一区不卡在线免| 好看的久久不射无码影视影院| 亚洲欧洲久久天堂| 九九九九九九成人| 欧美高清在线| 好吊色青靑草| 国产高清视频无码在线| 新婚人妻扶着粗大强行坐下| av天堂5| 久久国产免费激情视频| 国产精品熟女丝袜一区二区| 女同在线视频一区| 国产热av| 理论久久婷婷网8| 天天综合麻豆视频| 久久精品国产97欧美精品亚洲 | 五月综合激情网| 97青娱乐超碰久久| 97超碰资源网| 九九精品网| 成人性爱AV在线免费观看| 天天摸夜夜添无码小视频| 人看人人摸人人操| 日本免费一区二区不卡| 精品欧美老熟女一二区| AA丁香综合激情| 欧美青青视频| 亚洲av噜噜噜噜噜噜| 乱伦图一区| 国产人伦精品一区二区三区| 久操精品| 盗摄 精品 另类 一区| 夜夜国产一区| 欧美Ⅴ性爱| 激情啪啪拍91| 亚洲欧美啪啪| 国产av又色又爽又黄| 人妻久久久久久久久久久久久久久| 天天操天天日青青草超碰av| 欧美日韩另类在线播放| 狠插 制服 自拍| 中文字幕欧美丝袜07资源| 在线视频一区二区传媒| 国产一级αv免费看片| 青青青操| 97超级欧美| 熟女人妻一区二区三区免费看| www.久久最新地址| 91色综合色| 激情五月综合开心五月| 欧美日韩第一页| 人妻丝袜肏逼| 在线观看亚洲专区| 涩涩久久精品| 国产高清在线观看欧美| 精品视频久久区| 国产无马视频| 亚洲精品97| 亚洲欧美大| 草草草草视频| 男人的天堂在线2| 亚洲开心网| 嫩草美女久久| 伊蕉97蜜桃97狠狠综合干| 国产精品操| 麻豆久久视频在线地址| 日韩一级欧美一级国产一级台湾| 亚洲欧美精品一区天堂久久 | 91av一区二区在线观看| av麻豆啪啪| 51一区二区三区| 美国三级日本三级久久99| 啪啪啪精品视频| 国产精彩女在线观看视频| 日本黄色大片一级视频免费麻豆| A一级色女| 欧美成人一区二区三区在线播放| 精品少妇一区二区| 999狠狠综合| 日韩欧美午夜一区二区| 色悠久久久av| 亚洲综合在线视频| 天堂v无码免费视频| 欧美久久毛片基地| 丝袜美腿亚洲| 四虎视频在线观看| 国产女人91精品嗷嗷嗷嗷| 久久男人| 欧美日日网| 乱伦一二三| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 综合亚洲欧美| 无码视频一区二区| 成人看片网站| 狠狠色综合网| 69少妇一区二区| 9ⅰ久久久天天| 任你爽视频| 国产精品久久久久久亚洲色欲| 青青伊人久久| 五月综合色| 国产成人无码a| 视频在线观看青青99国产| 五月丁香| 男人夜色天堂ss| 岛国激情视频在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久九九九九九九九热| 真实高潮91| 亚洲欧美日韩中文播放| 91 国产丝袜在线播放-百度| 欧美中文字幕男人天堂久久精品 | 成人婷婷丁香| 97干在线| 久久激情视频| 秋霞福利网| 嗯啊啊啊轻点视频 | 天天弄天天操| 中字乱伦AV| 91人人| 日韩欧美天堂| 久久综合女优| 打av高清| 91在线限制级| 日日干夜夜操视频h| 国产对白刺激视频| 免费伦费视频在线观看| 精品久久久久久AV无码| 欧美亚洲综合高清在线| 亚洲天堂资源在线| 九九九九九精品视频| 中文在线视频| 俺去啦自拍| 日韩精品一区二区三区四虎影视| 99热日本| 国产精品一区二区黄片| 无码日韩人妻av一| 91狼人| 可以在线观看AV的网站| www久久99| 91精品丝袜久久久久久| 五月丁香激情啪啪| 岛国精品视频在线观看| 亚洲AV成人无码一区二区三区在线观看| 一级做a爰片久久毛片图片| 日韩性爱一级片| 91香蕉国产尤物视频| 清纯唯美综合| 亚洲国产丝袜熟女av| 大香蕉草草| 久久中文字幕人妻熟av女蜜柚| 亚洲人久久久网| 欧美性五月| 中文精品少妇天堂| 九九热av| 四虎国产精品永久入口| 亚洲日本激情| 国产专区第一页| 芊芊操逼视频无码| 超碰人妻在线| 亚洲中文人妻色| 国产又大又粗又长视频在线| 亚洲欧洲第二视频在线观看色图| 在线观看午夜婷婷久久久久清性观看| 色97国产69香蕉| 另类老少妇| 96久久久久久久| 亚洲情欲| 国产精品视频麻豆入口| 97任你吞精| 日本狠狠干| 偷拍 精品 另类 四区| 熟女丝袜视频| 国产一| 不卡视频一区蜜桃视频 | 看看小穴| 69人妻精品一区二区绯色| 久久久一热在线播放| 妇女视频网站| 美女t无毒不卡不卡| 蜜桃久久一区二区| 中日韩熟女| 婷婷五月天激情四射| 丁香五月天婷婷姐| 亚洲色棕合| 日本熟女不卡视频| 97色色婷婷| 五十路熟女工口 | 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 色在线69堂| 国产精品伦理| 国产自产自拍| 少妇内射www在线观看视频 | 亚洲色图超碰在线| 大香蕉日亚洲日本亚大| 亚洲欧洲av影音| 成人三一级一片aaa| 久久黄黄| 国产97色在线 | 亚洲| 久久婷婷电影网| 亚州AV无码国产精品| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 中文字幕文字幕无码一区二区三区电影99| 婷婷爽人人婷婷爽视频| 日本人人操人人操| 麻豆性爱视频在线播放| 久久久久久9| 亚洲乱码尤物193YW| 中文字幕一区 二区三四五 区日 日骚| 天天超级碰碰碰| 亚洲āv网址在线观看| 一区二区三区机械有限公司| 精品少妇人妻| 亚洲制服aⅴ中文字幕| 精品射1999| 九九碰九九爱97超| julia高潮后不停追击中出| 精吧天堂| 日韩av不卡在线观看| 91熟女综合| 美女裸体无遮挡永久免费观看网站| 看一级黄色视频| 天操天操夜操夜月月年年操操| 白丝被操91| 天天操av懂色| 亚洲无码电影久久久| 婷婷精品| 伊人91| 逼操网站| 91欧美美女日韩国产婷婷| 日日超碰亚洲| 欧美日韩人人精品| 蜜乳AV免费观看| 婷婷五月天久久精品视频一区二区三区 | 猛猛干| 婷婷六月天| 国产精品伦理| 中文字幕在线观看AV| 亚洲男人电影天堂| 欧美香蕉视xxx| 亚洲 欧美 日韩 国产一区二区| 日本天天吊| 国产偷人伦激情在线观看| 青娱乐av在线| 另类小说欧美激情校园春色| 激情五月天网| 中文乱码字字幕在线第5页| 你操综合| 色色福利| 精品欧美乱码久| 800zy一区二区| 日韩福利综合一区| 99热国产精品| 加勒比在线视频| 国产精品视频91久久| 综合天天网| 91在线精品| 久久精品熟妇丰满人妻99| 91女网站| 成人网站 免费观看| 一区二区三区四区五区高清无码永久视频 | 婷婷探花久久精品一区| 五月丁香啪啪| 人人艹亚洲| 久操| 亚洲AV免费在线观看| 色综合久久av| 偷拍视频青青草在线视频| 天天摸夜夜摸| 狠狠干,狠狠操| 影音先锋日本一区二区| 亚洲少妇自拍中文字幕懂色| 久草视频制服诱惑| 操屄不卡视频| 综合五月婷婷亚洲一区| 亚洲动态色图| 欧美精品亚洲精品日韩传电影| 欧美性特| 久久久久国产精品喷潮免费观看臀| 青青草AV色| 欧美日韩黄色片一区二区三区四区人与兽做爱| 久久精品国产96精品亚洲拳交| 97亚洲中文| 操淫穴亚洲五月丁香| 免费观看有码高清视频| 天堂中文资源在线bt| 天天综合-91入口| 久久亚州大香蕉| 亚洲淫乱骚妇AV| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 中文字幕在线观看第二页| 国产美女mm131爽爽爽爽| 美女诱惑一区| 成人怡红院| 久欲AV| 少妇天堂网络| 亚洲色人妻综合| 国内精品伊人久久久久影院会| 久久超碰国产一区二区三区| 青青青青青手机视频| 成人黄页| 鸥美精品一区二区久久婷婷| 成人贴图日韩欧美| 狠狠干,狠狠操| 亚洲性爱无码乱伦av| 免费日韩黄片| A级毛片在线看免费| 啊啊啊啊啊好多水| 97欧美精品| 亚洲欧美97| 啊啊啊操死我了| 天堂资源站| 少妇人妻无码| 色拍偷亚洲| 亚洲和欧美裸体美女双飞视频| 国产人伦精品一区二区三区| 亚洲男人的天堂AV| 神马影院午夜福利久久久| 1204金沙人妻懂旧版免费| 欧美狠狠操| 国产福利夜| 色盈盈影院| 九九英色视频| 欧美性生活内射| 少妇色综合| 亚洲国产蜜臀系列在线观看| AV男人天堂网| 性欧美91| 精品亚洲| 国产无码高清操逼视频| 亚洲免费成人精品电影| 国产精品久久久久久久久AV大片| 在线日韩视频| 亚洲无套久久嗯嗯| 夜夜国产一区| 蜜桃视频啊啊啊啊| 91人人操| 一二三四视频中文字幕在线看| 一二三四视频中文字幕在线看| 亚洲伊人a线观看视频| 成人亚欧免费视频| www.激情| 97久久免费| 色悠久久久av| 九九九网站| 99这里只有精品国产| 精品高清一区二区三区三州| 十八禁啪啦拍视频无遮挡| 超碰97欧美在线| 美女诱惑在线一区| 人妻熟女一区二区在线视频| 男女做爰猛烈动高潮A片免费应用| 岛国免费黄色网址| 大香蕉九九| 欧美最婬乱婬爆婬性视频| 欧美日韩精品国产91| 蜜桃网熟妇| 操国产逼| 国产精品免费视频不卡| 亚洲色图加勒比| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 欧美日韩国产人人| 思思热一热婷婷热一热| 亚洲97成人在线观看| 成人免费福利在线观看| 麻豆视频test| 久久久精品,3| 日本成人电影资源网| 69精品少妇一区二区三区蜜桃| 欧美精品双插| 欧美裸体美女日麻屄| 99re公开精品免费视频| 国产人伦精品一区二区三区| 久久成人东京热人妻| 日本成熟少妇A∨网站| 动漫爆乳3D奶水一区在线观看| 中文字幕在在线观看网站| 中文字幕一二三av| 日本午夜操逼| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲最大的黄色电影网站。| 丰满人妻-区二区三区免费看| 日韩av不卡在线看| 天天综合网久久ww| 蜜臀久久99精品久久久久| 一区三区啪啪| 91青青在线视频| 免费av在线播放二区| 国产女人高潮视频| 一区二区三区高清| 天天操综合网| 美欧色综合| AV综合中文字幕干| 九九久精品| 亚洲日韩美女中文字幕乱| 色婷婷蜜臀av| 久久草草亚洲蜜桃臀| 欧美久久草熟女| 91bbbbbb| 俺去也婷婷| 超碰色图| 一区二区激情国产熟女| 色九久| 丁香五月激情综合| 无码78| 999在线电影香蕉| 欧美综合亚洲综合| 青青11操操操操操操操操| 欧美96精品在线| 久久秀这里有精品| 欧美gv在线观看| 国产SV一线| 日韩av色图综合| 性色av婷婷久久一区二区点复制| 亚洲精品国产av天美传媒| 强奸乱伦免费网站| 蜜臀亚洲综合一二三四区| heyZO天然素人无码AⅤ专区| 激情综合av| 亚洲国产精品有声| 91亚洲黄色网| 中文字幕艹艹| 天天草夜夜草高潮片| 激情五月天校园春色网| 操逼操操操91| 久久婷婷电影网| 国产91精品久久久久久久网曝门| 干干干天天| 99热欧美| 大香蕉十区| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 色欧美亚洲| 麻豆婷婷成人一二三| 天天日天天搞天天干| 欧美91色| 好淫网一二三视区| 福利操逼| 久久久96| 尤物视频网 刘玥| 狠狠综合网| 日本高清视频xxxx| 久久粉色| 夜夜 中文视频rt| 五月综合色| 大香蕉视频一二三区| 激情四射婷婷六月天| 人妻激情另类| aaaa黄片| 国产精品久久久久久久电影渣男| 亚洲中文字幕av| 青青色综合| 亚洲色诱惑| 亚洲欧洲无码bt精品合集| 免费男人的天堂| 人妻精品4K4K4K4K4| 操我无码| 美国黄片aaa| 国产精品久久久亚洲第一牛牛_在线观看| 九九精品美女高溯喷水 | 久久风骚城市| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 淫乱图区 | 少好三P| 99re不伦| 超碰调教97| 激情干在线| 懂色中文一区二区三区| 91天天综合日韩欧美| 啊啊啊啊啊舒服| 啊啊啊快操我视频| 久久久久久久少妇| 91一区二区| 天天草天天干天天日| 一本色道久久天天射天天干| 色欲天天综合久久久无码网中文| 亚洲成人AB| 亚洲日韩XXX| 亚洲大色堂| 天天干天天日天天射黄色| 九久9精品| 男人的天堂一区三区| 日韩免费大片一级播放| 亚洲阿v天堂无码z2018| 亚洲人体视频在线观看| 中英熟女操女| 五月亭亭六月丁香| 3PAV乱伦视频| 国产高清成人免费视频| 成人怡红院| 久久久久久久9| 色五月av| 男人午夜天堂| 91无码西班牙视频在线| 免费观看日本操逼视频| 视频一区二区免费在线| 国产一级舔足在线观看| 在线a亚洲视频播放在线| 日韩欧美亚洲自拍偷拍| 翔田千里爆乳巨臀无码| 无码直播久久久| 中文字幕日韩电影人妻| 一级片在线观看高清无码| 操www| 久久直播国产| 婷婷深爱五月| 裸体美女免费看网站青草| 97超碰jingpin| 99999久久久久9国产精品| 久久久啊啊| 国产综合久久久鬼色| 欧美日韩亚洲五月天婷婷| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 欧美黑人91| 精品美女少妇一区二区| 蜜臀久久99精品久久久久久无删减| 日本一区二区亚洲综合| 人妻中文字幕精品无码| 欧美中出1| 亚洲精品视频二区| 香蕉久久精品| 亚洲天堂一二| TS人妖另类精品视频系列| 久久受www免费人成| 久热香蕉精品在线视频| 五月天激情小说网| 人人澡综合涩| 精品无av| 国产人妖的免费的视频| 亚洲精品美女久久久久久久久| 综合影院亚洲| 亚洲色图第一页| 欧美成人性活片| 淫荡熟女乱伦网| 天天影视网综合少妇| 9长久久精品| 亚洲资源站| 91社区拍啪人妻| 一色网男人的天堂| 骚逼自拍99| 国产女同在线观看视频| 久久一区二区三区入口| 一区二区三区男女操逼黄色小电影| 亚洲文学偷乱拍啪啪啪啪| 97超碰欧美中文字幕| 欧美大香蕉同搞| 花野真衣| 亚洲图片 欧美电影| 亚洲精品一区二区精品| 亚洲日本成人动漫| 欧美后入式| 精品国产乱码| 亚洲精品久久久久久久久豆丁网| 天欧美在线| 中国AV美女| 又黄又爽在线观看视频| 欧美激情一| 亚洲国产精品有声| 九一综合精品视品av| 欧美碰碰综合色| 91操人| 欧美激情色婷婷花野真衣一区二区| 青青青青青手机视频| 成人午夜小视频手机在线看| 久久av网| 边做饭边操逼逼| 国产伦精品一区二区三区视频女| 人妻丰满熟妇av无码区蜜桃| 久久社区一区二区三区| 超碰人妻中文在线| 大屁股人妻女教师撅着屁股| 久久大香蕉手机高清| 天堂性色| 五月天色综合| 另类小说欧美激情校园春色| 国产精品久久久鸭无码的功能| 亚洲综合射| 亚洲无码免费看| 日日噜噜夜夜久久亚洲一区二区 | 人妻熟女av国产网站| 91美女看B| 国产精品亚洲一级av第二区| 884t在线| 一本大道不卡一二三区| 97精品国产手机| 中文字幕亚洲永久精品| 在线情色电影 91大 | 999狠狠综合| 久久久久久97| 蜜臀亚洲中文| 欧美区亚洲区偷拍区| 狠狠操一区二区| 无码精品久久| WWW.加勒比人妻一区不卡.com| 国产无码高清操逼视频| 亚洲十八禁止| 日本中文字幕在线电影| 大香蕉淫人| 一区二区三区网站日日骚| 免费精品国偷自产在线在线| 91黑丝美女| 欧美黄片欧美黄片xxx| 人妻丰满熟妇av无码区蜜桃| 999久久久精品国产| 亚洲av噜噜噜噜噜噜| 欧美精品第四五页中文字幕在线观看| 最新国内自拍av免费| 亚州欧美总和| 激情深爱五月天| 欧美性xxxxx狂欢| 日本五十路在线| av资源在线播放天堂| 羞涩视频| 超碰97首页| 久热99| 91大神精品长腿在线观看网站| 日韩天天本| 激情深爱五月天| 久久精品国产AV一区二区三区| 精品美女人人干| 中文字幕日韩综合| 日本狂喷奶水在线播放212| 婷婷五月天色网| 人人妻人人操人人乐| 日逼视频日本| 极品色综合| 四虎免费看黄| 六月激情网| 很黄很色的视频在线观看| 综合网亚洲在线| 久久只有精品一区二区三区| 久久亚洲精品成人av| 国产无码成人无码| 亚洲欧美变态| 久久久网一区| 大稥蕉免费视频这里只有精品| 丰满人妻无码一区二区三区| 97亚洲在线| 国产后入清纯| 大香蕉伊人在线成人AV在线观看| 色色激情| AV污污污污| 蜜臀一区二区三区在线| 亚洲清纯综合| 91影视亚洲| 中美日韩毛片| www.91色综合| 久久久久婷婷| 中文字幕123| 国产强奸乱伦xd| 97日韩| 啊啊啊 在线| 91丝袜在线视频| 内射中出日韩在线观看视频| 色婷婷电影网| 久久精品三级影视| 日韩一级成人毛片免费观看| 人人做天天爱| 自拍偷拍 日韩欧美| 日本色日夜干| BBBBB97COM| 99精品九九九九九九| 国产精彩女在线观看视频| 屌妞视频久久久久久久久久久久| 蜜臀av一区二区三区免费观看| 久草福利在线资源站| 岛国黄| 国产乱色国产精品免费视| AAAA欧美日韩| 99人妻碰碰碰久久久久禁片| 亚洲综合91| 国产又黄又爽| 天天操夜夜操| 亚洲无线观看久久| 中文字幕丰满子伦无码专区在线视频最新| 台湾佬大香蕉| 久久久久久久久久9| 色香欲综合| 欧美亚洲综合高清在线| 精品78| 91精品人| 午夜人人操| 黄色片一区二区三区四区五区| 久久久久久国产成人| 999精品国产高清一区二区| 伊人黄色片| 精品一区二区成人| 国产高清无码一区二区三区四区皇冠| 在线性黄高清免费视频| 亚卅熟女乱色| 天天干天天做| 热天堂一区二区| 少妇人妻无码| 日本黄色天堂| 亚洲欧美在线丝袜| 亚洲成a人v欧美综合天堂下载| 国产一区二区三区高清视频| 久综合国内精品自在自线| 亚洲一区二区三区中文字幕| 国产精品自在自拍视频| 国产亚洲99久久精品| 混色激情av| 久日91在线| 2020中文字幕在线| 亚洲资源站| 九九精品无码专区免费| 白嫩国模丰满一二三区| 91N欧美| 男生女生啊啊啊啊| 欧美黑人日韩少妇色情| 欧美激情综合网| 欧美日韩电影成人在线| 男男H黄动漫啪啪无遮挡网站| 婷婷激情综合网| 久久国产精品,久久国产| 人妻天天爽| 超碰97亚洲| 东北丰满熟女国产一区| 激情AV| 艳尻美人妻| 就去色综合| 美女视频尤物网在线看| 91性高潮久久久久久久久| 精品夜夜澡人妻无码| 老熟妇一区二区三区啪啪| 欧美欧美少妇| 天天干人人干天天日97| 天天舔天天| 试看60秒| 影音先锋每日最新资源在线观看| 在线v中文字幕一区二区三区 | 亚洲色图欧美色18直播在线| jazzjazz国产精品麻豆| 色狠狠综合| 欧美 亚洲 另类 综合| 中文字幕第2页| 日韩激情啪啪| 伦在线97| 国产精品久久久久久亚洲色欲| 天美麻花大全视频| 啊啊啊好大好湿| 亚洲国产精品无码AV久久| 国产小u女在线观看| 亚洲激情色片| 秋霞怕怕片| 色播丁香| 欧美桃色网| 3d成人精品一区二区| 大香蕉十区| 日本综合色图| 婷婷色在线| 久久华人网| 欧美亚洲尤物久久| 超碰中文字幕人妻草一区| 91亚洲欧洲| 九九热精品视频在线观看| 91 国产丝袜在线播放-百度| 操逼视频色| 亚洲色图a| 日韩无码一级黄色av片| 欧美亚洲玖玖玖| 国产欧美另类久久久精品课程| 欧美黑人精品一区二区| 超碰午夜| 免费观看的黄色的网站| 99久热精品99re6热| 成人一道本免费视频| 日韩AV中文字幕电影| 国产精品com| 尻女朋友一夜| 久久狠狠色噜噜狠狠狠狠97| 96AV精品| 蜜臀一区二区三区在线| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 亚洲男人的天堂在线看| 日韩性爱视频在线免费观看| 美女AV一区二区| 婷婷丁香九月| www.男人天堂| 午夜理论片在线观看免费| 成人久久久精品| 911粉嫩人妻| 欧美综合亚洲| www.狠狠操| 久久国产乱子伦精品免费女,网站| 国产精品色色| 久久天堂| 伊人国产视频| 日韩精品中文字幕一 | 97色色婷婷| 99在线精品视频| 97干在线看| 老司机天天操| 亚洲se电影| 大香蕉av在线| 国产黄色剧情影片麻豆免费播放| 天天综合有色网| 一级黄色性爱A级片| 超碰偷拍| 97精品国产97久久久久久免费| 欧美极品美女aaaaaa级黄片| 成人热久久精品| 亚洲熟女中文字幕在线| 欧美黑人熟妇精品91| 少妇同性| 成年人一级黄色毛片大全在线观看| 大香蕉性欧美| 亚洲熟女乱色| 亚洲砖码砖专无区2023| 欧美乱欲| 97碰碰日本乱偷人妻中文的| 国产一区二区啪啪视频| 中文字幕丰满子伦无码专区在线视频最新 | 偷拍网站久久男女男| 欧美日韩国产另类综合| 在线观看啊啊啊啊啊| 大鸡吧尹人在线| 一区二区三区四区免费视频| 久9无限国产| 九九九九免费高| 日本三级大片| 国产一区在线观看无码AV| 97在线视频免费看| laoshunv91| 91美女中出| 久久久久久久国产视频| 一区二区三区不卡视频| 欧美色图人妻| 九一屌逼| 婷婷综合视频| 久久精品店| 亚洲国产精品久久AV| 2003天天干夜夜操| 超碰97男人| 丰满人妻一区二区三区| 加勒比在线视频一区二区三区| 少妇久久久| 91色欧美| 日韩三级性| 日韩少妇丰满亚洲| 亚洲中文字幕97久久精品少妇| 3d成人精品一区二区| 亚洲无码视频免费在线观看网址! J?P?NESEHD熟女熟妇伦 | 自拍第一页| 麻豆伊人网| 日韩伦理久 久久 清纯| 五月丁香综合啪啪| 操逼操网| 一起草日韩| 人妻一区二区三区视频| 青草成人免费视频一com| 四虎精品亚洲| 欧美激情亚洲情色| 激情视频一二三| 麻豆AV96熟妇人妻| 麻豆AV一区二区| 亚洲nv男人的天堂网| 日韩去日本高清在| 国产精品婬乱一级毛片彝族| a片偷拍视频| 97精品国产| 亚洲欧美情色| 欧美综合第一页| 久操国产在线| 欧美综合天堂| 91熟女丨老女人| 国产激情在线| 亚洲一区二区av| 国产一二三福利视频网| 91天堂丝袜美腿| 男人的天堂三级| 国内精品久9| 后入合集| 天天久久| 亚洲欧美日韩偷拍色图| 欧美综合天天| 日韩欧无码一区二区三区免费不卡| 久久久久久久97| 久久久精品| 日本精品一级二级三级| 91精品无码久久久久久久| 久久精品国产亚洲AV先锋| 绯色一区二区三区不卡少妇| 欧美日韩国产一区二区小黄片大全| 凹凸视频在线一区二区| 亚洲天堂五月天国产| 亚洲无无码αⅴ每日更新| 大香蕉一区二区在线观看.| 日韩精品在线观看观看| 日本Xx性爱| 立川理惠无码一区二区| 成人短视频在线观看| 狠狠 91| 99re9这里只有精品| 九九国产| 国产精品另类| 蜜臀中文字幕| 欧美性爱免费短视频| 久久久国产亚洲精品系列| 干婷婷综合网| 99re视频在线观看这里只有精品| 情色日播放AV| 老鸭窝黄色视频网站| 超碰偷拍| 国产色图乱伦| 国产91啪| 少妇超碰在线| 欧美无圣光在线| 久艹99| 欧美后入| 综合操逼| 午夜人妻精品综合在线| 午夜精品久久久99| 亚洲欧美天| 一本色道综合久久欧美| 国产家庭乱伦网址| 久久熟女人| 中文在线视频| 蜜臀久久99精品久久久| 国产精品69人妻无码久久久| 丁香五月激情五月| 9久精品视频在线观看| 久久在肏| 黄色电影观看久久9| julia高潮后不停追击中出| 啊啊啊快操我视频| 超碰色97| 男女激情黄色网址| JULIA人妻风俗店中出电影| 男女香蕉一区二区| 一本色道无码DVD中文字幕| WWW黄片COM| 热热热热日日漂亮永久永久国产日| 欧美综合色,www| 久久一区二区高清免费| 亚洲有薄码区日本系列中文字幕| 日本黄页视频在线观看| 精品免费视频国产一区| 偷窥自拍亚洲天堂网爆| 欧美视频激情久久久久久| 中文字幕一区二区三区50路| 性做久久久久久久| 91在线色| 91处女在线观看| www.色综合| Julia Annxxxxx| 亚洲色图尤物视频| 热天堂一区二区| 超碰人妻久久| 国产欧美一区激情交| 亚洲的天堂网| 久久透逼视频| 日本一区二区电影网站| 国产精品农村妇女| 色欲久久综合| 久久9精品网站| 狠狠色狠狠色狠狠五月| 99精品网站| 最新亚洲黄色免费电影| 九九热精品| 欧色网址| 一级黄色影片| 超碰吊日色| 91九色首页| 亚洲天堂另类| 日本三级韩三级99久久| 九九热午夜欧亚国产视频| 美女尤物人人操| 色网综合网| 亚洲最新av无码成人精品区| 日本999精品视频| 亚洲97成人在线观看| 大香蕉伊人亚洲| 久久久少妇| 国产亚洲 中文欧美久久| 亚洲综合在线第一页| 久久草草欧美精品| 蜜臀久久99精品久久久久久-DVD| 加勒比大香蕉视频在线| 国产路线专区| 天天影视综合网欧美精品| 97爱亚洲| 啊嗯好大视频在线观看| 国产成人91一区二区三区| 成 人 影视 一区 二区 三区 四区| 亚洲国产综合图区中文字幕| 欧美九九爱| 欧美 精品国产制服第一页| 欧美图片色综合| 为用户提供免费看黄网址在线观看| 久久精9| 色嗨嗨在线| 91精品久久久久久| 密桃99999| 天天上日日上日韩精品| 色色99| 思思热影视| 欧美在线亚洲| 天天综合AV| 无码外流操逼视频| 国产熟女自拍| 日本三级中国三级99人妇网站| 亚洲色婷婷久久久综合日本| 久久九七| 女人双腿搬开让男人桶| 欧美日韩狠狠爱| 综精品久久久aaaa| 亚洲无码免费看| 日本三级精品| 五月天伊人| 国产激情在线| 九九九九精品九九九九| 欧美亚洲美少妇一区二区| 天天精品| 亚洲?V高清一区二区三区尤物| 国产丰满少妇久久久精品影院| 在线性黄高清免费视频| 极品色| 97超色| 久操99| 午夜福利视频在线一区| 清纯唯美亚洲综合| 加勒比五月天| 日韩pv中文| 亚洲 国产 精品一区| 好吊色综合| 麻豆黄站| 欧美成人亚洲精品| 欧美顶级黄片AAAAA在线免费看| 亚洲91在线| 中文字幕精品专区搜索结果91| 超碰人人乐97| 日本一本道A级黄色毛片试看60分钟| 色五月婷婷五月天| 九九九九九九精品| 亚洲乱色视频一区、二区在线| 91天堂色男人的天堂| 精品九九| 久久天堂网| 91欧美美女日韩国产婷婷| 日本一级一级一级一级| 操逼免费视频无码国产| 成人怡红院| 骚妻少妇精品性色无码四色A V| 色女综合| 920日本午夜免费| 国产AV无码AV| 国产午夜福利电影免费在线观看 | 日本人人操人人操| 国产精品久久久久久久电影渣男| 亚洲 欧美 第一页| 久久久久久久综合,国产| 少妇69中文| 性色avv| 色播五月丁香| av婷婷色婷婷色六月| 久操网无码在线| 无码人妻一区二区三区色欲aⅴ| 好吊色青靑草| 欧美综合综合| 久久久久久中文| 美女91av| 久草男人天堂| 75大香蕉| 欧美超碰96| 人人操天天爽| 骚乳在线| 久久国产精品91| 五月天婷婷欧美三区| 九九99精品| 九热视频| 无码日韩网站| 亚欧高清在线| 日韩av在线播放不卡| 日美免费黄片| 女人喷水视频在线观看| 岛国视频一二三区| 99精品欧美一区二区三区桃色| 国产精品露脸在线观看| 亚洲乱色熟女一区| 热无码中文亚洲H一道本一区二区| aaa亚无码专区| 国产精品不卡av免费在线观看| 一区二区中文| 岛国黄片网站| 一级日本牲交大片好爽在线看| WWW操逼| 日韩乱伦AⅤ| 狠狠操夜夜| 乱欲一区二区| 精品久久人妻成人网| 亚洲精品视频在线播放| 久久怡红院| 人妻夜夜爽天天爽麻豆三区网站|