精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

MTP in Android詳解

移動開發 Android
MTP的全稱是Media Transfer Protocol(媒體傳輸協議),它是微軟公司提出的一套媒體文件傳輸協議。Android從3.0開始支持MTP。不過,在今天的智能手機領域內,Google和微軟是一對冤家,為什么Android中會使用MTP呢?請看下文。

MTP的全稱是Media Transfer Protocol(媒體傳輸協議),它是微軟公司提出的一套媒體文件傳輸協議。Android從3.0開始支持MTP。

不過,在今天的智能手機領域內,Google和微軟是一對冤家,為什么Android中會使用MTP呢?請看下文。

 

 

一  背景知識介紹

筆者相信《程序員》雜志的絕大多數讀者或多或少都使用過MTP。因為早在智能手機普及前,數碼相機和MP3播放器等都使用了MTP的前身PTP(Picture Transfer Protocol)進行媒體文件傳輸。那時,只要通過USB數據線把它們連接上Windows操作系統,就能在“我的電腦“中見到這些設備了。此后,用戶可以把它們當做U盤一樣使用,例如對其進行目錄、文件的瀏覽和拷貝等操作。

既然可以通過MTP把智能設備當作U盤使用,那么它和我們常用的USB大容量存儲(USB Mass Storage,簡稱UMS)有何不同呢?

  • UMS模式下,PC操作存儲設備的粒度是設備塊(FAT block),而非文件系統。什么意思?此處舉一個簡單例子。當Android手機通過UMS將sdcard掛載到PC后,PC就擁有對sdcard的絕對控制權。這樣,手機就無法同時訪問sdcard了。這種做法帶來的后果就是Camera或Music程序將因沒有外部存儲空間而提示無法進行操作(注意,有些廠商的手機對此進行過修改,使得Camera能短時間錄制一部分視頻到內部存儲空間)。這也是Android早期版本中一個很明顯的特點。另外,由于PC在操作sdcard時可能弄壞其文件系統,這將導致sdcard重新掛載到手機后不能被識別。
  • 如果Android手機的sdcard以MTP模式掛載到PC機上,sdcard的控制權其實還是屬于手機。只不過智能手機通過MTP協議向PC機構建了一個虛擬文件系統。PC機操作其中的文件時,都會通過標準MTP協議向智能手機發起請求。另外,Android把MTP功能集成在MediaProvider中,其好處是PC機操作(例如拷貝或刪除等)媒體文件時,媒體數據都會及時更新到媒體數據庫中。而UMS模式下,當sdcard掛載回手機后,Android還得花較長時間重新掃描媒體文件以更新媒體數據庫。

MTP的好處還有很多,例如它可判斷PC機拷貝的媒體文件是否受目標手機支持,甚至可以觸發對應的轉碼程序將其轉換成手機支持的格式。不過和UMS相比,MTP也有不足之處:

  • 傳輸大文件的速度較慢。
  • MTP不能直接修改文件本身。只能先拷貝到本地修改,完畢后再拷貝回去。
  • 除了Windows外,Linux和MacOS對MTP支持還不是很完善。

下面我們將介紹MTP協議。

1.1  MTP協議介紹

根據協議,MTP的使用者包括兩個部分,分別是Initiator和Responder。如圖1-1所示:

圖1-1  Initiator和Responder圖示

由圖1-1可知:

  • Initiator:主要是指USB Host,例如PC機,筆記本等。協議規定所有MTP操作只能由Initator發起。
  • Responder:一般是諸如數碼相機、智能手機等存儲媒體文件的設備。Responder在MTP中的作用就是處理Initator發起的請求。同時,它還會根據自身狀態的變化發送Event以通知Initiator。

注意:后文我們將統一以PC代表Initiator,Android手機代表Responder。

與很多協議一樣,MTP也有自己的協議棧,如圖1-2所示:

圖1-2  MTP協議棧

由圖1-2可知,MTP協議棧由下到上分別是:

  • Pyshical Layer(物理層):物理層在MTP協議中用來傳輸數據。目前有三種物理層可供MTP使用。它們分別是USB:其主要特點是傳輸文件,同步媒體文件時速度快,而且可以邊工作邊充電,這是目前用的最多的一種方式;IP:基于IP的MTP(簡稱MTP/IP)將通過UPnP來匹配和發現設備。它是家庭網絡中是最理想的傳輸方式;Bluetooth:MTP/BT是最省電,同時也是速度最慢的一種傳輸方式,用處較少。
  • 傳輸層:MTP中,數據傳輸格式遵循PTP協議
  • 命令層:實現了MTP協議中的各種命令。

如上文所述,MTP采用命令-應答方式來工作(Initator發送命令給Responder處理,Responser反饋處理結果),這種方式的主要特點有:

  • 所有MTP命令均以Package(數據包)的方式在設備兩端進行傳遞。
  • Initiator必須接收到前一條消息的處理結果(不論是成功還是超時)后,才能發送下一條消息。

下面我們將以PC通過MTP打開一個文件為例,按順序介紹其中涉及到幾個主要MTP命令:

  • 當設備***次連接上PC后,Initiator(即PC)首先會發送一個名為GetDeviceInfo的請求以獲取設備的信息,這些信息包括設備所支持PTP版本的程度,以百分號表示(默認是100)、所支持的MTP命令(Operation Supported)、所支持的Event類型等。
  • 接著PC端會發送OpenSession命令以創建一個會話,該會話一直保持到設備從PC上斷開為止。此后所有命令(除GetDeviceInfo命令外)必須在此會話存活期間才能發送。會話在MTP協議中由SessionID來標識,它是一個32位的無符號整型,由PC選擇并傳給手機。
  • PC端如果要進行文件操作的話,必須從根目錄開始定位目標文件。由于Windows的特殊性,手機內部存儲卡在windows系統中顯示為盤符。注意,如果手機內部有兩塊存儲卡的話(如內部存儲卡和外部sd卡),Windows中會顯示為兩個盤符。PC端需要通過GetStorageIDs命令返回某個盤符對應的StorageID。在MTP中,StorageID是一個32位無符號整型,每一個StorageID代表了一個邏輯盤符。
  • PC端可以根據上一步的StorageID號,利用GetStorageInfo操作去獲取存儲設備的信息,例如剩余存儲空間、文件系統類型、訪問權限等。
  • 接著,PC就會通過GetObjectHandles命令來獲取此盤符下的文件和子目錄的Object Handles(一個Object Handle代表一個文件或目錄。該值由Responder生成并保證唯一性)。有了Object Handle,PC就可以操作這些文件或目錄了,例如繼續通過GetObjectHandles獲取某個目錄中子文件和子目錄的信息。
  • 假設現在需拷貝一個文件到手機上,那么PC會通過SendObjectInfo命令將文件信息(如文件名、文件大小)等傳遞給手機。而手機需要檢查目標目錄是否有足夠的空間和對應權限。
  • 如果一切正常,PC將通過SendObject把數據傳遞給手機。真正寫文件到設備存儲空間的則是手機中的Responder。Android實現的MTP還會在媒體文件傳輸完畢后,將信息更新到媒體數據庫中。
  • 除此之外,PC還可利用SetObjectPropValue 命令來設置文件的各種屬性值,如Audio BitRate(比特率),Sample Rate(采樣率),Number Of Channels(聲道)等。

以上為讀者描述了MTP使用的一個簡單案例。至于其中的各種MTP命令,讀者不妨閱讀參考文獻1,即《MTP Specification v1.0.pdf》。協議對各種命令都有非常精確的描述,例如表1-1,表1-2所示為GetDeviceInfo命令,返回值定義。其參數類型,傳遞方向都有詳細解釋(不得不說,和Linux比起來,微軟的開發/技術文檔做得相當到位)。

表1-1  GetDeviceInfo命令定義

Operation Code

0x1001

GetDeviceInfo對應命令的數字編號是0x1001

Data

DeviceInfo dataset

手機端返回的設備信息數據集

Data Direction

R->I

數據傳輸方向是手機到PC

ResponseCode Options

OK, Parameter_Not_Supported

手機給PC的返回值

表1-2所示為GetDeviceInfo的返回數據集的定義。

表1-2  GetDeviceInfo返回數據集的定義

Dataset field

Field order

Size (bytes)

Datatype

Comments

Standard Version

1

2

UINT16

手機對PTP協議的支持程度,以%表示,默認是100

MTP Vendor Extension ID

2

4

UINT32

手機對PTP廠商擴展協議的支持,默認是0xFFFFFFFF

MTP Version

3

2

UINT16

手機支持的MTP標準的版本,以%表示

MTP Extensions

4

Variable

String

手機支持的MTP擴展集

Functional Mode

5

2

UINT16

手機允許的模式

Operations Supported

6

Variable

Operation Code Array

在當前功能模式下,手機支持的所有操作

Event Supported

7

Variable

Event Code Array

在當前功能模式下,手機能產生的所有事件

Device Properties Supported

8

Variable

Device Property Code Array

在當前功能模式下,手機支持的所有設備屬性

Capture Formats

9

Variable

Object Format Code Array

手機可以自己生成的文件格式,不包括拷貝到手機上文件格式

Playback Formats

10

Variable

Object Format Code Array

手機可以解析和理解的所有格式類型

Manufacturer

11

Variable

String

人可讀的手機制造商的標識

Model

12

Variable

String

人可讀的手機型號

Device Version

13

Variable

String

手機的軟件或固件版本

Serial Number

14

Variable

String

能標明手機MTP功能的唯一序列號

 

1.2  OS對MTP的支持及認證

MTP協議既然由微軟提出,理所當然,Windows對其支持自然是不遺余力。目前Windows操作系統中,MTP和多媒體框架緊密結合,并且已經成為Windows Media框架中的重要一部分。如WMP10(Windows Media Player 10)和WMP11均內置對MTP功能,其中WMP11還新增對Playlist和Album art的支持。

微軟除了提出MTP協議并在Windows操作系統中提供大力支持外,它對使用MTP協議的設備也有所管理。所有標稱支持MTP協議的設備,必須通過微軟的測試WLK(Windows Logo Kit)。WLK測試通過的設備可以獲得一個徽標。關于WLK測試的詳細信息,請讀者參考http://msdn.microsoft.com/zh-cn/library/windows/hardware/gg487530.aspx。從以上鏈接中也能下載到wpdmon,它是MTP開發中最常用的測試工具,可顯示出所有PC與手機進行MTP操作時發送的命令、數據及返回值。圖1-3為筆者測試某臺Android手機的MTP功能時用wpdmon截獲的信息示意圖:

圖1-3  wpdmon工具使用示意圖

下面我們來看MTP在Android平臺中的實現。

#p#

二  Android中的MTP

Android從3.0開始集成MTP功能,主要原因有三個:

  • 手機要支持UMS的話,必須有一個sd卡,因為sd卡往往采用Windows支持的分區格式。如果想把內部存儲空間通過UMS掛載到Windows上,則內部存儲空間需采用特定的分區格式。這對某些手機而言根本不可行。因為內部存儲空間本身可能是一個設備,它們采用統一的分區格式。不能因為需要使用UMS,而再增加一塊特定分區格式的存儲設備。
  • UMS掛載到PC后,PC操作系統擁有絕對控制權。此時,Android系統將無法操作這些設備。根據前文舉的Camera例子而言,這對越來越高級的Android版本而言是不可接受的。
  • 另外一個不可忽略的事實就是Windows操作系統在普通勞動人民那兒依然占據極高的市場份額。這恐怕也是明知Linux、MacOS對MTP支持力度不夠,Android也要集成它的一個重要原因吧。

2.1  Android中MTP的代碼架構

要使用MTP功能,首先需要在設置中啟用USB連接模式為MTP,如圖1-4所示:

圖1-4  Settings中的MTP設置

圖1-4所示為參考機(Android 4.1版本)中“USB連接模式”設置。該操作實際上會觸發USB驅動做相應變動。本文不擬討論其中的過程,讀者可參考手機中init.platform-name.usb.rc文件以查看Android系統中USB的模式設置。從目前市面上發布的數款Android 4.0及后續版本的機型來看,MTP/PTP大有取代UMS的趨勢。

根據前文所述,Android中的MTP和已有的MediaProvider模塊結合緊密,以更好體現“Media Transfer”的特性。其主要結構如圖1-5所示:

圖1-5  Android MTP架構圖

由圖1-5可知,Android MTP架構由下到上分別是:

  • C++層包括幾個主要對象,如MtpRequestPacke負責從USB驅動讀取數據,并結構化命令格式及其參數、MtpDataPacket負責結構化手機要返回給PC的數據包、MtpResponsePacket負責結構化手機要給PC返回的response。MtpServer負責解析來自PC的命令并調用相應的接口函數進行處理。
  • Java層包括UsbReceiver、MtpService、MtpServer等對象。其中UsbReceiver用來監視USB事件,判斷何時啟動或停止MtpService。MtpService負責啟動MtpServer和加載存儲設備的信息到數據庫。MtpServer負責通過jni接口去啟動/停止C++層中MtpServer以及處理Storage的添加和刪除。MediaProvider則負責查詢和更新數據庫。MtpDatabase名字雖然叫Database,但實際功能用于在MediaProvider和MtpServer之間轉換數據格式。例如把MTP傳遞過來的信息(如文件大小、文件路徑等)轉換成MediaProvider需要的格式以方便其更新數據庫。

下面我們來看MTP的工作流程。

2.2  MTP流程分析

我們先來看MTP模塊啟動的流程,如圖1-6所示:

圖1-6  MTP主要模塊啟動流程

由圖1-6可知:

  • 當手機連上usb線后,UsbReceiver會收到來自系統的USB_STATE廣播事件。接著它需要從UsbManager中查詢USB的鏈接狀態,MTP的設置信息和PTP的設置信息。當用戶設置為使用MTP模式時,UsbReceiver將通過startService函數啟動MtpService。
  • MtpService啟動,在其onStartCommand中將創建MtpDatabase對象和MtpServer對象。
  • UsbReceiver同時通過insert一條特殊uri(值為“content://media/none/mtp_connected”)的方式,觸發MdiaProvder調用MtpService的bindService函數。這樣,MediaProvider和MtpService就建立了緊密聯系。

MtpServer是Android平臺中MTP協議處理的核心模塊,它會單獨啟動一個線程用于接收PC端的命令,其代碼如圖1-7所示:

圖1-7  MtpServer run函數代碼片段

由圖1-7可知,MtpServer不斷從文件描述符讀取請求,然后調用handleRequest進行處理。***把處理結果返回給對端。

從這段代碼讀者可以發現,Android MTP命令層和物理層之間的耦合度較低,這樣也方便將來實現MTP/IP功能。

接下來我們看看PC端發送SendObjectInfo的處理流程,如圖1-8所示:

圖1-8  sendObjectInfo處理流程圖

由圖1-8可知SendObjectInfo的處理流程大體步驟如下:

  • PC發SendObjectInfo命令給MtpServer。MtpServer需要檢查存儲設備剩余空間、可支持的***文件大小。如果一切正常的話,它會通過MediaProvider的insert函數往媒體數據庫中加入一條數據項。
  • 接著PC通過SendObject將文件內容傳遞給給MtpServer。而MtpServer就會創建該文件,并把數據寫到文件中。
  • 當文件數據發送完畢,MtpServer調用endSendObject。而endObject則會觸發MediaScanner進行媒體文件掃描。當然,掃描完后,該文件攜帶的媒體信息(假如是MP3文件的話,則會把專輯信息、歌手、流派、長度等內容)加入到媒體數據庫中。

通過對SendObjectInfo描述,我們也可看出,Android充分利用了其平臺本身的特性,真正將媒體傳輸協議和媒體文件掃描恰到好處得結合起來,從而發揮了MTP***功效。

三  總結

本文主要對Android中的MTP進行了相關介紹。雖然MTP協議由微軟提供,但因為歷史原因,其使用程度相當廣泛,以至于Android也提供了最基本的MTP實現。

當然,如果要做到真正實用并通過微軟認證,手機廠商還需要在此基礎上做進一步的開發。結合筆者自己的使用經歷,國外大牌手機廠商例如Sony、Samsung、Nokia等對MTP的支持相當到位。相比而言,國內手機廠商的起步稍微晚一點,需要投入更多的精力才能超越。另外,隨著無線技術的普及,MTP基于IP的實現也將極大方面用戶的使用。筆者在此希望大家能一起努力,早日讓用戶從USB數據線中解放出來。

責任編輯:張葉青 來源: 博客園
相關推薦

2015-03-10 10:53:29

2014-07-28 10:09:30

Android

2011-05-27 15:02:15

Android ListView

2017-01-11 19:05:45

AndroidAndroid Loa詳解

2014-07-24 09:11:34

2013-11-14 16:50:08

2013-12-25 09:34:26

Android SDKAndroid組件

2010-07-13 09:02:19

Widget開發

2021-09-07 08:49:35

Android

2011-09-09 20:14:58

Android Wid

2013-01-11 13:48:41

Android開發組件Notificatio

2013-01-10 14:39:28

Android開發Content Pro組件

2013-01-05 09:21:55

Ubuntu for UbuntuAndroid

2010-01-28 14:07:59

Android Ale

2009-11-30 16:38:30

Android

2010-02-03 15:59:08

Android組件

2010-01-28 10:31:32

Android使用SD

2013-07-29 15:13:35

2011-09-07 13:18:40

Android Wid

2011-05-31 09:36:46

Android 布局屬性
點贊
收藏

51CTO技術棧公眾號

成人av在线播放观看| 国产精品日日摸夜夜添夜夜av| 一区二区日本伦理| 国产又黄又粗又猛又爽| 天天综合一区| 亚洲精品久久久久久久久久久久久 | 亚洲精品永久www嫩草| 国产深喉视频一区二区| 在线亚洲一区| 久久韩剧网电视剧| 91视频啊啊啊| www欧美在线观看| 欧美日韩另类字幕中文| 影音先锋亚洲视频| 少妇性bbb搡bbb爽爽爽欧美| 蜜臀久久久99精品久久久久久| 欧美精品一区二区三区高清aⅴ | 岛国最新视频免费在线观看| 国产美女精品人人做人人爽| 欧美一区亚洲一区| 亚洲一级生活片| 亚洲永久精品唐人导航网址| 欧美久久婷婷综合色| 欧美 国产 综合| 97caopron在线视频| 91麻豆精品一区二区三区| 成人欧美一区二区三区黑人| 韩国av中文字幕| 欧美黄色aaaa| 日韩亚洲一区二区| 丁香花五月婷婷| 欧美变态网站| 精品人在线二区三区| 午夜免费看毛片| 欧美不卡高清一区二区三区| 午夜久久福利影院| 91大学生片黄在线观看| 92国产在线视频| 久久精品无码一区二区三区| 精品国产一区二区三区四区精华| 欧美在线观看不卡| 亚洲国产黄色| 久久久久久久久久久成人| 中文字幕乱码av| 成人羞羞网站入口免费| 亚洲人成伊人成综合网久久久| 天天视频天天爽| 亚洲综合av一区二区三区| 日韩欧美aⅴ综合网站发布| 国产精品50p| 日本黄色免费在线| 日韩欧美国产黄色| jizzjizzxxxx| 精品国产免费人成网站| 色婷婷综合在线| 国产成人黄色片| 亚洲永久av| 色久优优欧美色久优优| 日本999视频| xx欧美视频| 色偷偷一区二区三区| 久久精品视频91| 日韩不卡在线| 制服丝袜一区二区三区| 国产一区二区在线观看免费视频| hd国产人妖ts另类视频| 亚洲欧美一区二区三区久本道91| 国产视频一区二区三区四区| 内射无码专区久久亚洲| 91网站在线观看视频| 欧美aaaaa喷水| 美女毛片在线看| 中文字幕av一区二区三区高| 婷婷久久青草热一区二区 | 激情小说亚洲| 欧美日韩www| 亚洲美女高潮久久久| 国产精品白浆| 国产一区二区三区久久精品| 国产又黄又粗又猛又爽的| 一区二区三区毛片免费| 久久久久久亚洲精品不卡| 欧美特黄aaaaaa| 欧美aaaaaa午夜精品| 亚洲aa中文字幕| 亚洲精品97久久中文字幕| 97精品久久久午夜一区二区三区| 91精品一区二区| 亚洲国产精品无码久久| 91麻豆123| 亚洲图色在线| wwww亚洲| 欧美午夜在线一二页| 国产精品二区视频| 亚洲国产合集| 欧美精品日韩三级| 中日韩黄色大片| 久久成人麻豆午夜电影| 国产伦精品一区二区三区照片91| 国产高清视频免费观看| 99热这里都是精品| 婷婷四房综合激情五月| 福利在线导航136| 欧美三级在线视频| 国产av一区二区三区传媒| 国产一区网站| 久久久久久久久电影| 一级全黄少妇性色生活片| 懂色av一区二区在线播放| 老牛影视免费一区二区| а√天堂8资源在线官网| 黑人与娇小精品av专区| 永久免费黄色片| 国产一区二区三区四区五区传媒| 日韩成人高清在线| 麻豆明星ai换脸视频| 久热精品在线| 国产高清一区视频| 蜜芽在线免费观看| 在线日韩一区二区| 99re久久精品国产| 综合天堂久久久久久久| 国产精品丝袜视频| 天堂av在线播放| 亚洲一线二线三线久久久| 天天干天天av| 日韩伦理一区| 国产成人精品视| 手机av免费在线观看| 亚洲激情图片一区| 欧美特黄aaa| 波多野结衣的一区二区三区| 2019国产精品自在线拍国产不卡| 国产精品人人人人| 成人av在线网站| 激情五月婷婷六月| 亚洲91网站| 久久久av免费| 91丨九色丨蝌蚪丨对白| 国产精品私人自拍| 黄色一级二级三级| 国产一区二区精品久| 日韩av手机在线看| 欧美男男激情freegay| 欧美日韩亚洲精品一区二区三区| 亚洲精品自拍网| 精品视频99| 国产精品久久在线观看| 国产福利第一视频在线播放| 一本一本大道香蕉久在线精品 | 欧美理论电影在线观看| 亚洲一区二区色| 国产精品网友自拍| 亚洲美女爱爱视频| 亚洲国产老妈| www 成人av com| 国产色播av在线| 日韩精品在线观| 中文字幕日韩免费| 国产精品三级在线观看| 国产亚洲视频一区| 一级欧洲+日本+国产| 97久久人人超碰caoprom欧美| 毛片在线播放网址| 欧美日韩美女视频| 欧美成人国产精品一区二区| 免费高清不卡av| 中文字幕一区二区中文字幕 | 色网综合在线观看| 亚洲精品视频网址| 国产综合色精品一区二区三区| 蜜桃麻豆91| 九色成人搞黄网站| 久久精品久久久久电影| 超碰在线人人干| 色综合天天视频在线观看| 色哟哟一一国产精品| 国产精品1区2区| 免费在线观看视频a| 国产成人久久| 91视频最新| 欧美magnet| 久久影院中文字幕| 婷婷综合激情网| 欧美日韩亚洲综合在线| 欧美人妻精品一区二区三区| 99re在线视频这里只有精品| 久久久精品三级| 国产精品www.| 欧洲国产精品| 在线精品国产亚洲| 国产精品1234| 丁香影院在线| 丝袜亚洲欧美日韩综合| 三级网站在线看| 欧美日本一区二区在线观看| 日本视频免费在线| 日韩理论在线观看| 菠萝菠萝蜜网站| 国产一区二区三区国产| 国产成人av影视| 国产精品av久久久久久麻豆网| 国产精品美乳在线观看| 91黄色在线| 一区二区三区回区在观看免费视频| 日韩久久中文字幕| 亚洲欧美经典视频| 国产探花视频在线播放| 国产高清不卡二三区| 久草福利视频在线| 国产日韩欧美一区| 肉大捧一出免费观看网站在线播放| 永久免费精品视频| 国产精品旅馆在线| 中文字幕高清在线播放| 久精品免费视频| 米奇精品一区二区三区| 亚洲视频专区在线| 噜噜噜久久,亚洲精品国产品| 亚洲国产欧美日韩另类综合| 夫妇交换中文字幕| 国产午夜久久久久| 国产肉体xxxx裸体784大胆| 国产综合色精品一区二区三区| 国产乱子伦精品视频| 成人激情电影在线| 欧美日韩亚洲在线| 日本午夜精品| 国产伦一区二区三区色一情| 青青伊人久久| 国产久一一精品| 亚洲wwww| 国产成人激情视频| 中文在线8资源库| 欧美一区二区影院| 自拍在线观看| 青青精品视频播放| 伊人色综合一区二区三区影院视频| 尤物yw午夜国产精品视频| 亚洲欧美日韩动漫| 亚洲精品456在线播放狼人| 欧美熟妇交换久久久久久分类| 在线观看亚洲精品| 久久久精品视频网站| 在线影视一区二区三区| 一级片免费在线播放| 色婷婷av一区| 欧美亚洲另类小说| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产suv精品一区二区68| 国产精品久久久久久久久晋中| 一级片黄色免费| 国产精品2024| 成人做爰www看视频软件| 国产精品白丝jk白祙喷水网站| 99久久久无码国产精品6| 香蕉视频成人在线观看| aⅴ在线免费观看| 美日韩一区二区三区| 污污视频网站在线| 国产激情一区二区三区桃花岛亚洲| 国产精品欧美激情在线观看| 亚洲一区免费| 在线免费视频a| 激情综合色综合久久综合| 午夜激情影院在线观看| 国产suv一区二区三区88区| 波多野结衣视频播放| 久久网站热最新地址| 在线观看亚洲大片短视频| 亚洲精品写真福利| 国产成人精品a视频一区| 91福利在线看| 97人妻人人澡人人爽人人精品| 91精品办公室少妇高潮对白| 伊人网中文字幕| 在线综合亚洲欧美在线视频| 亚洲高清视频在线播放| 亚洲免费av网址| 在线免费av电影| 久久久久女教师免费一区| 亚洲人成在线网站| 成人免费观看a| 米奇精品关键词| 先锋在线资源一区二区三区| 欧美视频导航| 三级在线免费看| 成人精品在线视频观看| 人妻少妇无码精品视频区| 亚洲色大成网站www久久九九| 成人午夜免费影院| 亚洲韩国一区二区三区| 18国产免费视频| 精品久久一区二区| av网站在线播放| 欧美大片免费看| 视频在线日韩| 国产日韩亚洲精品| 999久久久国产精品| 久久久久久久中文| 国产伦精一区二区三区| 国产色视频一区二区三区qq号| 91毛片在线观看| 久久久久久久麻豆| 一本久久a久久精品亚洲| 国产成人精品一区二三区四区五区| 欧美年轻男男videosbes| 五月天福利视频| 欧美成人免费视频| www.久久| 欧美日韩综合久久| 亚洲黄色免费| 中文字幕第66页| 欧美韩国一区二区| 99热只有这里有精品| 日韩一区和二区| 欧美性猛交xxx乱大交3蜜桃| 热re91久久精品国99热蜜臀| 一区二区在线视频观看| 一区二区三区我不卡| 蜜桃伊人久久| 色噜噜在线观看| 亚洲va欧美va人人爽| 99视频在线观看免费| 日韩中文理论片| 天然素人一区二区视频| 欧美激情专区| 国产精品乱看| 亚洲欧美日本一区| 亚洲观看高清完整版在线观看| 免费污污视频在线观看| 精品国产电影一区二区| 91三级在线| 成人情视频高清免费观看电影| 欧美人体视频| 我的公把我弄高潮了视频| 成人精品视频一区| 国产第一页在线播放| 欧美大片在线观看一区二区| 精品自拍一区| 91精品视频观看| 欧美/亚洲一区| 国产免费a级片| 亚洲午夜久久久久| 日韩性xxxx| 91国产美女视频| 亚洲电影男人天堂| 日韩亚洲在线视频| 亚洲国产精品精华液2区45| 波多野结衣视频观看| 国产一区二区三区视频 | 日本不卡高字幕在线2019| 牛牛影视一区二区三区免费看| 亚洲人体一区| 久99久精品视频免费观看| 黄色片子在线观看| 日韩欧美的一区二区| 成全电影大全在线观看| 久久偷窥视频| 久久资源在线| 国产在线免费av| 欧美片网站yy| 在线电影福利片| 国产偷国产偷亚洲高清97cao| 久久一级电影| 中文字幕第66页| 婷婷激情综合网| yourporn在线观看视频| 成人在线精品视频| 欧美777四色影| 色天使在线视频| 欧美少妇bbb| 羞羞电影在线观看www| 久久久久免费网| 麻豆高清免费国产一区| 91视频综合网| 亚洲九九九在线观看| 国产美女久久| 亚洲色欲久久久综合网东京热| 激情综合五月婷婷| 日本一二三区视频| 在线看欧美日韩| 亚洲开心激情| 无码人妻丰满熟妇区毛片| 专区另类欧美日韩| 老司机午夜福利视频| 欧美整片在线观看| 小小影院久久| 人妻熟女aⅴ一区二区三区汇编| 五月天久久比比资源色| 成人影院免费观看| 福利精品视频| 日韩精品一二区| 亚洲精品在线观看av| 国产亚洲精品成人av久久ww| 人人爱人人干婷婷丁香亚洲| 日韩精品一区二区三区久久| 亚洲欧洲精品一区二区三区不卡| 中文人妻熟女乱又乱精品| 久久久久久久久久久国产|