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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

[Android] 输入系统(二)

發布時間:2023/12/10 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Android] 输入系统(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇文章的最后,我們發現InputDispatcher是調用了InputChannel->sendMessage把鍵值發送出去,那么相應的,也有接收鍵值的地方。接收函數是InputChannel->receiveMessage。

在InputConsumer::consume內找到了receiveMessage,從類名能看出來發送端與接收端相當于生產者與消費者的關系。

status_t InputConsumer::consume(InputEventFactoryInterface* factory,bool consumeBatches, nsecs_t frameTime, uint32_t* outSeq, InputEvent** outEvent) {// Receive a fresh message.status_t result = mChannel->receiveMessage(&mMsg); }

?

receiveMessage內調用的是socket的接收函數recv

status_t InputChannel::receiveMessage(InputMessage* msg) {do {nRead = ::recv(mFd, msg, sizeof(InputMessage), MSG_DONTWAIT);} while (nRead == -1 && errno == EINTR); }

?

?

事件接收端NativeInputEventReceiver

那么究竟是誰來消費這些事件呢,我們在NativeInputEventReceiver里面找到了答案。

在NativeInputEventReceiver內有個事件處理函數handleEvent,該函數是looperCallback的虛函數,NativeInputEventReceiver作為looperCallback的子類,自然有義務實現handleEvent這個函數。handleEvent就可以監聽I/O事件。一旦有I/O事件,如上述的socket send事件,handleEvent就會被啟動,進行后續的處理。

int NativeInputEventReceiver::handleEvent(int receiveFd, int events, void* data) {status_t status = consumeEvents(env, false /*consumeBatches*/, -1, NULL); }

?

既然有LooperCallback(NativeInputEventReceiver),必然會有Looper。雖然Looper不是本篇文章的研究對象,但是我們有必要理清下面的問題:

  • 究竟與NativeInputEventReceiver對應的這個Looper是什么?
  • 這個Looper是怎樣與LooperCallback關聯起來的呢?

???

實際上,一切起始于ViewRootImpl的setView方法:

public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView) { ...//在這里傳入了當前線程的Loopernew WindowInputEventReceiver(mInputChannel, Looper.myLooper()); ... }

?

InputEventReceiver作為WindowInputEventReceiver的子類,會一起被創建出來。在InputEventReceiver的構造方法中,會調用native方法nativeInit

public InputEventReceiver(InputChannel inputChannel, Looper looper) {mInputChannel = inputChannel;mMessageQueue = looper.getQueue();mReceiverPtr = nativeInit(new WeakReference<InputEventReceiver>(this),inputChannel, mMessageQueue); }

?

在NativeInputEventReceiver的nativeInit方法中,創建了NativeInputEventReceiver對象,并調用它的initialize方法

static jint nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak,jobject inputChannelObj, jobject messageQueueObj) {...sp<NativeInputEventReceiver> receiver = new NativeInputEventReceiver(env,receiverWeak, inputChannel, messageQueue);status_t status = receiver->initialize();... }

?

initialize方法只做了一件事,就是把NativeInputEventReceiver與Looper關聯起來

status_t NativeInputEventReceiver::initialize() {setFdEvents(ALOOPER_EVENT_INPUT);return OK; }void NativeInputEventReceiver::setFdEvents(int events) {if (mFdEvents != events) {mFdEvents = events;int fd = mInputConsumer.getChannel()->getFd();if (events) {mMessageQueue->getLooper()->addFd(fd, 0, events, this, NULL);} else {mMessageQueue->getLooper()->removeFd(fd);}} }

Looper的方法addFd實現了關聯Looper與LooperCallback(NativeInputEventReceiver)的功能,我們先來分析一下傳給addFd的參數

  • fd,fd即inputChannel的socket fd,Looper會偵測該fd的狀態
  • events,即傳入的ALOOPER_EVENT_INPUT,只有fd的狀態是INPUT的時候才會觸發調用LooperCallback中的handleEvent方法
  • this,即NativeInputEventReceiver,當fd狀態為Input時,NativeInputEventReceiver中的handleEvent方法會被調用

?

?

在consumeEvents內,我們能看到調用了InputConsume::consume來接收InputDispatcher發送過來的事件

status_t NativeInputEventReceiver::consumeEvents(JNIEnv* env,bool consumeBatches, nsecs_t frameTime, bool* outConsumedBatch) {for (;;) {status_t status = mInputConsumer.consume(&mInputEventFactory,consumeBatches, frameTime, &seq, &inputEvent);} }

?

?

輸入事件在consumeEvents內將會被處理完成,其中包含了四個主要步驟:

  • 獲取輸入事件
  • 把輸入事件轉換成java也能處理的格式
  • 輸入事件分發到相應窗口去處理
  • 處理結果反饋
  • ?

    ?

    1. 獲取輸入事件已在上面闡述過

    ?

    2. 輸入事件轉換

    以Key為例,輸入事件只是把事件內部的成員拆分,然后通過JNI調用java的構造函數來生成相應的java event對象,后面的事件處理都在java層

    jobject inputEventObj;switch (inputEvent->getType()) {case AINPUT_EVENT_TYPE_KEY:inputEventObj = android_view_KeyEvent_fromNative(env,static_cast<KeyEvent*>(inputEvent));break;// ----------------------------------------------------------------------------jobject android_view_KeyEvent_fromNative(JNIEnv* env, const KeyEvent* event) {jobject eventObj = env->CallStaticObjectMethod(gKeyEventClassInfo.clazz,gKeyEventClassInfo.obtain,nanoseconds_to_milliseconds(event->getDownTime()),nanoseconds_to_milliseconds(event->getEventTime()),event->getAction(),event->getKeyCode(),event->getRepeatCount(),event->getMetaState(),event->getDeviceId(),event->getScanCode(),event->getFlags(),event->getSource(),NULL);if (env->ExceptionCheck()) {ALOGE("An exception occurred while obtaining a key event.");LOGE_EX(env);env->ExceptionClear();return NULL;}return eventObj; }public static KeyEvent obtain(long downTime, long eventTime, int action,int code, int repeat, int metaState,int deviceId, int scancode, int flags, int source, String characters) {KeyEvent ev = obtain();ev.mDownTime = downTime;ev.mEventTime = eventTime;ev.mAction = action;ev.mKeyCode = code;ev.mRepeatCount = repeat;ev.mMetaState = metaState;ev.mDeviceId = deviceId;ev.mScanCode = scancode;ev.mFlags = flags;ev.mSource = source;ev.mCharacters = characters;return ev;}

    ?

    ?

    ?

    3.輸入事件分發

    這里是在java層的事件分發,最終目的是為了調用到窗口的onTouch這類回調函數。

    env->CallVoidMethod(receiverObj.get(),gInputEventReceiverClassInfo.dispatchInputEvent, seq, inputEventObj);

    ?

    ?

    還記得上面InputEventReceiver初始化時的流程嗎?是通過setView--->new WindowInputEventReceiver--->new InputEventReceiver--->new NativeInputEventReceiver這樣一步一步創建的。

    通過上述的JNI調用,會調用到WindowInputEventReceiver的dispatchInputEvent方法,不過由于WindowInputEventReceiver并沒有自己實現這個方法,因此會調用父類InputEventReceiver::dispatchInputEvent,內部會真正調用到WindowInputEventReceiver::onInputEvent

    public void dispatchInputEvent(InputEvent event) {onInputEvent(event);}

    ?

    在onInputEvent內,轉到了ViewRootImpl這邊進行處理

    public void onInputEvent(InputEvent event) {enqueueInputEvent(event, this, 0, true); }void enqueueInputEvent(InputEvent event,InputEventReceiver receiver, int flags, boolean processImmediately) {doProcessInputEvents(); }

    ?

    由于事件隊列內會包含多個事件,因此在doProcessInputEvent時,需要分別對所有的事件都進行分發

    void doProcessInputEvents() {// Deliver all pending input events in the queue.while (mPendingInputEventHead != null) {QueuedInputEvent q = mPendingInputEventHead;mPendingInputEventHead = q.mNext;if (mPendingInputEventHead == null) {mPendingInputEventTail = null;}q.mNext = null;mPendingInputEventCount -= 1;deliverInputEvent(q);}}

    ?

    deliverInputEvent會調用到InputState的deliver方法

    public final void deliver(QueuedInputEvent q) {if ((q.mFlags & QueuedInputEvent.FLAG_FINISHED) != 0) {forward(q);} else if (shouldDropInputEvent(q)) {finish(q, false);} else {apply(q, onProcess(q));}}

    由于一開始我們的事件還沒有完成,因此不會帶上FLAG_FINISHED,而且我們的事件時一般事件,并不會被丟棄,因此會走apply分支。

    ?

    ?

    首先會調用onProcess處理事件

    protected int onProcess(QueuedInputEvent q) {if (q.mEvent instanceof KeyEvent) {return processKeyEvent(q);} else {// If delivering a new non-key event, make sure the window is// now allowed to start updating.handleDispatchDoneAnimating();final int source = q.mEvent.getSource();if ((source & InputDevice.SOURCE_CLASS_POINTER) != 0) {return processPointerEvent(q);} else if ((source & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) {return processTrackballEvent(q);} else {return processGenericMotionEvent(q);}}}

    ?

    ?

    以Key為例,我們會調用到processKeyEvent

    private int processKeyEvent(QueuedInputEvent q) {// Deliver the key to the view hierarchy.if (mView.dispatchKeyEvent(event)) {return FINISH_HANDLED;}}

    ?

    然后調用了View類的dispatchKeyEvent方法,最終會調用到onKey這個回調函數

    public boolean dispatchKeyEvent(KeyEvent event) {// Give any attached key listener a first crack at the event.//noinspection SimplifiableIfStatementListenerInfo li = mListenerInfo;if (li != null && li.mOnKeyListener != null && (mViewFlags & ENABLED_MASK) == ENABLED&& li.mOnKeyListener.onKey(this, event.getKeyCode(), event)) {return true;}}

    ?

    ?

    4. 處理結果反饋

    然后還剩下apply這個方法需要分析。如果onProcess正常處理完成后,會返回FINISH_HANDLED,否則返回FINISHED_NOT_NHANDLED。

    protected void apply(QueuedInputEvent q, int result) {if (result == FORWARD) {forward(q);} else if (result == FINISH_HANDLED) {finish(q, true);} else if (result == FINISH_NOT_HANDLED) {finish(q, false);} else {throw new IllegalArgumentException("Invalid result: " + result);}}protected void finish(QueuedInputEvent q, boolean handled) {q.mFlags |= QueuedInputEvent.FLAG_FINISHED;if (handled) {q.mFlags |= QueuedInputEvent.FLAG_FINISHED_HANDLED;}forward(q);}protected void forward(QueuedInputEvent q) {onDeliverToNext(q);}protected void onDeliverToNext(QueuedInputEvent q) {if (mNext != null) {mNext.deliver(q);} else {finishInputEvent(q);}}private void finishInputEvent(QueuedInputEvent q) {if (q.mReceiver != null) {boolean handled = (q.mFlags & QueuedInputEvent.FLAG_FINISHED_HANDLED) != 0;q.mReceiver.finishInputEvent(q.mEvent, handled);} else {q.mEvent.recycleIfNeededAfterDispatch();}recycleQueuedInputEvent(q);}

    ?????

    ?

    ?

    mReceiver.finishInputEvent就是NativeInputEvent的finishInputEvent

    status_t NativeInputEventReceiver::finishInputEvent(uint32_t seq, bool handled) {status_t status = mInputConsumer.sendFinishedSignal(seq, handled); }status_t InputConsumer::sendFinishedSignal(uint32_t seq, bool handled) {while (!status && chainIndex-- > 0) {status = sendUnchainedFinishedSignal(chainSeqs[chainIndex], handled);} }status_t InputConsumer::sendUnchainedFinishedSignal(uint32_t seq, bool handled) {InputMessage msg;msg.header.type = InputMessage::TYPE_FINISHED;msg.body.finished.seq = seq;msg.body.finished.handled = handled;return mChannel->sendMessage(&msg); }

    最后也是調用sendMessage把消息反饋給InputDispatcher。

    到這里,上層的處理已經完成,接下來就是InputDispatcher的反饋處理。

    ?

    ?

    InputDispatcher反饋處理

    反饋處理在handleReceiveCallback中進行,其中包含兩個部分:

  • 接收反饋消息
  • 處理反饋消息
  • int InputDispatcher::handleReceiveCallback(int fd, int events, void* data) {for (;;) {uint32_t seq;bool handled;status = connection->inputPublisher.receiveFinishedSignal(&seq, &handled);if (status) {break;}d->finishDispatchCycleLocked(currentTime, connection, seq, handled);gotOne = true;} }

    ?

    ?

    1. 接收反饋消息

    接收反饋消息是調用的inputPublisher的receiveFinishedSignal方法,內部還是調用了mChannel->receiveMessage

    status_t InputPublisher::receiveFinishedSignal(uint32_t* outSeq, bool* outHandled) {status_t result = mChannel->receiveMessage(&msg);}

    ?

    ?

    2. 處理反饋消息

    處理反饋消息是調用了finishDispatchCycleLocked。

    void InputDispatcher::finishDispatchCycleLocked(nsecs_t currentTime,const sp<Connection>& connection, uint32_t seq, bool handled) {// Notify other system components and prepare to start the next dispatch cycle.onDispatchCycleFinishedLocked(currentTime, connection, seq, handled); }

    ?

    void InputDispatcher::onDispatchCycleFinishedLocked(nsecs_t currentTime, const sp<Connection>& connection, uint32_t seq, bool handled) {CommandEntry* commandEntry = postCommandLocked(& InputDispatcher::doDispatchCycleFinishedLockedInterruptible);}

    ?

    ?

    postCommandLocked其實也是發送消息給InputDispatcherThread,那么在分發線程下一次處理消息的時候會首先處理doDispatchCycleFinishedLockedInterruptible。

    doDispatchCycleFinishedLockedInterruptible是實際上反饋進行處理的地方,其中包含了下面幾個處理步驟:

  • 從waitQueue中取出所反饋的事件
  • 事件是否處理超時,如果是則做超時處理
  • 從waitQueue中刪除所反饋的事件
  • 立刻展開下一次的outboundQueue事件監聽
  • ?

    void InputDispatcher::doDispatchCycleFinishedLockedInterruptible(CommandEntry* commandEntry) {// Handle post-event policy actions.DispatchEntry* dispatchEntry = connection->findWaitQueueEntry(seq);if (eventDuration > SLOW_EVENT_PROCESSING_WARNING_TIMEOUT) {String8 msg;msg.appendFormat("Window '%s' spent %0.1fms processing the last input event: ",connection->getWindowName(), eventDuration * 0.000001f);dispatchEntry->eventEntry->appendDescription(msg);ALOGI("%s", msg.string());}if (dispatchEntry == connection->findWaitQueueEntry(seq)) {connection->waitQueue.dequeue(dispatchEntry);}// Start the next dispatch cycle for this connection.startDispatchCycleLocked(now(), connection);} }

    ?

    總結

    以上是生活随笔為你收集整理的[Android] 输入系统(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    99久久久久国产精品免费 | 韩国精品一区二区三区六区色诱 | 国产精品99在线播放 | 91色偷偷 | 成人一级免费电影 | 伊人婷婷在线 | 91中文字幕网| 久草视频在线免费看 | 日日夜夜精品免费观看 | 精品美女久久 | 国产精品美女久久久久久久 | 九九综合在线 | 亚洲精品国产精品国产 | 99热最新在线| 夜夜爱av| 久久伦理电影 | 九九久久影视 | 亚洲电影在线看 | 久久久国产精品麻豆 | 国产精品一区在线播放 | 天天综合网在线观看 | 中文字幕在线字幕中文 | 精品一区二区三区四区在线 | 日韩在线观看第一页 | 人人爽人人爱 | 免费在线观看亚洲视频 | 五月天伊人网 | 97国产小视频| 嫩草av影院 | 亚洲成人家庭影院 | 伊人五月| 福利视频导航网址 | 精品久久一区 | 久久精品中文字幕免费mv | 天天做天天爱夜夜爽 | 五月天激情综合网 | 久热只有精品 | 8x8x在线观看视频 | 国产欧美中文字幕 | 欧美日韩中文字幕在线视频 | 久久精品综合视频 | 国产在线观看你懂得 | 国产在线免费观看 | 国产一区二区精品91 | 亚洲电影成人 | 免费观看一级视频 | 久久久黄色 | 国产成人亚洲在线观看 | av在线免费网 | 九九久久精品视频 | 夜夜婷婷 | 综合色中文 | 激情伊人 | 天天干天天操天天射 | 国产伦精品一区二区三区… | 亚洲成av片人久久久 | 免费高清在线观看电视网站 | 日韩成人免费电影 | 久热av在线 | 超碰在线观看av | 一区二区精品视频 | 国精产品一二三线999 | 欧美福利久久 | 99久久精品免费看国产麻豆 | 99热手机在线观看 | 亚洲黄色一级大片 | 伊人久久精品久久亚洲一区 | 久久综合久久综合九色 | 九九视频这里只有精品 | 精品国产电影 | 在线观看一区二区视频 | 日本久久高清视频 | 少妇bbb| 高清不卡一区二区三区 | 超碰在97 | 久久久麻豆 | 中文字幕美女免费在线 | 天天亚洲 | 免费能看的av | 国产无吗一区二区三区在线欢 | 日韩黄在线观看 | 91麻豆精品国产91久久久无限制版 | a黄色一级 | 99精品偷拍视频一区二区三区 | www.久久免费视频 | 天天射狠狠干 | 久草网在线视频 | 日韩亚洲在线视频 | 玖玖在线播放 | 天天干夜夜操视频 | 在线观看av网站 | 久久久黄色免费网站 | 99久久电影 | 久久精彩| 黄色av一级片 | 97国产在线 | 二区三区视频 | 欧美激情第一页xxx 午夜性福利 | 国产一区欧美二区 | 综合伊人av| 人人舔人人插 | 欧美日韩在线播放 | 亚洲欧美日韩国产精品一区午夜 | 色诱亚洲精品久久久久久 | 麻豆视频在线播放 | 国产在线播放不卡 | 99草视频在线观看 | 中文字幕在线看视频国产中文版 | 大荫蒂欧美视频另类xxxx | 亚洲理论视频 | 美腿丝袜一区二区三区 | 美女久久久久久久久久 | 国产色道| 偷拍福利视频一区二区三区 | 五月激情久久久 | 午夜国产在线观看 | 欧美一级免费 | 波多野结衣在线视频一区 | 精品国产欧美一区二区 | 日韩精品一区二 | 成人av久久 | 国产精品视频 | 亚洲视频精品在线 | 99热超碰 | 日本最大色倩网站www | 一区二区三区久久精品 | 久久经典视频 | 欧美射射射| 一二区精品 | 97成人在线观看 | 五月天婷婷综合 | 久久99国产综合精品免费 | 亚洲精品自在在线观看 | 国产一区不卡在线 | 色窝资源 | 亚洲午夜精品久久久久久久久久久久 | 午夜色婷婷 | 亚洲天堂va | 色资源二区在线视频 | 亚洲国产日韩欧美在线 | 人人干人人艹 | 国产97色在线 | 亚洲日本va午夜在线影院 | 丁香花在线观看视频在线 | 欧美一区二区三区四区夜夜大片 | 日韩欧美在线综合网 | 国产区高清在线 | 天天操夜 | 91大神精品视频在线观看 | 国产v在线 | 国产精品综合在线 | 亚洲视频www | www久久国产 | 美女在线免费观看视频 | 一区二区三区在线视频观看58 | 天堂av最新网址 | 国产精品免费在线观看视频 | 国产小视频福利在线 | 欧美精品v国产精品v日韩精品 | 国产午夜在线 | 国产福利精品视频 | 国产精品成人自拍 | 麻豆国产精品永久免费视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 日韩欧美精品在线 | www.com黄| 久久高清国产 | 国产日韩欧美网站 | 91成人亚洲 | 日韩在线字幕 | 国产精品精品国产 | 999国产在线 | 亚洲精品字幕在线 | 欧美精品久久久久久久久老牛影院 | 综合网天天射 | 精品国产免费人成在线观看 | 国产精品久久久视频 | 日韩精品久久久免费观看夜色 | 91视频在线播放视频 | 黄色软件大全网站 | 天天操天天摸天天射 | 国产精品美女久久久久久免费 | 久久99影院 | 黄色成人影院 | 欧美一区二区三区不卡 | 丁香九月婷婷综合 | 91九色国产蝌蚪 | 久久99亚洲精品久久 | 天天色婷婷 | 一级精品视频在线观看宜春院 | 91av在线视频免费观看 | 色www精品视频在线观看 | 在线观看免费观看在线91 | 新版资源中文在线观看 | 91看片淫黄大片在线播放 | 国产手机视频在线 | 天天操天天干天天 | 黄色在线观看免费 | 欧美日韩国产三级 | 中文在线a√在线 | 国产高清成人 | 亚洲精品tv久久久久久久久久 | 91在线免费观看国产 | 激情视频免费在线 | 亚洲清纯国产 | 探花视频在线版播放免费观看 | 亚洲欧美日本国产 | 成人网444ppp | 国产精品乱码一区二三区 | av免费福利 | 精品伊人久久久 | 亚洲,国产成人av | 天天操天天操一操 | 麻豆视频国产精品 | www黄免费 | 国内久久看 | 五月天免费网站 | 精品在线播放 | 在线免费观看国产 | 日韩亚洲欧美中文字幕 | 看全黄大色黄大片 | 国产xxxx| 青春草视频在线播放 | 一区二区精品视频 | 美女亚洲精品 | 欧美另类交人妖 | 日本精品在线看 | 国产婷婷久久 | 欧美日韩国产色综合一二三四 | 在线观看www视频 | 欧美日韩中文另类 | 欧美日高清视频 | 国产精品成人久久久久久久 | 久久精品黄 | 国产精品毛片网 | 91观看视频 | 国产精品18久久久久久久久久久久 | 99 精品 在线 | 免费久久网 | 欧美一区二区三区在线观看 | 人人射 | 成 人 黄 色 视频播放1 | 又湿又紧又大又爽a视频国产 | 久久在线视频精品 | 日韩激情一二三区 | 国产精品成人一区二区三区吃奶 | 免费久久99精品国产 | a级成人毛片 | 毛片网在线观看 | 国产精品女教师 | 最近日本韩国中文字幕 | 欧美91精品国产自产 | 国产一级视频免费看 | 美女很黄免费网站 | 国产精品福利午夜在线观看 | 天天干,天天射,天天操,天天摸 | 日韩免费一级电影 | 婷婷激情影院 | 免费色网 | www.黄色在线 | 欧美极品xxxx| 成人黄色免费在线观看 | 四虎影视成人精品国库在线观看 | 丁香久久五月 | 人人爽人人澡人人添人人人人 | 一区中文字幕在线观看 | 综合久色| 五月婷婷久久丁香 | 国产成人福利在线观看 | 久久综合狠狠综合久久综合88 | 香蕉视频免费看 | 亚洲精品中文字幕视频 | 免费在线观看黄网站 | 麻豆精品在线 | 97在线观看免费观看高清 | 久99久精品 | 狠狠色丁香婷婷综合久久片 | 99久久精品久久久久久清纯 | 三级黄色a| 国产精品视频地址 | 久久热首页| a√天堂中文在线 | 久久综合成人网 | 亚洲影院国产 | 91精品国自产在线观看 | 欧美男女爱爱视频 | 婷婷久久国产 | 久久九九影院 | 久久女同性恋中文字幕 | 久久歪歪| 国产视频97 | 国产午夜精品理论片在线 | 五月天综合在线 | 日本女人在线观看 | 成人av在线看 | 国语精品免费视频 | 伊人久久在线观看 | 日韩一区二区三区高清在线观看 | 中文字幕免费不卡视频 | 国产精品视频不卡 | 国产精品99久久久精品免费观看 | 国产午夜精品久久久久久久久久 | 国产麻豆成人传媒免费观看 | 欧美精品一区二区三区一线天视频 | 9ⅰ精品久久久久久久久中文字幕 | 免费aa大片 | 国产在线观看你懂的 | 精品亚洲免费视频 | 国产一级二级在线播放 | 五月色综合 | 狠狠激情中文字幕 | 五月婷婷综合在线观看 | 亚洲精品影院在线观看 | 久久视频精品在线 | 特级西西www44高清大胆图片 | 日日操操 | 五月天色中色 | 成人午夜在线观看 | 日韩欧美视频免费在线观看 | 99re中文字幕 | 国际精品网 | 波多野结衣精品在线 | 久久婷婷色 | 欧美另类z0zx| 国产午夜在线观看 | 婷婷亚洲综合五月天小说 | 91香蕉国产 | 久热av| 天天干亚洲 | 99久久这里有精品 | 毛片基地黄久久久久久天堂 | 久久九九久久 | 日韩一级片大全 | 在线观看视频免费大全 | 国产欧美综合在线观看 | 国产在线美女 | 久久精品7 | 91精品久久久久 | 日韩午夜高清 | 日韩精品久久一区二区三区 | 国产精品综合久久久久久 | 丁香婷婷激情 | 91精品蜜桃 | 亚洲视频 中文字幕 | 黄色小说在线观看视频 | 久久久伦理 | 狠狠色狠狠色综合日日92 | 日韩免费专区 | 热re99久久精品国产66热 | 亚洲综合婷婷 | 中文字幕在线观看一区二区 | 99久久久国产免费 | 91理论电影 | 国产精品自在欧美一区 | 91自拍视频在线 | 天堂va欧美va亚洲va老司机 | 日韩高清免费电影 | 亚洲第一区精品 | 日批网站免费观看 | 麻豆免费观看视频 | 久久综合狠狠综合久久激情 | 久久好看免费视频 | 激情综合五月 | 欧美黄色免费 | 久久精品草 | 亚洲女欲精品久久久久久久18 | 久久网站免费 | 在线草| 97干com| 曰韩精品 | 亚洲成aⅴ人片久久青草影院 | 欧美在线一 | 久久久久免费精品视频 | 午夜精品一区二区三区视频免费看 | 人人搞人人搞 | 久草视频免费观 | 久久免费av电影 | 日本三级全黄少妇三2023 | 久久永久免费视频 | 国产精品你懂的在线观看 | 手机看片 | 97干com| 国产精品无 | 在线一区观看 | 欧美精品一二三 | 中文av日韩 | 久久久久久久久影视 | 国产专区一 | 免费激情网 | 久久免费国产视频 | 亚洲成人网av | 99久久婷婷 | 在线视频1卡二卡三卡 | 亚洲,国产成人av | 国产精品乱码久久久 | 在线观看亚洲 | 婷婷色社区 | 欧美三级高清 | 狠狠干婷婷色 | 丰满少妇一级 | 国产精品久久久久久久久免费看 | 在线免费黄 | 日本3级在线观看 | 尤物97国产精品久久精品国产 | 最新真实国产在线视频 | 美女视频黄频 | 国产精品毛片一区视频 | 日韩剧情 | 99精品美女| 在线免费观看国产黄色 | 成人手机在线视频 | 中文字幕在 | 人人精品 | 99久久成人 | 成人在线观看影院 | 国产在线视频资源 | 国产高清视频免费 | 免费亚洲黄色 | 久久久久免费 | www.狠狠| 日韩精品无码一区二区三区 | 久久久亚洲精华液 | 91视频91自拍 | 国产精品第二十页 | 免费视频97| 亚洲五月激情 | 一本一本久久a久久精品综合小说 | 免费久久99精品国产婷婷六月 | 天天射综合网视频 | 九九在线国产视频 | 97超碰在线免费观看 | 337p西西人体大胆瓣开下部 | 色资源中文字幕 | 精品人人人人 | 999男人的天堂 | 国产成人一区二区三区在线观看 | 欧美aa在线 | 亚洲欧美日韩一级 | 夜色在线资源 | 999久久久免费视频 午夜国产在线观看 | 91黄在线看 | 色国产视频 | 日韩久久久久久久久 | 欧美一二三区播放 | 欧美99精品 | 2000xxx影视| 久久久久久美女 | 国产日本亚洲 | 国产视频综合在线 | 久久爽久久爽久久av东京爽 | 久久免费黄色大片 | 亚洲黄色av网址 | 丁香六月婷婷激情 | 99r精品视频在线观看 | 国产精品大片免费观看 | 激情综合网在线观看 | 五月天堂色 | 日本久草电影 | 国产亚洲精品美女久久 | 久久蜜臀一区二区三区av | 婷婷在线不卡 | 色婷婷成人网 | 91桃色国产在线播放 | 精品国产aⅴ麻豆 | 国产专区精品 | 欧美精品一区二区三区一线天视频 | 久久久精品国产一区二区电影四季 | 日本公妇色中文字幕 | 蜜桃视频日韩 | 国产精品一区免费观看 | 天天色天天操天天爽 | 久久国产精品99久久久久久进口 | 九热在线 | 四虎成人精品永久免费av | 久草在线免费在线观看 | 麻豆视频国产 | 欧美性春潮| 日韩免费专区 | 亚洲电影av在线 | 免费三级骚 | 特级毛片爽www免费版 | 人人舔人人射 | 国产黄在线播放 | 日日干日日 | 国产不卡毛片 | 国产精品一区二区三区久久久 | 9999精品| 日韩欧美在线观看 | www.夜夜| 最新av在线播放 | 视频在线一区二区三区 | 欧美日韩aa | 国产老熟| 91x色| www五月婷婷| 亚洲专区在线播放 | 最近2019年日本中文免费字幕 | 亚洲国产精品一区二区尤物区 | 久久久综合精品 | 在线成人免费av | 成人久久 | www夜夜操com| 夜夜躁狠狠躁 | 亚洲精品久久视频 | 狠狠色伊人亚洲综合网站色 | 久久国产免费 | 亚洲最大成人网4388xx | 久久歪歪 | 日日爽天天| 欧美日韩在线免费观看 | 日韩欧美高清一区二区 | 久久www免费视频 | 中文字幕免费中文 | 91精品在线观看视频 | 月丁香婷婷| 中文字幕中文字幕 | avwww在线观看 | 有码视频在线观看 | 精品国精品自拍自在线 | 日韩欧美视频免费看 | 97在线观看免费视频 | 国产无限资源在线观看 | 午夜免费福利片 | 欧美日韩高清一区二区三区 | 免费久久久| 中文一区在线观看 | 黄色在线免费观看网址 | 久草在线最新视频 | 一本一道久久a久久精品蜜桃 | 国产毛片在线 | 欧美有色 | 亚洲日本va午夜在线影院 | 超碰在线97免费 | 最新av电影网站 | 亚洲特级片 | 久久狠狠一本精品综合网 | 中文字幕在线观看一区二区 | 99r国产精品| 国产一区二区三区免费在线观看 | 国产精品久久久久久久妇 | 91九色九色 | 国产精品欧美激情在线观看 | 亚洲美女精品视频 | 97品白浆高清久久久久久 | 国产在线观看 | 国产精品一二三 | 亚洲欧洲成人精品av97 | 久久成人精品视频 | 国产无遮挡又黄又爽在线观看 | 高清视频一区二区三区 | 五月激情久久 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 在线视频黄 | 国产精品18毛片一区二区 | 蜜臀av在线一区二区三区 | 中文字幕资源在线 | 精品综合久久久 | 免费高清在线观看成人 | 91九色性视频 | 久久免费看a级毛毛片 | 99热这里只有精品免费 | 福利一区二区 | 国产精品美女久久久久久2018 | 就要干b| 久久视频国产 | 亚洲天天干 | 国产91精品看黄网站 | 四虎影院在线观看av | 蜜臀av夜夜澡人人爽人人 | 成人91视频| av网站在线观看播放 | 久久国产a | 成人免费观看视频网站 | 一本一本久久a久久 | 亚洲国产成人精品在线观看 | 国产欧美精品xxxx另类 | 99这里只有精品99 | 婷婷综合成人 | 最新不卡av | 亚洲精品久久激情国产片 | 国产丝袜制服在线 | 亚洲欧美视频在线观看 | 夜夜操网站 | 91精品国产福利在线观看 | 久久免费99精品久久久久久 | 精品国产乱码一区二 | 天天色天天射综合网 | 在线观看精品 | 丁香激情综合 | 国产精品资源在线 | 欧美一区二区三区激情视频 | 亚州av成人 | 亚洲涩涩涩 | 日韩电影一区二区三区 | 久久精品国产亚洲精品 | 国产成人精品在线播放 | 天天玩天天干天天操 | 免费在线电影网址大全 | 国产精品岛国久久久久久久久红粉 | 成 人 黄 色 片 在线播放 | 五月天婷婷免费视频 | 日日摸日日添夜夜爽97 | 特黄特色特刺激视频免费播放 | 欧美先锋影音 | 亚洲 欧洲 国产 精品 | 免费观看91视频大全 | 91在线播 | www久久 | 国产精品乱码一区二区视频 | 丝袜美女视频网站 | 人人讲下载 | 欧美一级片免费 | 精品国产免费久久 | 日韩免费观看av | 婷婷六月天综合 | 亚洲最大av网站 | 日日夜夜综合 | 夜夜夜夜爽 | 天天色成人 | 国产一级在线 | 精品国产区 | 成人a大片| 超碰人人在线观看 | 美女免费视频一区二区 | 91色蜜桃 | 国产真实在线 | 国产xxxx做受性欧美88 | 日韩欧美99 | 国产中文字幕一区二区 | 中文字幕在线网址 | 婷婷精品国产欧美精品亚洲人人爽 | 日韩午夜电影 | 久久久久国产精品免费免费搜索 | 久草视频在线免费播放 | 国产精品日韩 | 999抗病毒口服液 | 精品美女久久久久 | 国产经典三级 | 亚洲性xxxx | 天天操操| 一区二区不卡视频在线观看 | 中文字幕中文字幕中文字幕 | 天天色天天干天天 | av中文字幕在线播放 | 精品久久久久久电影 | 成人av高清在线观看 | 激情五月av | 国产亚洲成人网 | 久久久久成人免费 | 亚洲 av网站| 精品亚洲视频在线 | 精品一区av | 久久伊99综合婷婷久久伊 | 国产成人精品一区在线 | 免费在线观看的av网站 | 亚洲aⅴ一区二区三区 | a天堂中文在线 | 女人高潮特级毛片 | 免费影视大全推荐 | 999免费视频 | 日韩欧美一区二区不卡 | 日韩理论片在线观看 | 91av播放| 欧美中文字幕久久 | 在线播放精品一区二区三区 | 亚色视频在线观看 | 欧美一级特黄aaaaaa大片在线观看 | 日韩欧美有码在线 | 五月综合网站 | 国产免费不卡 | 最近高清中文在线字幕在线观看 | 国产一区二区成人 | 麻豆av一区二区三区在线观看 | 国产视频二区三区 | 欧美久久久久久久久久久 | 午夜视频在线观看一区二区三区 | 2019中文字幕网站 | 麻豆视频观看 | 1024手机看片国产 | 久久久久国产精品一区 | 91视频在线免费观看 | 亚洲精品无 | 91mv.cool在线观看 | 亚洲精品福利在线 | 国产亚洲精品福利 | 国产在线播放一区二区三区 | 色黄www小说| 综合激情网... | 亚洲一级在线观看 | 人人涩| 超碰97.com | 91麻豆精品国产自产在线 | 免费国产一区二区 | 亚洲人成人在线 | 嫩草av影院| 中文字幕一区二区三区在线观看 | 中文字幕视频三区 | 狠狠色伊人亚洲综合网站野外 | 97在线观看免费高清完整版在线观看 | 国产无套视频 | 中文字幕av在线不卡 | 操操操影院 | 国产亚洲成人网 | 国产午夜三级一区二区三桃花影视 | 中文字幕av最新 | 黄p在线播放 | 国产精品久久久久婷婷二区次 | 亚洲综合激情小说 | www.狠狠插.com | 欧美激情精品久久久久 | 国产精品成人aaaaa网站 | 日韩在线一区二区免费 | 精品国产免费看 | 国产精品嫩草影院9 | 美女视频黄是免费的 | 69久久久久久久 | 91精品999| 人人爱爱 | 成年人视频在线免费观看 | 天天操偷偷干 | 久久999精品 | 夜夜操网| 麻豆视频免费在线 | 18国产精品白浆在线观看免费 | 99久久国产免费免费 | 九色琪琪久久综合网天天 | 国产手机在线观看视频 | 日本一区二区高清不卡 | 另类五月激情 | 91精品国产92久久久久 | 三级在线视频观看 | 国产精品系列在线 | 欧美视频网址 | adn—256中文在线观看 | 精品国产综合区久久久久久 | 久久精品中文字幕 | 五月婷婷六月丁香在线观看 | 午夜国产福利在线 | 日韩精品久久久久久久电影竹菊 | 成人国产精品av | 国产亚洲婷婷 | 成人国产精品久久久久久亚洲 | 亚洲精品电影在线 | 高清色免费 | 欧美地下肉体性派对 | 韩国一区二区三区在线观看 | 波多野结衣一区三区 | 国产精品久久久久av免费 | 亚州免费视频 | 国产一级在线看 | 色香蕉在线视频 | 人人看97 | 久久精品99视频 | 视频 国产区 | 亚洲少妇自拍 | 精品五月天 | ,午夜性刺激免费看视频 | 久久新 | 欧美最新另类人妖 | 天天射狠狠干 | 成 人 黄 色 免费播放 | 日韩在线电影一区 | 蜜臀av夜夜澡人人爽人人 | 国内揄拍国产精品 | www狠狠操| 久久久www成人免费精品张筱雨 | 久久国内精品99久久6app | 成人av高清在线观看 | 亚洲黄色免费 | 国产精品手机视频 | 久久激情视频网 | 91视频这里只有精品 | 99这里精品| 精品国产精品国产偷麻豆 | 亚洲精品伦理在线 | 丁香花五月| www.天天操.com| 91福利视频在线 | 国产一区二区在线视频观看 | 欧美一级片免费 | 91视频在线| 在线免费av电影 | 亚洲影视九九影院在线观看 | 91精品视频免费看 | 日韩在线视频精品 | 五月婷婷中文 | 亚洲精品中文在线观看 | 婷婷久久久久 | 激情九九 | 麻豆成人精品视频 | 国产男女免费完整视频 | 国产精品成人在线观看 | 亚洲一区二区黄色 | 黄色三级免费观看 | 久久视频精品在线观看 | 久久激五月天综合精品 | 欧美日韩在线看 | 亚洲专区在线 | 日韩中文字幕免费看 | 成人av在线直播 | 一区二区三区影院 | 天天做综合网 | 久久久www成人免费毛片 | 欧美日高清视频 | av在线一级 | 国内精品久久久久久 | 欧美激情精品 | 色丁香久久 | 亚洲第一区在线观看 | 日韩精品aaa | www狠狠 | 精品久久91| 美女久久久 | 日韩精品免费在线 | 天天夜操| 亚洲精品视频一二三 | 天天色播 | 一区二区中文字幕在线 | 超碰在线最新网址 | 91精品1区 | 激情 一区二区 | 国产精品理论片 | 视频福利在线观看 | 午夜少妇 | 国产小视频精品 | 99视频在线 | 日日爱999 | 亚洲电影一区二区 | 911香蕉| 激情小说久久 | 免费观看成人 | 亚洲综合色播 | 中文在线字幕观看电影 | 黄色网址a| 国产a级精品| 在线电影 你懂得 | 婷婷色亚洲 | 久久精品视频在线 | 欧美做受高潮电影o | 人人揉人人揉人人揉人人揉97 | 亚洲精品国偷拍自产在线观看 | 日韩一级黄色片 | 亚洲电影黄色 | 在线看日韩av | 国产一级电影在线 | 成人av影院在线观看 | 国产午夜三级一二三区 | 综合网伊人 | 91精品视频在线看 | a电影免费看 | 久久久久久国产精品久久 | 久久r精品 | 91精品在线观看视频 | 在线影院中文字幕 | 精品久久一 | 国产亚洲在 | av成年人电影 | 精品久久久久久久久久久久久久久久久久 | 亚洲精品免费在线视频 | 国产精品欧美久久久久三级 | 久久久久亚洲精品男人的天堂 | 国产精品永久在线观看 | 99热在线看 | 国产精品麻豆果冻传媒在线播放 | 狠狠干电影 | 精品一区二区三区电影 | 久久婷婷视频 | 91看片成人| 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 99这里只有精品视频 | 成人资源在线观看 | 中文乱码视频在线观看 | 亚洲天堂精品 | www日| 免费在线一区二区三区 | 最近免费中文字幕mv在线视频3 | 波多野结衣视频一区 | 欧美日韩在线网站 | 午夜性福利 | 免费久久99精品国产婷婷六月 | 亚洲波多野结衣 | 日韩欧美aaa | 五月婷婷丁香在线观看 | 999一区二区三区 | 久久视频在线观看中文字幕 | 91精品对白一区国产伦 | 欧美va电影 | 亚洲精品乱码久久久久久按摩 | 伊人永久| 色综合天天爱 | 狠狠狠狠狠狠狠干 | av在线播放一区二区三区 | 五月婷婷激情五月 | 草草草影院 | 国产精品自产拍在线观看桃花 | 久草视频在线免费 | 欧美激情片在线观看 | 国内精品国产三级国产aⅴ久 | 亚洲三级视频 | 四虎在线免费观看视频 | 久久精品成人欧美大片古装 | 992tv在线成人免费观看 | 亚洲精品91天天久久人人 | 天天爽夜夜爽精品视频婷婷 | 久久国产精品一区二区三区 | 夜色资源站国产www在线视频 | 亚洲免费在线观看视频 | 91chinesexxx| 91亚洲精品久久久中文字幕 | 久久精品小视频 | 日韩在线观看视频网站 | 丰满少妇一级片 | 精品国产1区2区3区 国产欧美精品在线观看 | 夜夜骑首页 | 激情欧美丁香 | 国产精品免费一区二区 | 人人艹视频 | 天天操天天是 | 黄色影院在线播放 | 亚洲黄色成人网 | 黄色一级大片在线免费看产 | 国产成人精品一区二区三区 | www.com久久久| 国产高清视频在线免费观看 | 中文字幕在线视频精品 | 4438全国亚洲精品在线观看视频 | 91久久国产露脸精品国产闺蜜 | 日日夜夜精品网站 | 特级西西444www高清大视频 | 91在线视频免费91 | 国产女人40精品一区毛片视频 | 狠狠色丁香| 日本中文字幕电影在线免费观看 | 日韩夜夜爽 | 国产色女 | 一区二区三区四区精品 | 九九久久久久久久久激情 | 在线激情网 | 激情婷婷欧美 | 国产精品粉嫩 | 激情深爱.com | 欧美91精品国产自产 | 国产精品乱码一区二三区 | 精品国产a | 精品国产乱码一区二区三区在线 | 狠狠狠色狠狠色综合 | 少妇18xxxx性xxxx片 | 亚洲视频免费在线看 | 狠狠色噜噜狠狠狠狠2021天天 | 久久草在线精品 | 黄色小视频在线观看免费 | 高清不卡一区二区三区 | 国产99精品在线观看 | 久久av免费 | 久久成人在线视频 | 日韩丝袜视频 | 久久国产一区二区三区 | 国产一级一级国产 | 日韩一级电影在线 | 人人干在线 | 国产精品欧美久久久久无广告 | 999久久a精品合区久久久 | 91麻豆精品国产91久久久使用方法 | 天天操天天干天天插 | 国产精品毛片一区视频 | 国产激情久久久 | 亚洲午夜精品在线观看 | 色综合咪咪久久网 | 日韩精品高清视频 | 成人黄色电影免费观看 | 欧美少妇影院 | 成人在线免费观看网站 | 国产精品久久久久一区二区三区共 | 69夜色精品国产69乱 | 国产精品毛片久久久 | 成人在线免费小视频 | 成人欧美一区二区三区黑人麻豆 | 日韩在线视频观看 | 久久九九精品久久 | 成人免费一级片 | 最近更新好看的中文字幕 | 国产91精品一区二区麻豆网站 | 99热9| 91视频久久| 免费中文字幕在线观看 | 久久久久综合视频 | 色91av | 久草在线一免费新视频 | 日韩视频中文 | 日本韩国在线不卡 | 九九免费观看视频 | 六月色 | 欧美激情va永久在线播放 | 欧美日本一区 | 欧美疯狂性受xxxxx另类 | 一区二区激情 | 亚洲最大成人网4388xx | 在线观看中文字幕2021 |