日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

安卓9.0Sensor框架

發布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓9.0Sensor框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本來如果只是給傳感器寫個驅動并提供能讀取溫濕度數據的節點,是一件比較輕松的事情,但是最近上層應用的同事要求我們按照安卓標準的流程來,這樣他們就能通過注冊一個服務直接讀取傳感器事件數據了。這樣做的好處就是第三方的應用也能正常讀取溫濕度的數據并展示。

正文

網上分析安卓9.0 sensor相關的資料不多,下面找到了一位大神對安卓9.0整個sensor框架總結的流程圖:

雖然流程比較粗糙,但是也有助于我們跟蹤代碼。這里重點說一下,sensor架構中的HAL層分為兩部分:

  • (1)安卓官方實現部分

hardware/libhardware/modules/sensors

  • (2)芯片產商實現部分(MTK平臺)

vendor/mediatek/proprietary/hardware/sensor

一般來講,在適配一款新的sensor,改動只會涉及vendor層到kernel層,再往上都是安卓標準的,但是為了了解整個流程怎么走的,參考這位大神的博客,在這里我也稍微介紹一下framework層的部分。

代碼路徑:

frameworks\base\services\java\com\android\server\SystemServer.java

private?void?startBootstrapServices()?{...mSensorServiceStart?=?SystemServerInitThreadPool.get().submit(()?->?{TimingsTraceLog?traceLog?=?new?TimingsTraceLog(SYSTEM_SERVER_TIMING_ASYNC_TAG,?Trace.TRACE_TAG_SYSTEM_SERVER);traceLog.traceBegin(START_SENSOR_SERVICE);startSensorService();?/*?調用JNI接口?*/traceLog.traceEnd();},?START_SENSOR_SERVICE);... }

system_server啟動之后會通過JNI接口啟動sensorService。

代碼路徑:

frameworks\base\services\core\jni\com_android_server_SystemServer.cpp

static?void?android_server_SystemServer_startSensorService(JNIEnv*?/*?env?*/,?jobject?/*?clazz?*/)?{char?propBuf[PROPERTY_VALUE_MAX];property_get("system_init.startsensorservice",?propBuf,?"1");if?(strcmp(propBuf,?"1")?==?0)?{SensorService::instantiate();}}/**?JNI?registration.*/static?const?JNINativeMethod?gMethods[]?=?{/*?name,?signature,?funcPtr?*/{?"startSensorService",?"()V",?(void*)?android_server_SystemServer_startSensorService?},{?"startHidlServices",?"()V",?(void*)?android_server_SystemServer_startHidlServices?},};

從上面可以發現,最后調用到

android_server_SystemServer_startSensorService

函數,里面會判斷屬性

system_init.startsensorservice

是否為1,然后才會真正去啟動

SensorService

服務。所以這里涉及到第一個改動,設置

system_init.startsensorservice

屬性,這里我是直接在

build/make/tools/buildinfo.sh

里面寫死為1。

用SensorService::instantiate()方式創建的sensorservice實例后,調用里面的SensorService::onFirstRef方法。

代碼路徑:

frameworks\native\services\sensorservice\SensorService.cpp

void?SensorService::onFirstRef()?{ALOGD("nuSensorService?starting...");SensorDevice&?dev(SensorDevice::getInstance());?/*?創建并獲取SensorDevice實例?*/...if?(dev.initCheck()?==?NO_ERROR)?{sensor_t?const*?list;ssize_t?count?=?dev.getSensorList(&list);?/*?通過SensorDevice,并調用到vendor層去獲取sensor的數目?*/if?(count?>?0)?{ssize_t?orientationIndex?=?-1;bool?hasGyro?=?false,?hasAccel?=?false,?hasMag?=?false;uint32_t?virtualSensorsNeeds?=(1<<SENSOR_TYPE_GRAVITY)?|(1<<SENSOR_TYPE_LINEAR_ACCELERATION)?|(1<<SENSOR_TYPE_ROTATION_VECTOR)?|(1<<SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR)?|(1<<SENSOR_TYPE_GAME_ROTATION_VECTOR);for?(ssize_t?i=0?;?i<count?;?i++)?{bool?useThisSensor=true;switch?(list[i].type)?{case?SENSOR_TYPE_ACCELEROMETER:hasAccel?=?true;break;case?SENSOR_TYPE_MAGNETIC_FIELD:hasMag?=?true;break;case?SENSOR_TYPE_ORIENTATION:orientationIndex?=?i;break;case?SENSOR_TYPE_GYROSCOPE:case?SENSOR_TYPE_GYROSCOPE_UNCALIBRATED:hasGyro?=?true;break;case?SENSOR_TYPE_GRAVITY:case?SENSOR_TYPE_LINEAR_ACCELERATION:case?SENSOR_TYPE_ROTATION_VECTOR:case?SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR:case?SENSOR_TYPE_GAME_ROTATION_VECTOR:if?(IGNORE_HARDWARE_FUSION)?{useThisSensor?=?false;}?else?{virtualSensorsNeeds?&=?~(1<<list[i].type);}break;}if?(useThisSensor)?{registerSensor(?new?HardwareSensor(list[i])?);}}//?it's?safe?to?instantiate?the?SensorFusion?object?here//?(it?wants?to?be?instantiated?after?h/w?sensors?have?been//?registered)SensorFusion::getInstance();if?(hasGyro?&&?hasAccel?&&?hasMag)?{...}if?(hasAccel?&&?hasGyro)?{...}if?(hasAccel?&&?hasMag)?{...}...}} }

我這次主要是增加溫濕度傳感器的功能,上面的流程中沒有過多涉及溫濕度的,有興趣的可以參考大神的博客自行分析。不過這里重點關注一下SensorDevice這個類,它是連接上層應用和HAL層的中間樞紐:

代碼路徑:

frameworks\native\services\sensorservice\SensorDevice.cpp

SensorDevice::SensorDevice():?mHidlTransportErrors(20),?mRestartWaiter(new?HidlServiceRegistrationWaiter())?{if?(!connectHidlService())?{return;}float?minPowerMa?=?0.001;?//?1?microAmpcheckReturn(mSensors->getSensorsList([&](const?auto?&list?"&")?{const?size_t?count?=?list.size();mActivationCount.setCapacity(count);Info?model;for?(size_t?i=0?;?i?<?count;?i++)?{sensor_t?sensor;convertToSensor(list[i],?&sensor);//?Sanity?check?and?clamp?power?if?it?is?0?(or?close)if?(sensor.power?<?minPowerMa)?{ALOGE("Reported?power?%f?not?deemed?sane,?clamping?to?%f",sensor.power,?minPowerMa);sensor.power?=?minPowerMa;}mSensorList.push_back(sensor);mActivationCount.add(list[i].sensorHandle,?model);checkReturn(mSensors->activate(list[i].sensorHandle,?0?/*?enabled?*/));}}));mIsDirectReportSupported?=(checkReturn(mSensors->unregisterDirectChannel(-1))?!=?Result::INVALID_OPERATION); }

SensorDevice構造函數中,通過調用connectHidlService()和安卓部分的HAL層服務建立連接。連接后,就可以調用已經在HAL層注冊的sensor設備了,比如這里就調用getSensorsList()來獲取sensor設備列表,并放回sensor的數目。然后就是通過mSensors->activate()來“激活”sensor設備,而每個sensor具體的activate()函數由驅動工程師實現。

激活sensor設備后,就可以開始獲取sensor的數據了,在SensorService中會通過poll機制去查詢底層sensor的數據:

代碼路徑:

frameworks\native\services\sensorservice\SensorService.cpp

bool?SensorService::threadLoop()?{...SensorDevice&?device(SensorDevice::getInstance());const?int?halVersion?=?device.getHalDeviceVersion();do?{ssize_t?count?=?device.poll(mSensorEventBuffer,?numEventMax);if?(count?<?0)?{ALOGE("sensor?poll?failed?(%s)",?strerror(-count));break;}...}?while?(!Thread::exitPending());ALOGW("Exiting?SensorService::threadLoop?=>?aborting...");abort();return?false; }

整個threadLoop函數里面內容挺多的,但是目前只關注讀取數據的poll部分。可以看到device就是SensorDevice的一個實例,前面我們講到上層都是通過SensorDevice和HAL層連接,這里也不例外,也是調用到了SensorDevice中的poll函數,這里我給出這個調用的流程:

1、frameworks\native\services\sensorservice\SensorDevice.cpp SensorDevice::poll()2、vendor\mediatek\proprietary\hardware\sensor\sensors-1.0\sensors.cpppoll__poll()3、vendor\mediatek\proprietary\hardware\sensor\sensors-1.0\SensorManager.cppSensorManager::pollEvent()4、vendor\mediatek\proprietary\hardware\sensor\sensors-1.0\SensorContext.cppsensors_poll_context_t::pollEvent

上面簡陋的流程展示了從framework層一路調用到vendor層:

int?sensors_poll_context_t::pollEvent(sensors_event_t*?data,?int?count)?{int?nbEvents?=?0;int?n?=?0;int?averageCount?=?0,?loop?=?0,?loopcount?=?0;int?backupcount?=?count,?backuploop?=?0;do?{loopcount++;computeCountForEachFd(count,?&averageCount,?&loop);backuploop?=?loop;for?(int?i?=?0;?count?&&?loop?&&?i?<?numFds;?i++)?{SensorBase*?const?sensor(mSensors[i]);if?(mPollFds[i].revents?&?POLLIN?||?sensor->pendingEvent())?{int?nb?=?sensor->readEvents(data,?averageCount);...}}//?try?to?see?if?we?can?get?some?events?immediately?or?just?wait?if//?we?don't?have?anything?to?return,?important?to?update?fd?revents//?which?sensor?data?pending?in?buffer?and?aviod?one?sensor?always//?occupy?poll?bandwidth.n?=?TEMP_FAILURE_RETRY(poll(mPollFds,?numFds,?nbEvents???0?:?-1));if?(n?<?0)?{ALOGE("poll()?failed?(%s)",?strerror(errno));return?-errno;}}?while?(n?&&?count);return?nbEvents; }

這里面我們重點關注三點 (1) mPollFds的定義如下:

struct?pollfd?mPollFds[numFds];

其中,

struct?pollfd?{int?fd;????????/*?文件描述符?*/short?events;?/*?等待的事件?*/short?revents;?/*?實際發生了的事件?*/ };

所以mPollFds就是用來監聽代表每個sensor是否有數據上報的文件描述符

enum?{accel,magnetic,gyro,light,proximity,pressure,humidity,temperature,stepcounter,pedometer,activity,situation,scpfusion,apfusion,bio,wakeupset,numFds, };

如果想自定義一種sensor就需要給這個枚舉類型增加值。

(2) mSensors的定義如下:

SensorBase*?mSensors[numFds];

SensorBase是一個基類,所有的sensor類都繼承于它,比如我這次實現的濕度傳感器:

class?HumiditySensor?:?public?SensorBase?{private:int?mEnabled;sensors_event_t?mPendingEvent;SensorEventCircularReader?mSensorReader;int64_t?mEnabledTime;char?input_sysfs_path[PATH_MAX];int?input_sysfs_path_len;int?mDataDiv;int64_t?m_hmdy_last_ts?=?0;int64_t?m_hmdy_delay?=?0;void?processEvent(struct?sensor_event?const?*event);public:HumiditySensor();virtual?~HumiditySensor();virtual?int?readEvents(sensors_event_t*?data,?int?count);virtual?int?setDelay(int32_t?handle,?int64_t?ns);virtual?int?enable(int32_t?handle,?int?enabled);virtual?int?batch(int?handle,?int?flags,?int64_t?samplingPeriodNs,?int64_t?maxBatchReportLatencyNs);virtual?int?flush(int?handle);virtual?int?getFd()?{return?mSensorReader.getReadFd();}; };

從類的聲明來看,定義了很多函數,比如readEvents、enable和batch等等,這些最終都會和底層驅動聯系起來,后面再細說。

(3)在sensors_poll_context_t的構造函數中會對上面兩點講到的數組進行初始化:

sensors_poll_context_t::sensors_poll_context_t() {...mSensors[humidity]?=?new?HumiditySensor();?/*?分配一個Humidity傳感器的類?*/mPollFds[humidity].fd?=?mSensors[humidity]->getFd();?/*?獲取對應sensor的字符描述符?*/mPollFds[humidity].events?=?POLLIN;?/*?等待POLLIN類型的事件?*/mPollFds[humidity].revents?=?0;... }

再回到上面的

sensors_poll_context_t::pollEvent()

函數,通過

mPollFds[i].revents

判斷到如果發生了POLLIN事件,證明可以獲取數據了,就調用對應sensor的readEvents()

函數去獲取。接下來我們就進入到sensor設備對應的HAL層里面了,現在以濕度sensor為例:

代碼路徑:

vendor\mediatek\proprietary\hardware\sensor\sensors-1.0\Humidity.cpp

int?HumiditySensor::readEvents(sensors_event_t*?data,?int?count)?{if?(count?<?1)return?-EINVAL;ssize_t?n?=?mSensorReader.fill();if?(n?<?0)return?n;int?numEventReceived?=?0;struct?sensor_event?const*?event;while?(count?&&?mSensorReader.readEvent(&event))?{processEvent(event);if?(event->flush_action?<=?FLUSH_ACTION)?{...}mSensorReader.next();}return?numEventReceived;}

我們可以看到讀取數據實際又是統一通過

SensorEventCircularReader

這個類來操作:

代碼路徑:

vendor\mediatek\proprietary\hardware\sensor\sensors-1.0\SensorEventReader.cpp

SensorEventCircularReader::SensorEventCircularReader(size_t?numEvents):?mBuffer(new?struct?sensor_event[numEvents?*?2]),mBufferEnd(mBuffer?+?numEvents),mHead(mBuffer),mCurr(mBuffer),mFreeSpace(numEvents)?{mReadFd?=?-1;mWriteFd?=?-1; }

構造函數里面分配了Buffer來存儲接收的數據

ssize_t?SensorEventCircularReader::fill()?{size_t?numEventsRead?=?0;if?(mFreeSpace)?{const?ssize_t?nread?=?TEMP_FAILURE_RETRY(read(mReadFd,?mHead,?mFreeSpace?*?sizeof(struct?sensor_event)));if?(nread?<?0?||?nread?%?sizeof(struct?sensor_event))?{return?0;}...}return?numEventsRead;}

fill顧名思義就是往分配的buffer里面填充數據,通過我們熟悉的read()函數來獲取數據。

ssize_t?SensorEventCircularReader::readEvent(struct?sensor_event?const**?events)?{*events?=?mCurr;ssize_t?available?=?(mBufferEnd?-?mBuffer)?-?mFreeSpace;return?available???1?:?0; }

readEvent()

只是判斷buffer中是否有數據,然后就是調用

mSensorReader.next()

獲取下一個buffer。再回到

HumiditySensor::readEvents()

在讀取到數據后會調用

processEvent()

去處理數據:

void?HumiditySensor::processEvent(struct?sensor_event?const?*event)?{mPendingEvent.relative_humidity?=?(float)?event->word[0]?/?mDataDiv; }

mPendingEvent.relative_humidity就是最終上報給上層應用的值了。

結語

至此,framework層到vendor層的流程就分析完了,后面我們會分析kernel層的sensor框架。

參考鏈接

https://blog.csdn.net/goodnight1994/article/details/97503586

推薦閱讀:

專輯|Linux文章匯總

專輯|程序人生

專輯|C語言

嵌入式Linux

微信掃描二維碼,關注我的公眾號

總結

以上是生活随笔為你收集整理的安卓9.0Sensor框架的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产你懂的在线 | 99久久精品久久久久久动态片 | 久久久久国产一区二区 | 国产精品久久久久婷婷二区次 | 国产成人免费av电影 | av性在线| 五月婷婷综合久久 | 视频一区在线免费观看 | 欧美精品在线免费 | 国产成人精品女人久久久 | 国产尤物视频在线 | 亚洲视频播放 | 亚洲精品合集 | 天天操天天操天天操 | 天天激情综合网 | 欧美日韩高清在线观看 | 国产一级在线播放 | 成年人在线观看网站 | 97av精品 | 男女拍拍免费视频 | 在线观看福利网站 | 亚洲 中文 欧美 日韩vr 在线 | 97国产大学生情侣白嫩酒店 | 久久精品视频国产 | 久久精品女人毛片国产 | 西西4444www大胆视频 | www亚洲精品 | 久久婷婷久久 | 丝袜美女视频网站 | 97视频在线观看免费 | 伊人婷婷综合 | 夜夜嗨av色一区二区不卡 | 视频在线观看91 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 精品国产久 | 91毛片在线观看 | 亚洲mv大片欧洲mv大片免费 | 狠狠五月婷婷 | 中文字幕在线观看三区 | 国产精品99免费看 | 亚洲日本色| 波多野结衣亚洲一区二区 | 在线观看黄污 | 狠狠亚洲 | 亚州精品视频 | 国产精品18久久久久久久久 | 久久香蕉国产精品麻豆粉嫩av | 精品一区二区免费 | 成年人在线免费看片 | 国产一区观看 | 中文在线a∨在线 | 亚洲国产日韩一区 | 久久99深爱久久99精品 | 久久免费精彩视频 | 国产小视频网站 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩在线网址 | 日本中文字幕免费观看 | 999成人精品| 日韩高清精品一区二区 | 亚洲天堂在线观看完整版 | 91高清视频免费 | 97电影院在线观看 | 国产日产精品一区二区三区四区 | 99久久99久久精品免费 | 国产又粗又硬又爽的视频 | 国产精品乱码久久久 | 国产美女搞久久 | 免费看av在线 | 国产九九热视频 | 久久免费视频观看 | 91高清视频免费 | 国产91在线观 | 91成人网在线播放 | 国产乱码精品一区二区三区介绍 | 看全黄大色黄大片 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 日韩久久影院 | 日p视频在线观看 | 成人av电影免费在线播放 | 久久综合九色综合欧美就去吻 | 天堂久色 | 又黄又爽的视频在线观看网站 | 久久久久久久久久久久国产精品 | 亚洲女在线| 激情综合网五月婷婷 | 国产精品久久久久久久久岛 | 欧美黄网站| 亚洲天堂网站视频 | 国产精品人人做人人爽人人添 | 精品亚洲男同gayvideo网站 | 国产又粗又猛又黄又爽视频 | 美女禁18| 日韩免费视频播放 | 免费看一级黄色 | 欧美日韩精品网站 | 国产一区二区在线播放 | 亚洲成aⅴ人片久久青草影院 | 欧美日韩在线精品 | 日本久久精品视频 | 欧美天堂视频在线 | 波多野结衣在线中文字幕 | 国产 字幕 制服 中文 在线 | 亚洲精品久久久久久久不卡四虎 | 97在线视频观看 | 亚洲免费av网站 | 久久久久久久久久久免费视频 | 欧美孕妇与黑人孕交 | 97超碰在线播放 | 亚洲精品女人久久久 | 91成人免费观看视频 | 日韩精品字幕 | 婷婷六月综合亚洲 | 久久看视频 | 亚洲精品在线观看免费 | 国产成人精品一区二区 | 麻花豆传媒一二三产区 | 色94色欧美 | 国产黄在线 | 九九激情视频 | 国产精品99精品久久免费 | 91禁在线看| 亚洲色图av| a√天堂资源 | 国产精品麻豆视频 | 国产一级片久久 | 国精产品999国精产 久久久久 | 深夜精品福利 | 久久久久久毛片精品免费不卡 | 91香蕉视频污在线 | 最近乱久中文字幕 | 久久久久免费网站 | 久久国产欧美日韩 | 四虎在线免费观看 | 玖玖玖影院 | 日韩欧美中文 | 色午夜影院 | 国产视频精品久久 | 久草网视频在线观看 | 99视频网站 | 午夜精品久久久久久久久久久久久久 | 欧美一区二区精品在线 | 91成人免费在线视频 | 国产精品都在这里 | 欧美激情第一页xxx 午夜性福利 | 午夜影院三级 | 99精品在线免费视频 | 最新av在线免费观看 | 国产精品久久久久免费观看 | 激情av资源网 | 久久免费视频4 | 久久国产精品久久精品国产演员表 | 最近中文字幕完整视频高清1 | 亚洲精品永久免费视频 | 91精品久久久久久综合乱菊 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 亚洲日本在线视频观看 | 国产夫妻性生活自拍 | 99热九九这里只有精品10 | 亚洲精品乱码久久久久久蜜桃不爽 | 天天色天天操天天爽 | 久久电影中文字幕视频 | 91在线免费播放 | 成年人免费看的视频 | 免费日韩一区二区三区 | 国产成人av一区二区三区在线观看 | 91日本在线播放 | 色在线亚洲 | 免费观看性生交 | 国产 日韩 欧美 在线 | 欧美福利视频一区 | 国产一级片免费视频 | 最近更新中文字幕 | 香蕉视频免费看 | 色视频成人在线观看免 | 中文字幕欧美日韩va免费视频 | 亚洲欧美日韩一区二区三区在线观看 | 日本成人黄色片 | 成人在线播放免费观看 | 丁香视频免费观看 | 久久国产精品久久精品 | 欧美色噜噜 | 在线电影91| 黄色av在 | 亚洲专区在线视频 | 欧美精品国产综合久久 | 久久婷五月 | 日产乱码一二三区别在线 | 国内亚洲精品 | 免费日韩一区二区三区 | 日本mv大片欧洲mv大片 | 久久综合国产伦精品免费 | 久草www | 国产成人三级在线播放 | 99精品国产一区二区三区麻豆 | 免费av网站在线看 | 一区二区精品国产 | www.福利视频 | 免费人人干 | 国产精品99精品久久免费 | 免费男女羞羞的视频网站中文字幕 | 在线91播放 | 91福利视频网站 | 久久精品五月 | 成年人电影毛片 | 人人艹视频 | 国产自产高清不卡 | 91av影视| 久久久久久片 | 美女中文字幕 | 91精品国产成 | 日韩在线国产 | 国产精品综合久久久久 | 五月婷婷综合网 | 黄色大片免费网站 | av在线永久免费观看 | 久久精品日产第一区二区三区乱码 | 国产精品一区二区三区电影 | 日日夜夜免费精品视频 | 久久久久久蜜桃一区二区 | 婷婷激情小说网 | 国产短视频在线播放 | 中文字幕在线国产 | 成年人在线电影 | 久久久久成人精品亚洲国产 | 久草在线最新视频 | 久久精品免费观看 | 狠狠色噜噜狠狠狠合久 | www好男人 | 日韩资源在线播放 | av短片在线 | 射综合网| 伊人亚洲综合 | 91精品国产综合久久婷婷香蕉 | 日本精品久久久久中文字幕5 | 国产精品视频大全 | 美女视频久久久 | 日韩中文在线播放 | 超级碰碰碰视频 | 超碰免费在线公开 | 亚洲成a人片在线观看网站口工 | 久草在线最新免费 | 久久久国产一区二区三区四区小说 | 美女黄网站视频免费 | 色综合亚洲精品激情狠狠 | 草久在线观看 | 黄色三级网站 | 免费观看xxxx9999片 | 亚洲专区 国产精品 | 国产精品乱码久久久 | 国产精品女视频 | 欧美日韩在线观看一区二区三区 | 激情久久影院 | 我要看黄色一级片 | 日日爱av | 日韩视频免费在线观看 | 91亚洲精品国偷拍自产在线观看 | 在线视频欧美日韩 | 国产福利一区二区在线 | 一区二区三区日韩在线观看 | 成人免费视频网 | 91精品色| 亚洲91精品在线观看 | 欧美一区二区三区在线视频观看 | 在线精品视频免费播放 | a黄色片在线观看 | 深夜免费小视频 | 四虎永久免费网站 | 麻豆传媒视频观看 | 国产精品成人免费精品自在线观看 | 中文字幕一区二区三区视频 | 日日干av | 狠狠干婷婷| 成人福利在线观看 | 国产91精品久久久久久 | 久久精品99国产国产精 | 综合久久网站 | 精品久久久久久久久久久久久久久久久久 | 国产精品久久久久久久久久三级 | 亚洲国产日韩欧美在线 | 日韩免费一级电影 | 五月婷婷色 | 免费一级日韩欧美性大片 | 久久久久久久免费 | 久久免费福利视频 | 国产在线视频一区二区 | 激情校园亚洲 | 激情在线免费视频 | 日韩大陆欧美高清视频区 | 欧洲精品视频一区二区 | www.香蕉视频在线观看 | 日韩欧美xx | 国产视频一区二区三区在线 | 国产激情电影综合在线看 | 国产91区 | 蜜臀久久99精品久久久无需会员 | 成年人在线观看视频免费 | av网站在线观看免费 | 日本最新一区二区三区 | 亚洲高清视频在线播放 | 西西444www大胆高清视频 | 亚洲国产wwwccc36天堂 | 成人亚洲欧美 | 国产xxxx做受性欧美88 | 午夜12点| 99久久成人 | 国产一区二区在线播放 | 视频在线观看亚洲 | 久久精品视频18 | 精品国产一区二区三区久久久 | 日本中文一区二区 | 天天天天干 | 国产精品99久久久久久久久久久久 | 久久涩涩网站 | 91亚洲精品久久久蜜桃网站 | 草久久久| 国产精品一区二区 91 | 亚洲精品91天天久久人人 | 国产成人综 | 亚洲成人软件 | 中文字幕在线播放日韩 | av中文字幕电影 | av先锋中文字幕 | 在线观看中文字幕dvd播放 | www.色国产 | 亚洲黄色影院 | 97电影在线看视频 | 日本爱爱免费视频 | 亚洲最新av在线网址 | 毛片网站在线观看 | 国产免费午夜 | 国产亚洲精品中文字幕 | 日本在线观看黄色 | 婷婷丁香狠狠爱 | 中文字幕欧美日韩va免费视频 | h动漫中文字幕 | 99热在线国产 | 蜜臀av一区二区 | 99久久精品国产系列 | 麻豆免费在线播放 | 成人免费电影 | 久久久久久免费毛片精品 | 亚洲视频免费在线观看 | 国产字幕在线观看 | 91插插视频 | 国内精品久久久久影院一蜜桃 | 久久高清视频免费 | 精品久久电影 | 日日草天天草 | 欧美另类美少妇69xxxx | 久草电影在线观看 | 国产精品久久久久久久久久不蜜月 | 亚洲自拍偷拍色图 | 91精品久久久久久久久 | 日日摸日日添日日躁av | 久久1电影院 | 成年人免费在线观看网站 | 国产69精品久久app免费版 | 亚洲精品av在线 | 在线香蕉视频 | 国产精品视频免费在线观看 | 成人av午夜 | 欧美日韩一区二区在线 | 欧美污污网站 | 91免费观看 | 国产精品一区二区你懂的 | 1024在线看片 | 国产看片 色 | 在线99热| 免费视频久久 | 激情在线网 | japanese黑人亚洲人4k | 久久香蕉一区 | 婷婷在线免费观看 | 免费aa大片 | 黄色大片免费网站 | 成人教育av | 狠狠精品 | 亚洲免费视频在线观看 | 国产一区二三区好的 | 国产一级久久久 | www.人人干 | 久久久午夜电影 | 日日夜夜干 | 99精品视频99 | 国产理论片在线观看 | 激情网站 | 天天综合网~永久入口 | 欧美日韩破处 | 成人免费在线观看入口 | 国产精品6 | 中文字幕在线观看不卡 | av电影不卡| 国产精品麻豆视频 | 久久精品成人欧美大片古装 | 91看片在线播放 | 最新日韩视频在线观看 | 超碰av在线 | 久草视频在线免费播放 | 在线天堂日本 | 日韩伦理片一区二区三区 | 337p日本欧洲亚洲大胆裸体艺术 | 九色精品免费永久在线 | 欧美日韩一区二区三区视频 | 久久久久 免费视频 | 色com网 | 欧美成人日韩 | 国产在线观看你懂得 | 狠狠精品 | 91激情视频在线 | 开心丁香婷婷深爱五月 | 日本资源中文字幕在线 | 国产中文字幕亚洲 | 成年美女黄网站色大片免费看 | 久久久久免费精品国产小说色大师 | 久久在线精品 | 不卡日韩av | 亚洲男男gⅴgay双龙 | 久久精品视频网站 | 欧美在线观看视频免费 | 五月婷婷狠狠 | 日韩中文字幕免费视频 | 色婷婷www| 五月激情五月激情 | 国产麻豆电影 | 久久人人爽人人爽人人片av免费 | 97电影在线 | 一区二区精品在线观看 | 午夜aaaa| 亚洲激情在线播放 | 天天爱天天射 | 97福利| 欧美中文字幕第一页 | 久久久久久久99精品免费观看 | 成人免费网站在线观看 | 国产成人在线看 | 有没有在线观看av | 五月激情五月激情 | 国产又粗又猛又黄视频 | 国产精品嫩草55av | 久久精品一区二区三区国产主播 | va视频在线 | 最近字幕在线观看第一季 | 国产精品中文在线 | 国产精品婷婷 | 久久99精品久久久久久三级 | 99久久影院 | 一区二区三区免费在线播放 | 久久人人看 | 黄色app网站在线观看 | 国产中出在线观看 | 97成人免费视频 | 久久婷亚洲五月一区天天躁 | 成人在线观看免费视频 | 五月婷婷另类国产 | 一区二区视频在线观看免费 | 亚洲有 在线 | 国产精品亚洲综合久久 | 91在线91| 欧美做受高潮1 | 91精品综合在线观看 | 欧美一进一出抽搐大尺度视频 | 毛片网站在线 | 亚洲日本色 | 国产香蕉97碰碰久久人人 | 丁香激情综合国产 | 亚洲资源视频 | 免费不卡中文字幕视频 | 国产精品免费久久久久久久久久中文 | 综合精品久久 | 亚洲国产成人久久 | 91九色porny蝌蚪主页 | 久久麻豆精品 | 97精品国产97久久久久久久久久久久 | 99爱国产精品 | 久久婷婷五月综合色丁香 | 香蕉影视| 九九九视频在线 | 国产乱对白刺激视频在线观看女王 | 亚洲免费婷婷 | 国产精品美女久久久久久免费 | 国产精品一区一区三区 | 久久公开视频 | 午夜黄色大片 | 四虎影视国产精品免费久久 | 日韩大片在线免费观看 | 国产日韩欧美在线免费观看 | 婷婷色吧 | 天天爱天天射天天干天天 | 亚洲成人av在线电影 | 久久精品亚洲一区二区三区观看模式 | 天天操天天操天天操天天操天天操 | 成人一级视频在线观看 | 成人av在线网 | 中文字幕一区二区三 | 欧美激情精品久久久 | 亚洲高清av | 婷久久 | 91av视频导航 | 色天天久久 | 亚洲成人免费 | 色a综合| 在线国产中文字幕 | 亚州精品在线视频 | 在线国产小视频 | 久久久久久久国产精品影院 | 国产香蕉久久精品综合网 | 国产精品美女久久久免费 | 欧美日韩国产高清视频 | 手机av在线网站 | 欧美色图狠狠干 | 黄色精品网站 | 丁香九月激情综合 | 碰超在线97人人 | 一级黄色大片在线观看 | 欧美激情精品 | aaawww| 亚洲黄色小说网址 | 国产精品免费在线视频 | 国产精品自在线 | 中文字幕在线播放一区 | 高清不卡一区二区三区 | 一区二区三区四区在线免费观看 | 国产高清免费 | 精品欧美乱码久久久久久 | 黄色小说在线免费观看 | 午夜精品视频一区二区三区在线看 | 丰满少妇对白在线偷拍 | 国产午夜精品一区二区三区欧美 | 在线国产片 | 天天综合网在线观看 | 久久精品免费观看 | 久久精品国产一区二区三 | 亚洲精品中文在线 | 午夜视频在线网站 | 色婷婷狠 | 久久免费成人 | 91视频免费播放 | 在线观看精品 | 日本三级香港三级人妇99 | 国产精品视频不卡 | 黄色aa久久| 国产一区网址 | 日韩欧美国产精品 | 午夜视频99 | 色播五月激情五月 | 国产剧在线观看片 | 国产精品福利久久久 | 超碰97.com| 久久精品视频2 | 亚洲精品一区二区在线观看 | 亚洲四虎在线 | 国产色视频网站 | 97超碰人人澡 | 男女日麻批 | 日韩一级片观看 | 亚洲理论片在线观看 | 麻豆传媒在线视频 | 天天色天天射综合网 | 久久人人爽人人人人片 | 精品久久久久久久久久久久久久久久 | 天天干天天草 | 人人爽人人香蕉 | 欧美成人亚洲成人 | 久青草视频 | 天天操天天摸天天射 | 欧美日本中文字幕 | 久久精品视频网 | 国产人在线成免费视频 | 日韩高清精品一区二区 | 国产录像在线观看 | 国产成人一区三区 | 91中文字幕在线 | 亚洲少妇久久 | av大片网址| 欧美一级艳片视频免费观看 | 天天做天天干 | 激情婷婷av | 黄色小网站在线观看 | 日韩av成人在线观看 | 日韩在线免费小视频 | 99久精品 | 免费黄色在线播放 | 亚洲欧美国内爽妇网 | 国产最顶级的黄色片在线免费观看 | 久草视频在线新免费 | 日韩av一区二区在线 | 亚洲一区黄色 | 视频在线一区二区三区 | 国产一区二区三区午夜 | 国产亚洲精品久久久久久久久久 | 亚洲乱码精品久久久久 | 黄色免费观看视频 | 午夜视频在线观看一区 | 亚洲一区二区三区四区在线视频 | 久久午夜精品视频 | 久久精品国产亚洲a | 玖玖精品在线 | 黄色大片免费网站 | 国产高清在线永久 | 菠萝菠萝在线精品视频 | 国产视频在线免费 | 国产区 在线 | 国产免费精彩视频 | 最近日本韩国中文字幕 | 狠狠插狠狠干 | 亚洲色图 校园春色 | 日韩精品亚洲专区在线观看 | 久久草草热国产精品直播 | 蜜臀精品久久久久久蜜臀 | 九九久 | 99热99re6国产在线播放 | 国产剧情在线一区 | 国产xx视频 | 66av99精品福利视频在线 | 久久男人免费视频 | 免费在线观看成年人视频 | 91久久久久久久一区二区 | av免费看av | 五月天狠狠操 | 国产精品九九久久99视频 | 黄色国产在线观看 | 婷婷在线资源 | 亚洲成人免费在线 | 狠狠干在线 | 在线一区av | 国产精品久久人 | .国产精品成人自产拍在线观看6 | 片黄色毛片黄色毛片 | 99久e精品热线免费 99国产精品久久久久久久久久 | 色网免费观看 | 一区二区三区精品在线视频 | 国内精品99 | 99久久视频| 日日躁天天躁 | 免费av观看 | 毛片基地黄久久久久久天堂 | 91九色综合 | 国产大陆亚洲精品国产 | 国产精品 国产精品 | 欧美精品久久久久久久久久久 | 亚洲精选视频免费看 | 久久草草影视免费网 | 国内精品久久久久影院优 | 在线观看视频你懂 | 99视频一区二区 | 波多野结衣日韩 | 亚洲精品成人av在线 | 中文av在线天堂 | 免费三级网 | 国产香蕉视频在线观看 | 粉嫩一二三区 | 青青河边草免费 | 成人性生交视频 | 色狠狠久久av五月综合 | 中文av在线免费观看 | 99热精品在线观看 | 国产一级片一区二区三区 | 免费观看的av | 天堂网中文在线 | 在线成人欧美 | 91视频三区 | 色偷偷人人澡久久超碰69 | 欧美日韩高清一区二区 国产亚洲免费看 | 婷婷六月中文字幕 | www天天操 | 亚洲午夜久久久影院 | 日本天天色 | 狠狠黄 | 欧美性生活免费 | 99视频精品免费观看, | 在线国产激情视频 | 亚洲欧美成人综合 | 国产精品mv| 狠狠干夜夜 | 亚洲精品小视频 | 精品国产一区二区三区四 | 四虎成人网 | 国产亚洲免费的视频看 | 亚洲精品午夜久久久久久久久久久 | 久久免费在线观看视频 | 天天爱天天操天天爽 | 国产主播大尺度精品福利免费 | 欧美另类色图 | 91福利视频一区 | 婷婷久草| 日日夜夜狠狠操 | 亚洲专区欧美专区 | 国产91在线观 | 狠狠久久伊人 | 中文字幕精品一区 | www操操| 99精品热视频 | 亚洲伦理一区 | 亚洲劲爆av| 国产免费成人av | 狠狠躁18三区二区一区ai明星 | 亚洲精品乱码白浆高清久久久久久 | 久久嗨 | 国产精品a久久 | 在线观看免费黄视频 | 国产a级片免费观看 | 香蕉视频网址 | 午夜精品福利一区二区三区蜜桃 | 日韩精品一区二区在线观看视频 | 日韩高清dvd| 欧美日韩视频在线观看免费 | 久久久wwww | 在线免费观看视频你懂的 | 亚州五月| 国产精品综合久久久久久 | 国产午夜精品av一区二区 | 天天操操操操操操 | 国产成人三级在线播放 | 三级视频片 | 成人在线观看网址 | 综合网色 | 欧美另类69| 久久五月婷婷丁香社区 | 国产大片免费久久 | 亚洲综合小说 | 天天色天天骑天天射 | av在线com| 国产四虎影院 | 亚洲视频在线播放 | 色中射| 国产精品激情在线观看 | 91片黄在线观看动漫 | 久久视精品 | 就色干综合 | 欧美激情视频免费看 | 人人要人人澡人人爽人人dvd | 亚洲一二区视频 | 国产免费观看av | 亚洲综合在 | 最近中文字幕免费观看 | 夜夜躁日日躁 | 国产视频综合在线 | 91亚洲欧美| 四虎在线永久免费观看 | 91视频麻豆视频 | 亚洲成人国产精品 | 欧美日韩久久久 | 久久久久看片 | 91黄色影视 | 97色婷婷 | 在线观看的av网站 | 国产视频美女 | 91精品在线视频 | 国产明星视频三级a三级点| 中文字幕在线中文 | 成人精品99 | 国产精品久久久久久久久久久久午 | 国产精品 亚洲精品 | 国产区av在线 | 色婷婷狠狠操 | 国产精品久久综合 | 国产精品一区二区在线观看免费 | 摸阴视频| 国产黄色精品在线 | 狠狠干2018 | 欧美国产日韩一区二区三区 | 日韩二区精品 | 天天射天天色天天干 | 激情综合五月婷婷 | 久久久免费少妇 | 99免费在线视频观看 | 精品1区2区| 欧美精品xxx | 四虎永久免费在线观看 | 免费在线观看一级片 | 日韩高清不卡在线 | 超碰人人干人人 | 正在播放亚洲精品 | 色婷婷99 | 国内精品小视频 | 中文字幕成人一区 | 欧美日韩在线网站 | 97超碰人人网 | 伊人五月天 | 成人三级视频 | 黄色免费观看网址 | 中文字幕资源在线观看 | 久久午夜免费观看 | 色999在线 | 999热线在线观看 | 日韩在线小视频 | 91精品影视 | 五月婷婷爱 | 日韩三区在线 | www.久久免费 | 中文字幕一区二区三区乱码不卡 | 99热都是精品 | 91麻豆精品久久久久久 | 久久精品日本啪啪涩涩 | 亚洲午夜电影网 | 国产手机精品视频 | 97超碰在线久草超碰在线观看 | 亚洲国产日韩av | 久草热视频 | 日韩精品在线视频 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 国产成人精品国内自产拍免费看 | 激情六月婷婷久久 | 欧美一级日韩三级 | 在线成人观看 | 国产在线va | 婷婷在线免费视频 | av在线电影免费观看 | 肉色欧美久久久久久久免费看 | 日韩天天综合 | 国产资源| 天天干夜夜夜 | 亚洲欧美综合精品久久成人 | 中文字幕在线观看第三页 | 91精品网站在线观看 | 成年人看片 | 麻豆国产在线视频 | 一区二区三区国产精品 | 一级片免费观看视频 | 日韩免费三区 | 特黄特色特刺激视频免费播放 | 免费成人在线观看视频 | 在线国产日韩 | 精品久久久久久久久亚洲 | 午夜视频免费在线观看 | 国产精品第一页在线观看 | 91麻豆免费版 | 综合久久一本 | 日韩免费视频一区二区 | 中文字幕一区二区三区四区视频 | 亚洲精选99 | 欧美一级裸体视频 | 色999在线 | 黄色一级免费 | 久久精品视频免费播放 | 久久久久在线观看 | 日韩大片在线免费观看 | 在线精品观看 | 在线视频成人 | 色综合www| 992tv在线| 最新免费中文字幕 | 日韩精品在线播放 | 亚洲国产精品女人久久久 | 蜜臀av性久久久久蜜臀av | 成人网页在线免费观看 | 久久久久一区二区三区 | 欧美高清成人 | 婷婷激情av | 亚洲人成人天堂h久久 | 亚洲成a人片77777kkkk1在线观看 | 欧美在线观看禁18 | 国产无套视频 | 日本精品一区二区在线观看 | 国产精品第十页 | 在线观看黄污 | 狠狠色噜噜狠狠狠合久 | 一区二区三区中文字幕在线 | 丁香电影小说免费视频观看 | 国产福利网站 | 在线探花 | 日韩一二三区不卡 | 天天操天天干天天摸 | 亚洲 欧美 日韩 综合 | 97人人添人澡人人爽超碰动图 | 996久久国产精品线观看 | 国产精品美女毛片真酒店 | 国产福利一区在线观看 | 国产免费黄视频在线观看 | 午夜精品影院 | 免费视频资源 | 国产成人亚洲在线观看 | 91麻豆精品国产午夜天堂 | a在线观看免费视频 | 久久视频热 | 五月婷婷中文网 | 国产精品久久久久四虎 | 狠狠伊人 | 九九久久婷婷 | 免费精品在线视频 | 黄色片网站免费 | 在线电影日韩 | 18久久久久 | 有码一区二区三区 | 免费日p视频 | www.eeuss影院av撸 | 日日夜夜爱 | 欧美亚洲成人xxx | 日韩激情第一页 | 欧美精品v国产精品 | 久久亚洲免费 | 国产xxxx做受性欧美88 | 国产精品视频久久 | 18国产精品福利片久久婷 | 国产中文字幕亚洲 | 午夜精品久久久久久99热明星 | 天天色天天爱天天射综合 | 激情欧美一区二区三区 | 六月激情丁香 | 在线免费观看羞羞视频 | 欧美坐爱视频 | 亚洲在线视频免费 | 超碰日韩在线 | 国产视频一区在线 | av网站在线免费观看 | 91污污视频在线观看 | 中文在线中文资源 | 在线看片中文字幕 | 一级成人免费视频 | 亚洲丝袜一区 | 欧美激情精品一区 | 婷婷网在线| 91超在线 | 天天色天天射天天操 | 91精品国产自产老师啪 | 亚洲午夜不卡 | 在线观看视频免费播放 | 日韩精品中文字幕在线不卡尤物 | 久久国产美女视频 | .国产精品成人自产拍在线观看6 | 日韩美女免费线视频 | 国产精品久久久一区二区 | 麻豆精品在线 | 色资源网在线观看 | 91亚色在线观看 | 国产无套精品久久久久久 | 成人av电影免费在线播放 | 伊人成人激情 | 亚洲精品福利视频 | 日韩视频免费在线观看 | 狠狠操在线 | 日韩欧美综合 | 天天操操操操操 | 国模精品在线 | www.久久久com | 欧美久久久一区二区三区 | 久久久久久久久久久影院 | 久久久久女人精品毛片九一 | 麻豆一级视频 | 99久久精品国产系列 | 日本精品一 | 69中文字幕 | 91视频电影 | 在线观看不卡视频 | www.五月婷 | 日韩电影中文 | 久久婷婷色综合 | 欧美一区二区三区免费观看 | 1024手机基地在线观看 | 成人黄性视频 | 欧美日韩国产三级 | 去看片 | 日韩中文字幕网站 | 久久久国产网站 | 色婷婷亚洲婷婷 | 国产精品网红福利 | 黄色综合| 国产亚洲精品久久久久久无几年桃 | 在线导航av | 亚洲区精品视频 | 国产亚洲精品久久久久动 | 久久中文字幕视频 | 国内一级片在线观看 | 性日韩欧美在线视频 | 国产护士av | 瑞典xxxx性hd极品 | 欧美日韩亚洲一 | 亚洲专区路线二 | 久久国产精品电影 | 国产一级免费在线 | 手机成人av在线 | 99视频在线精品免费观看2 | 不卡av在线 | 亚洲黄色软件 | 日韩电影中文字幕 | 韩国精品在线 | av爱干| 国产精品久久网 | 欧美黑人性猛交 | 国产成人a亚洲精品 | 国产精品自产拍在线观看桃花 | 五月综合色 | 亚洲日本韩国一区二区 | 成人免费在线电影 | 日韩欧美亚洲 | 欧美坐爱视频 | 在线观看黄色的网站 | 最近免费中文字幕大全高清10 | av网站免费看 | 久久精品视频在线播放 | 蜜臀久久99精品久久久酒店新书 | 毛片久久久| 高清精品视频 | 国产人在线成免费视频 | 黄色大全免费观看 | 国产精品久久久久久久午夜片 | 在线电影日韩 |