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

深入探討Android傳感器

移動開發 Android
Android 是一個面向應用程序開發的富平臺,它擁有許多具有吸引力的用戶界面元素和數據管理功能。Android 還提供了一組豐富的接口選項。在本文中,學習如何配合使用 Android 的各種傳感器選項監控您的環境。樣例代碼展示了如何在 Android 電話中錄制音頻。想構建自己的嬰兒監視器嗎?想用聲音來接聽電話或者打開房門嗎?請學習如何利用配備有 Android 的設備的硬件功能。

對于Java開發人員來說,Android 平臺是通過使用硬件傳感器創建創新應用程序的理想平臺。我們將學習一些可用于 Android 應用程序的接口連接選項,包括使用傳感器子系統和錄制音頻片段。

利用配備Android 的設備的硬件功能可以構建哪些應用程序呢?任何需要電子監視和監聽的應用程序都可以構建。嬰兒監視器、安全系統,甚至地震儀都可以。理論上講,您不能同時 出現在兩個地方,但 Android 可以利用一些可行的方法實現這一點。縱觀本文始末,您必須記住,使用的 Android 設備不僅僅局限于 “手機”,還可以是部署在固定位置、具有無線網絡連接的設備,比如 EDGE 或 WiFi。

使用 Android 平臺有一個很新穎的地方,那就是您可以在設備內部訪問一些 “好工具”。過去,訪問設備底層硬件的能力一度讓移動開發人員感到非常棘手。盡管 Android Java 環境的角色仍然是您和設備的橋梁,但 Android 開發團隊讓許多硬件功能浮出了水面。該平臺是一個開源平臺,因此您可以自由地編寫代碼實現您的任務。

如果尚未安裝 Android,您可以 下載 Android SDK。您還可以 瀏覽 android.hardware 包的內容并參考本文的示例。android.media 包 包含了一些提供有用和新穎功能的類。

Android SDK 中包含的一些面向硬件的功能描述如下。

表 1. Android SDK 中提供的面向硬件的特性

特性 描述
android.hardware.Camera 允許應用程序與相機交互的類,可以截取照片、獲取預覽屏幕的圖像,修改用來治理相機操作的參數。
android.hardware.SensorManager 允許訪問 Android 平臺傳感器的類。并非所有配備 Android 的設備都支持 SensorManager 中的所有傳感器,雖然這種可能性讓人非常興奮。(可用傳感器的簡介見下文)
android.hardware.SensorListener 在傳感器值實時更改時,希望接收更新的類要實現的接口。應用程序實現該接口來監視硬件中一個或多個可用傳感器。例如,本文中的 代碼 包含實現該接口的類,實現后可以監視設備的方向和內置的加速表。
android.media.MediaRecorder 用于錄制媒體樣例的類,對于錄制特定位置(比如嬰兒保育)的音頻活動非常有用。還可以分析音頻片段以便在訪問控件或安全應用程序時進行身份鑒定。例如,它可以幫助您通過聲音打開門,以節省時間,不需要從房產經紀人處獲取鑰匙。
android.FaceDetector 允許對人臉(以位圖形式包含)進行基本識別的類。不可能有兩張完全一樣的臉。可以使用該類作為設備鎖定方法,無需記密碼 — 這是手機的生物特征識別功能。
android.os.* 包含幾個有用類的包,可以與操作環境交互,包括電源管理、文件查看器、處理器和消息類。和許多可移動設備一樣,支持 Android 的電話可能會消耗大量電能。讓設備在正確的時間 “醒來” 以監視感興趣的事件是在設計時需要首先關注的方面。
java.util.Date
java.util.Timer
java.util.TimerTask
當測量實際的事件時,數據和時間往往很重要。例如,java.util.Date 類允許您在遇到特定的事件或狀況時獲取時間戳。您可以使用 java.util.Timer 和 java.util.TimerTask 分別執行周期性任務或時間點任務。

android.hardware.SensorManager 包含幾個常量,這表示 Android 傳感器系統的不同方面,包括:

傳感器類型

方向、加速表、光線、磁場、臨近性、溫度等。

采樣率

最快、游戲、普通、用戶界面。當應用程序請求特定的采樣率時,其實只是對傳感器子系統的一個提示,或者一個建議。不保證特定的采樣率可用。

準確性

高、低、中、不可靠。

SensorListener 接口是傳感器應用程序的中心。它包括兩個必需方法:

onSensorChanged(int sensor,float values[]) 方法在傳感器值更改時調用。該方法只對受此應用程序監視的傳感器調用(更多內容見下文)。該方法的參數包括:一個整數,指示更改的傳感器;一個浮點值數組,表示傳感器數據本身。有些傳感器只提供一個數據值,另一些則提供三個浮點值。方向和加速表傳感器都提供三個數據值。

當傳感器的準確性更改時,將調用 onAccuracyChanged(int sensor,int accuracy) 方法。參數包括兩個整數:一個表示傳感器,另一個表示該傳感器新的準確值。

要與傳感器交互,應用程序必須注冊以偵聽與一個或多個傳感器相關的活動。注冊使用 SensorManager 類的 registerListener 方法完成。本文中的 代碼示例 演示了如何注冊和注銷 SensorListener。

記住,并非所有支持 Android 的設備都支持 SDK 中定義的所有傳感器。如果某個傳感器無法在特定的設備上使用,您的應用程序就會適當地降級。

樣例應用程序僅監控對方向和加速表傳感器的更改(源代碼見 下載)。當收到更改時,傳感器值在 TextView 小部件的屏幕上顯示。圖 1 展示了該應用程序的運行情況。

圖 1. 監視加速和方向

監視加速和方向

使用 Eclipse 環境和 Android Developer Tools 插件創建的應用程序。(關于使用 Eclipse 開發 Android 應用程序的信息,請參見 參考資料。)清單 1 展示了該應用程序的代碼。

清單 1. IBMEyes.java

  1. package com.msi.ibm.eyes; 
  2. import android.app.Activity; 
  3. import android.os.Bundle; 
  4. import android.util.Log; 
  5. import android.widget.TextView; 
  6. import android.hardware.SensorManager; 
  7. import android.hardware.SensorListener; 
  8. public class IBMEyes extends Activity implements SensorListener { 
  9. final String tag = "IBMEyes"
  10. SensorManager sm = null
  11. TextView xViewA = null
  12. TextView yViewA = null
  13. TextView zViewA = null
  14. TextView xViewO = null
  15. TextView yViewO = null
  16. TextView zViewO = null
  17.  
  18. /** Called when the activity is first created. */ 
  19. @Override 
  20. public void onCreate(Bundle savedInstanceState) { 
  21. super.onCreate(savedInstanceState); 
  22. // get reference to SensorManager 
  23. sm = (SensorManager) getSystemService(SENSOR_SERVICE); 
  24. setContentView(R.layout.main); 
  25. xViewA = (TextView) findViewById(R.id.xbox); 
  26. yViewA = (TextView) findViewById(R.id.ybox); 
  27. zViewA = (TextView) findViewById(R.id.zbox); 
  28. xViewO = (TextView) findViewById(R.id.xboxo); 
  29. yViewO = (TextView) findViewById(R.id.yboxo); 
  30. zViewO = (TextView) findViewById(R.id.zboxo); 
  31. public void onSensorChanged(int sensor, float[] values) { 
  32. synchronized (this) { 
  33. Log.d(tag, "onSensorChanged: " + sensor + ", x: " +  
  34. values[0] + ", y: " + values[1] + ", z: " + values[2]); 
  35. if (sensor == SensorManager.SENSOR_ORIENTATION) { 
  36. xViewO.setText("Orientation X: " + values[0]); 
  37. yViewO.setText("Orientation Y: " + values[1]); 
  38. zViewO.setText("Orientation Z: " + values[2]); 
  39. if (sensor == SensorManager.SENSOR_ACCELEROMETER) { 
  40. xViewA.setText("Accel X: " + values[0]); 
  41. yViewA.setText("Accel Y: " + values[1]); 
  42. zViewA.setText("Accel Z: " + values[2]); 
  43. }  
  44.  
  45. public void onAccuracyChanged(int sensor, int accuracy) { 
  46. Log.d(tag,"onAccuracyChanged: " + sensor + ", accuracy: " + accuracy); 
  47. @Override 
  48. protected void onResume() { 
  49. super.onResume(); 
  50. // register this class as a listener for the orientation and accelerometer sensors 
  51. sm.registerListener(this,  
  52. SensorManager.SENSOR_ORIENTATION |SensorManager.SENSOR_ACCELEROMETER, 
  53. SensorManager.SENSOR_DELAY_NORMAL); 
  54.  
  55. @Override 
  56. protected void onStop() { 
  57. // unregister listener 
  58. sm.unregisterListener(this); 
  59. super.onStop(); 
  60. }  

編寫應用程序必須基于常見的活動,因為它只是利用從傳感器獲取的數據更新屏幕。在設備可能在前臺執行其他活動的應用程序中,將應用程序構建為服務可能更加合適。

該活動的 onCreate 方法可以引用 SensorManager,其中包含所有與傳感器有關的函數。onCreate 方法還建立了對 6 個 TextView 小部件的引用,您需要使用傳感器數據值更新這些小部件。

onResume() 方法使用對 SensorManager 的引用通過 registerListener 方法注冊傳感器更新:

第一個參數是實現 SensorListener 接口的類的實例。

第二個參數是所需傳感器的位掩碼。在本例中,應用程序從 SENSOR_ORIENTATION 和 SENSOR_ACCELEROMETER 請求數據。

第三個參數是一個系統提示,指出應用程序更新傳感器值所需的速度。

應用程序(活動)暫停后,需要注銷偵聽器,這樣以后就不會再收到傳感器更新。這通過 SensorManager 的 unregisterListener 方法實現。惟一的參數是 SensorListener 的實例。

在 registerListener 和 unregisterListener 方法調用中,應用程序使用關鍵字 this。注意類定義中的 implements 關鍵字,其中聲明了該類實現 SensorListener 接口。這就是要將它傳遞到 registerListener 和 unregisterListener 的原因。

SensorListener 必須實現兩個方法 onSensorChange 和 onAccuracyChanged。示例應用程序不關心傳感器的準確度,但關注傳感器當前的 X、Y 和 Z 值。onAccuracyChanged 方法實質上不執行任何操作;它只在每次調用時添加一個日志項。

似乎經常需要調用 onSensorChanged 方法,因為加速表和方向傳感器正在快速發送數據。查看第一個參數確定哪個傳感器在發送數據。確認了發送數據的傳感器之后,將使用方法第二個參數傳遞的浮點 值數組中所包含的數據更新相應的 UI 元素。該示例只是顯示這些值,但在更加高級的應用程序中,還可以分析這些值,比較原來的值,或者設置某種模式識別算法來確定用戶(或外部環境)的行為。

現在您已經了解了傳感器子系統,接下來的部分將回顧一個在 Android 手機上錄制音頻的代碼樣例。該樣例運行在 DEV1 開發設備上。

使用 MediaRecorder

android.media 包包含與媒體子系統交互的類。使用 android.media.MediaRecorder 類進行媒體采樣,包括音頻和視頻。MediaRecorder 作為狀態機運行。您需要設置不同的參數,比如源設備和格式。設置后,可執行任何時間長度的錄制,直到用戶停止。

清單 2 包含的代碼在 Android 設備上錄制音頻。顯示的代碼不包括應用程序的 UI 元素(完整源代碼見 下載)。

清單 2. 錄制音頻片段

  1. MediaRecorder mrec ; 
  2. File audiofile = null
  3. private static final String TAG="SoundRecordingDemo"
  4. protected void startRecording() throws IOException  
  5. mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 
  6. mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
  7. mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
  8. if (mSampleFile == null)  
  9. File sampleDir = Environment.getExternalStorageDirectory(); 
  10. try 
  11. {  
  12. audiofile = File.createTempFile("ibm"".3gp", sampleDir); 
  13. catch (IOException e)  
  14. Log.e(TAG,"sdcard access error"); 
  15. return
  16. mrec.setOutputFile(audiofile.getAbsolutePath()); 
  17. mrec.prepare(); 
  18. mrec.start(); 
  19. protected void stopRecording()  
  20. mrec.stop(); 
  21. mrec.release(); 
  22. processaudiofile(audiofile.getAbsolutePath()); 
  23. protected void processaudiofile()  
  24. ContentValues values = new ContentValues(3); 
  25. long current = System.currentTimeMillis(); 
  26. values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName()); 
  27. values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000)); 
  28. values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp"); 
  29. values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath()); 
  30. ContentResolver contentResolver = getContentResolver(); 
  31.  
  32. Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
  33. Uri newUri = contentResolver.insert(base, values); 
  34.  
  35. sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri)); 

在 startRecording 方法中,實例化并初始化 MediaRecorder 的實例:

輸入源被設置為麥克風(MIC)。

輸出格式被設置為 3GPP(*.3gp 文件),這是移動設備專用的媒體格式。

編碼器被設置為 AMR_NB,這是音頻格式,采樣率為 8 KHz。NB 表示窄頻。SDK 文檔 解釋了不同的數據格式和可用的編碼器。

音頻文件存儲在存儲卡而不是內存中。External.getExternalStorageDirectory() 返回存儲卡位置的名稱,在該目錄中將創建一個臨時文件名。然后,通過調用 setOutputFile 方法將文件關聯到 MediaRecorder 實例。音頻數據將存儲到該文件中。

調用 prepare 方法完成 MediaRecorder 的初始化。準備開始錄制流程時,將調用 start 方法。在調用 stop 方法之前,將對存儲卡上的文件進行錄制。release 方法將釋放分配給 MediaRecorder 實例的資源。

音頻采樣完成之后,需要采取以下步驟:

向設備的媒體庫添加該音頻。

執行一些模式識別步驟確定聲音:

  • 這是嬰兒的啼哭聲嗎? 
  • 這是所有人的聲音嗎?是否要解鎖手機? 
  • 這是 “芝麻開門” 嗎?是否要打開通往 “秘密通道” 的大門? 

自動將音頻文件上傳到網絡位置以便處理。

在該代碼樣例中,processaudiofile 方法將音頻添加到媒體庫。使用 Intent 通知設備上的媒體應用程序有新內容可用。

關于該代碼片段最后要注意的是:如果您試用,它一開始不會錄制音頻。您將看到創建的文件,但是沒有任何音頻。您需要向 AndroidManifest.xml 文件添加權限:

  1. <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission> 

現在,您已經學了一點關于與 Android 傳感器和錄制音頻相關的內容。下一節將更全面的介紹與數據采集和報告系統有關的應用程序架構。

Android 作為傳感器平臺

Android 平臺包含各種用于監視環境的傳感器選項。有了輸入或模擬選項數組,以及高級計算和互聯功能,Android 成為構建實際系統的最佳平臺。圖 2 顯示了輸入、應用程序邏輯、通知方法或輸出之間的簡單視圖。

圖 2. 以 Android 為中心的傳感器系統的方塊圖

以 Android 為中心的傳感器系統的方塊圖

該架構很靈活;應用程序邏輯可以劃分為本地 Android 設備和服務器端資源(可以實現更大的數據庫和計算功能)。例如,本地 Android 設備上錄制的音軌可以 POST 到 Web 服務器,其中將根據音頻模式數據庫比較數據。很明顯,這僅僅是冰山一角。希望您能更深入地研究,讓 Android 平臺超越移動電話的范疇。

結束語

在本文中,我們介紹了 Android 傳感器。樣例應用程序度量了方向和加速,以及使用 MediaRecorder 類與錄制功能進行交互。對于構建實際系統,Android 是一個靈活、有吸引力的平臺。Android 領域發展迅速,并且不斷壯大。請務必關注該平臺。

責任編輯:佚名 來源: 開源中國社區
相關推薦

2011-02-25 09:23:00

Java類加載器

2009-11-12 13:56:54

2017-01-03 17:57:46

Android異步精髓Handler

2009-12-23 16:13:00

WPF Attache

2009-11-20 17:17:08

Oracle函數索引

2021-05-17 05:36:02

CSS 文字動畫技巧

2010-11-22 14:18:32

MySQL鎖機制

2010-07-21 09:38:15

PHP緩存技術

2009-12-07 17:26:50

tenda路由器

2010-01-26 13:47:57

Android電話功能

2009-12-18 10:39:46

家用寬帶路由器設置

2023-01-12 17:18:06

數據庫多云

2015-09-02 08:57:56

JavaHashMap工作原理

2009-08-27 11:27:58

foreach語句C# foreach語

2010-03-31 14:58:03

云計算

2010-03-05 13:44:00

Python序列

2024-01-26 06:42:05

Redis數據結構

2009-12-11 11:08:31

靜態路由策略

2009-12-14 14:40:10

Ruby全局域變量

2009-12-07 16:07:03

PHP類的繼承
點贊
收藏

51CTO技術棧公眾號

精品日本一区二区三区在线观看| 久久99精品久久久久久噜噜| 污视频网站观看| 福利视频在线播放| 免费人成在线不卡| 欧美成人国产va精品日本一级| 国产伦精品一区二区三区妓女下载| 超免费在线视频| 日本一区二区在线不卡| 91日本视频在线| 中文字幕日韩一级| 国产午夜一区| 精品精品国产高清一毛片一天堂| 亚洲成熟丰满熟妇高潮xxxxx| 色开心亚洲综合| av电影在线观看不卡| 国产精品美女www爽爽爽视频| 亚洲色婷婷一区二区三区| 午夜欧洲一区| 日韩一区二区三区观看| wwwxxx黄色片| 欧美videossex另类| 国产亚洲精品久| 国产日韩欧美综合精品| 91久久精品无码一区二区| 一本色道久久综合一区| 欧美成人合集magnet| 卡一卡二卡三在线观看| 国内精品麻豆美女在线播放视频| 欧美日韩免费视频| 日韩国产欧美亚洲| 69成人在线| 国产精品私人自拍| 久久久久久亚洲精品不卡4k岛国| av免费在线不卡| 免费久久精品视频| 国产99在线|中文| 精品成人久久久| 好吊日精品视频| xx视频.9999.com| 谁有免费的黄色网址| 欧美毛片免费观看| 精品国产亚洲一区二区三区在线观看| 女人高潮一级片| 欧美成人黄色| 欧美性一二三区| 一级黄色香蕉视频| 三上悠亚亚洲一区| 色吊一区二区三区| 欧美牲交a欧美牲交| av中文字幕在线观看第一页| 依依成人精品视频| 亚洲高潮无码久久| 国产精品va在线观看视色| 国产精品国产自产拍在线| 日韩欧美亚洲日产国产| 久久精品国产亚洲a∨麻豆| 91在线观看高清| 国产一区二区视频在线免费观看| 欧美一区二区三区成人片在线| 国产成人在线电影| 99热99热| 视频二区在线观看| 2020国产精品| 日韩av在线电影观看| 电影av一区| 国产精品你懂的在线| 天天人人精品| 欧美成人hd| 亚洲激情男女视频| 国产freexxxx性播放麻豆| 24小时免费看片在线观看| 一区二区三区久久| 全黄性性激高免费视频| 伊人网在线播放| 国内国产精品久久| 日韩欧美中文字幕在线播放| 国产精品一色哟哟| 色偷偷色偷偷色偷偷在线视频| 欧美午夜激情在线| 91制片厂毛片| 精品一区二区三区中文字幕| 精品久久久久久久人人人人传媒| 超碰caoprom| 欧美禁忌电影网| 日韩亚洲综合在线| 18岁成人毛片| 中文欧美日韩| 国产情人节一区| 精品国产伦一区二区三| 99热99精品| 亚洲欧美日韩国产成人综合一二三区| 免费的黄网站在线观看| 亚洲国产精品一区二区www| 欧美久久久久久久久久久久久| 午夜欧美巨大性欧美巨大| 777色狠狠一区二区三区| 国产综合内射日韩久| 精品国产精品国产偷麻豆| 久久精品国产亚洲精品2020| xxxxxx国产| 蜜臀国产一区二区三区在线播放| 国产精品视频免费观看| 番号在线播放| 亚洲成人黄色影院| 亚洲欧美在线精品| 成人直播在线观看| 中文字幕欧美国内| 日本在线小视频| 韩国毛片一区二区三区| 久久精品午夜一区二区福利| 国产高清一区二区三区视频| 日韩欧美一区二区在线| 手机看片国产精品| 成人6969www免费视频| 国语自产精品视频在线看一大j8 | va视频在线观看| 久久中文娱乐网| 人妻无码一区二区三区四区| 日韩精品麻豆| 日韩电视剧在线观看免费网站| 性爱在线免费视频| 久久成人在线| 韩国成人av| 任你弄在线视频免费观看| 91精品办公室少妇高潮对白| 91视频在线免费| 91精品国产麻豆国产在线观看| 青青草99啪国产免费| 黄色福利在线观看| 一区二区三区免费在线观看| 久久久久xxxx| 久久蜜桃av| 国产精品高潮粉嫩av| 日韩精品系列| 五月激情六月综合| 巨乳女教师的诱惑| 五月久久久综合一区二区小说| 国产精品99久久久久久久久| 欧美中文在线| 色综合久久六月婷婷中文字幕| 欧美熟妇精品一区二区蜜桃视频| 欧美在线免费一级片| 国产精品一区二区久久精品| 国产资源在线播放| 色8久久精品久久久久久蜜| 国产精品三级在线观看无码| 一区二区三区导航| 就去色蜜桃综合| 岛国av在线播放| 日韩电影网在线| 国偷自拍第113页| av激情综合网| 日韩少妇内射免费播放| 日韩欧美影院| 欧美综合一区第一页| 少妇性bbb搡bbb爽爽爽欧美| 欧美视频一区二区三区…| 国产精品无码网站| 美女国产一区| 一本久久a久久精品vr综合 | 老色鬼久久亚洲一区二区| 牛人盗摄一区二区三区视频| 久久91导航| 在线播放日韩欧美| 中文字幕免费高清在线观看| 国产精品电影一区二区三区| 亚洲一区二区图片| 亚洲天堂男人| 蜜桃久久精品乱码一区二区 | 欧美jizzhd69巨大| 91精品国产综合久久精品图片| 超碰手机在线观看| 国产91高潮流白浆在线麻豆| 欧美极品欧美精品欧美| 国产精品免费不| 91精品国产综合久久久久久蜜臀| gogo在线高清视频| 亚洲国产精品久久精品怡红院| 亚洲日本韩国在线| 国产欧美一区二区在线| www.久久久久久久久久久| 伊人成人在线| 日韩色妇久久av| 日本一区精品视频| 欧美孕妇毛茸茸xxxx| 日韩美女网站| 亚洲第一精品福利| 中文字幕 国产| 亚洲一区二区成人在线观看| asian性开放少妇pics| 久久99深爱久久99精品| 精品视频在线观看一区| 精品免费在线| 国产精品一 二 三| 久久xxx视频| 欧美国产视频日韩| 国产爆初菊在线观看免费视频网站| 日韩午夜激情av| 91在线视频在线观看| ●精品国产综合乱码久久久久| v天堂中文在线| 久久精品国产亚洲aⅴ| 阿v天堂2018| 99久久综合| 蜜桃视频成人| 在线播放一区二区精品视频| 国产精品久久久久久久久| 黄色在线看片| 理论片在线不卡免费观看| 毛片在线免费| 亚洲第一中文字幕在线观看| 中文字幕一区二区三区四区视频 | 最近中文字幕免费观看| 亚洲午夜私人影院| 网站永久看片免费| 26uuu亚洲综合色欧美| 中文字幕剧情在线观看| 琪琪一区二区三区| 日本毛片在线免费观看| 欧美久久99| 欧美a级黄色大片| av伊人久久| 蜜桃精品久久久久久久免费影院| 91精品国产自产在线丝袜啪| 国产欧美亚洲视频| 国产成人免费9x9x人网站视频 | 日韩风俗一区 二区| 国产999久久久| 欧美高清精品3d| 91丨九色丨海角社区| 欧美午夜精品久久久久久人妖 | 国产盗摄在线观看| 最近2019中文字幕第三页视频 | 欧美高跟鞋交xxxxxhd| 蜜桃视频在线观看www社区| 国产亚洲精品美女久久久久| 日本成人一区二区三区| 日韩二区三区在线| 三级国产在线观看| 亚洲精品短视频| 免费看黄网站在线观看| 精品国产91洋老外米糕| 黄色片网站免费在线观看| 精品免费国产二区三区| 亚洲av无码国产综合专区| 日韩三级电影网址| 精品黑人一区二区三区国语馆| 91精品黄色片免费大全| 国产伦精品一区二区三区四区| 欧美美女一区二区三区| 在线观看免费视频一区| 欧美日韩国产精品自在自线| 亚洲天堂手机在线| 欧美猛男男办公室激情| 97人妻精品一区二区三区| 欧美精品久久久久久久多人混战| 91theporn国产在线观看| 在线播放中文字幕一区| 国产人妖一区二区三区| 日韩免费观看高清完整版在线观看| www.色日本| 亚洲国产成人精品女人久久久| 人妻与黑人一区二区三区| 亚洲男女性事视频| 大片免费播放在线视频| xxx欧美精品| 欧美激情成人动漫| 国产69久久精品成人| 欧洲一级精品| 91久久久久久久久| 超碰地址久久| 日韩亚洲一区在线播放| 国产精品成人a在线观看| 欧洲精品视频在线| 99精品99| 天天综合网久久| 国产超碰在线一区| 国产精品无码一区二区三区| 国产精品久久久久久久久久久免费看| 综合五月激情网| 香蕉乱码成人久久天堂爱免费| 性色av免费观看| 欧美美女视频在线观看| 成人免费公开视频| 亚洲视屏在线播放| av网址在线免费观看| 68精品国产免费久久久久久婷婷| 日韩精选视频| 99高清视频有精品视频| 自拍视频一区| 国产精品一二三在线观看| 久久久久网站| 中文字幕无码毛片免费看| 久久免费电影网| 成人免费视频国产免费观看| 欧美丝袜第一区| 一级黄色免费片| 日韩激情片免费| av片在线观看| 国产精品第一第二| 极品国产人妖chinesets亚洲人妖 激情亚洲另类图片区小说区 | 欧一区二区三区| 欧美日韩国产精品一卡| 欧美精品啪啪| 国产九九热视频| 99免费精品在线观看| 国产精品免费人成网站酒店 | 国产日产精品一区| 久久综合成人网| 欧美日韩国产不卡| 亚洲av成人无码网天堂| 欧美高清视频在线播放| 成人毛片免费| 欧美1o一11sex性hdhd| 激情欧美一区二区三区| 91视频这里只有精品| 久久久精品蜜桃| 久久久久久蜜桃| 在线成人高清不卡| 国产视频第一页在线观看| 午夜精品美女自拍福到在线| 国产精品欧美一区二区三区不卡| 看欧美日韩国产| 国产欧美日本| 稀缺小u女呦精品呦| 亚洲精品国产视频| 久久久久久av无码免费看大片| 日韩精品免费视频| 不卡av免费观看| www国产亚洲精品| 伊人久久大香线| 三级黄色片免费观看| **网站欧美大片在线观看| 又污又黄的网站| 正在播放国产一区| 忘忧草在线www成人影院| 久久久久久久久一区| 国产精品亚洲产品| 波多野结衣福利| 精品国产乱码久久久久久天美| 亚洲精品一级片| 久久久久亚洲精品国产| 最新国产一区二区| 亚洲熟妇无码av在线播放| 国产一区二区伦理| 国产盗摄x88av| 日韩亚洲欧美在线| 成人影院在线播放| 国产精品一国产精品最新章节| 激情综合中文娱乐网| 免费啪视频在线观看| 亚洲国产视频一区二区| 狠狠综合久久av一区二区| 久久久久久久久久久91| 好吊妞视频这里有精品| 日韩免费视频播放| 久久蜜臀精品av| 亚洲中文一区二区三区| 日韩在线观看免费全| 国产剧情一区二区在线观看| 国产1区2区3区中文字幕| 高清不卡一区二区在线| 日韩欧美一区二区一幕| 日韩二区三区在线| 91在线成人| 精品一区二区三区毛片| 成人午夜av影视| 中文字幕免费在线观看视频| 伊人久久男人天堂| 精品久久亚洲| 日本a在线免费观看| 久久久久综合网| 一级全黄裸体免费视频| 久久久久久久久久国产精品| 免费国产自久久久久三四区久久| 午夜国产一区二区三区| 亚洲精品中文字幕乱码三区| 空姐吹箫视频大全| 国产成人精品999| 欧美激情综合色综合啪啪| 成人在线视频免费播放| 欧美亚洲一区二区在线观看| 岛国成人毛片| 蜜桃日韩视频| 国产精品资源站在线| 久久亚洲天堂网| 久久九九精品99国产精品| 极品一区美女高清| 欧美三级午夜理伦三级富婆| 亚洲国产美女搞黄色| 户外极限露出调教在线视频| 91成人免费看| 久久蜜桃精品| 免费在线一区二区三区| 国产一区二区三区在线观看网站| 91嫩草国产线观看亚洲一区二区| 少妇无码av无码专区在线观看 | 国产69精品久久| 国产精品www在线观看|