精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

北京富婆泄欲对白| 杨幂一区欧美专区| 精品久久久久久久久久久国产字幕| 精品国产乱码| 这里只有精品视频在线观看| 强开小嫩苞一区二区三区网站| 亚洲精品97久久中文字幕无码| 免费亚洲视频| 久久成人一区二区| 国内精品免费视频| 成人黄色视屏网站| 亚洲精品乱码久久久久久日本蜜臀| 好看的日韩精品视频在线| 中文字幕人妻一区二| 久久九九热re6这里有精品| 91高清在线观看| 中国丰满熟妇xxxx性| av在线电影网| 97精品超碰一区二区三区| 国产综合视频在线观看| 最新中文字幕一区| 欧美三级网页| 色婷婷综合成人| 波多野结衣福利| 国产另类在线| 日韩欧美一二区| 另类小说第一页| 欧美aa在线| 伊人性伊人情综合网| 亚洲精品国产精品国自产| 亚洲色图欧美视频| 成人久久久精品乱码一区二区三区| 国产精品视频一区二区高潮| 久久青青草原亚洲av无码麻豆| 亚洲乱码在线| 久久伊人免费视频| 青青操在线播放| 欧美精品一二| 亚洲视频自拍偷拍| 色噜噜日韩精品欧美一区二区| 国产欧美啪啪| 欧美一级二级三级蜜桃| 激情五月婷婷基地| 国产精品久久久久久久久久齐齐| 色婷婷综合久久久中文一区二区| 女人喷潮完整视频| 毛片电影在线| 欧美丝袜第一区| 日韩中文字幕在线视频观看| 999福利在线视频| 亚洲成人综合在线| 欧美精品久久久久久久久久久| 免费av不卡在线观看| 亚洲免费伊人电影| 欧美美女黄色网| 中文字幕中文字幕在线中高清免费版 | 欧美一级大片在线观看| 亚洲精品国产精品乱码| 99精品欧美| 青青a在线精品免费观看| 欧产日产国产69| 日韩1区2区3区| 国产精品日韩专区| 国产精品欧美久久久久天天影视| 狠狠色丁香久久婷婷综合丁香| 亚洲精品日韩av| 亚洲精品字幕在线| 91小视频在线| 五月天亚洲综合小说网| 天堂а√在线官网| 亚洲美女在线国产| www.99热这里只有精品| 欧美成a人片在线观看久| 欧美三日本三级三级在线播放| 加勒比av中文字幕| 精品国产不卡一区二区| 亚洲аv电影天堂网| 美女久久久久久久久久| 久久一级电影| 性欧美xxxx视频在线观看| av一级在线观看| 日韩一区精品字幕| 亚洲自拍在线观看| 午夜在线视频免费| 中文子幕无线码一区tr| av一区二区三区免费观看| 伊人久久在线| 欧美一区二区三区在线看| xxxx黄色片| 日韩成人综合| 久久噜噜噜精品国产亚洲综合 | 国产欧美在线| 国产精品久久久久aaaa九色| av免费观看在线| 久久在线观看免费| 在线观看视频黄色| 伊人久久国产| 日韩欧美成人激情| 永久免费毛片在线观看| 国内精品久久久久久久97牛牛 | 久久久精品久久| 可以在线观看av的网站| 国产一区二区在线看| 欧美日本国产精品| 亚洲第一图区| 欧美日韩一区三区| 久久人人妻人人人人妻性色av| 久久美女视频| 人九九综合九九宗合| www.色视频| 国产精品久久久久久久裸模 | 一个人www视频在线免费观看| 6080yy午夜一二三区久久| 亚洲一区二区在线免费| 一本一道久久综合狠狠老| 国产精品久久久久久久久免费看 | 亚洲超碰在线观看| 少妇av一区二区三区| 成人免费视频毛片| 懂色av噜噜一区二区三区av| 中文字幕剧情在线观看一区| 奇米777日韩| 亚洲精品久久久久久久久久久| 18岁成人毛片| 六月婷婷色综合| 日本成人三级| 亚洲人成午夜免电影费观看| 精品国产sm最大网站免费看| 印度午夜性春猛xxx交| 久久国产尿小便嘘嘘| 色狠狠久久av五月综合|| 中文字幕在线视频网站| 亚洲激情国产精品| 九热这里只有精品| 福利电影一区二区| 97免费视频观看| 日韩中文字幕一区二区高清99| 日韩网站免费观看| 亚洲综合免费视频| 国产精品久久久久久妇女6080 | 欧美一级特黄aaaaaa在线看片| 成人日韩av| 在线日韩中文字幕| 日韩乱码一区二区三区| 日本一区二区免费在线| 黄色免费网址大全| 欧美日韩水蜜桃| 国产精品露脸av在线| 成人在线观看免费| 在线观看一区日韩| 日韩精品电影一区二区三区| 日韩电影在线一区二区三区| 视频二区一区| 久久伊人国产| www.99久久热国产日韩欧美.com| 一区二区三区亚洲视频| 亚洲欧美福利一区二区| 无人码人妻一区二区三区免费| 欧美欧美全黄| 国产综合第一页| 男人皇宫亚洲男人2020| 中文字幕欧美日韩在线| 国产麻豆免费观看| 亚洲国产日产av| 中文字字幕码一二三区| 日韩精品乱码av一区二区| 一区二区三区四区五区视频| 不卡一区视频| 久久久久久久久亚洲| 亚洲aaaaaaa| 欧美视频中文一区二区三区在线观看| 波多野结衣家庭教师在线观看| 激情久久五月天| 成人精品视频在线播放| 欧美三级一区二区| 国产日韩欧美黄色| h片在线播放| 精品少妇一区二区三区在线播放| 一区二区视频在线播放| 开心久久婷婷综合中文字幕| 久久中文字幕国产| 亚洲欧美高清视频| 欧美午夜影院在线视频| 夫妇交换中文字幕| 国产福利一区在线| 免费大片在线观看| 中文字幕乱码亚洲无线精品一区| 国内精品视频在线播放| 福利一区视频| 欧美成人精品在线视频| 天堂av在线资源| 欧美日韩国产高清一区二区| 国产在线观看你懂的| 国产日韩av一区| 绯色av蜜臀vs少妇| 日韩高清在线一区| www.夜夜爱| 不卡一区综合视频| 国产麻豆日韩| 亚洲aⅴ网站| 欧美一区二区视频97| 黄色网在线免费观看| 亚洲美女精品成人在线视频| www.av导航| 欧美日韩亚洲综合| 特级西西444www大精品视频免费看| 国产精品福利一区二区| 亚洲av无码国产精品久久| 国产精品 欧美精品| 午夜欧美福利视频| 国产精品久久久免费 | 日本一二区免费| 亚洲精品男同| www.男人天堂网| 91亚洲国产| 日韩欧美一区二区三区四区| 噜噜噜天天躁狠狠躁夜夜精品| 91亚洲国产成人久久精品网站| 日韩视频网站在线观看| 91成人精品网站| 五月天激情在线| 久久手机免费视频| av福利在线播放| 亚洲深夜福利视频| 日夜干在线视频| 亚洲国产精品免费| 亚洲精品一区二区三区蜜桃| 欧美一区三区四区| 91 中文字幕| 欧美视频第二页| 无码人妻精品一区二| 黑人巨大精品欧美一区二区| 国产精品变态另类虐交| 一区二区三区在线观看欧美| 最新一区二区三区| 亚洲婷婷国产精品电影人久久| 久久久久久成人网| 国产精品网站一区| 色噜噜噜噜噜噜| 中日韩免费视频中文字幕| 中文字幕人妻一区二区三区在线视频| 91原创在线视频| 无码人妻一区二区三区免费n鬼沢| 国产精品一区二区果冻传媒| 中文字幕欧美视频| 国产iv一区二区三区| 精品人妻一区二区免费| thepron国产精品| 三级视频网站在线观看| 99re视频精品| 国产交换配乱淫视频免费| 久久久国产精华| 亚洲天堂岛国片| 中文字幕在线不卡一区| 九九热视频在线免费观看| 亚洲人一二三区| 国产精久久久久久| 欧美色播在线播放| 亚洲午夜在线播放| 91麻豆精品国产91久久久 | 成人91在线观看| 国产高清自拍视频| 久久久99免费| 四虎884aa成人精品| 亚洲一区二区三区中文字幕| 亚洲黄色一区二区| 在线免费亚洲电影| 国产尤物视频在线观看| 精品国产网站在线观看| 青春草在线观看 | 亚洲国产精品久久| 国产小视频免费在线观看| 色一情一乱一区二区| 日本理论片午伦夜理片在线观看| 98精品在线视频| 成人国产激情| 91在线观看网站| 天堂一区二区三区四区| 一区二区不卡在线视频 午夜欧美不卡' | 国产无套在线观看| 色婷婷久久综合| 国产精品九九九九| 日韩激情视频在线| 欧美激情二区| 国产91精品久久久| 伊人久久一区| 久久av二区| 我不卡影院28| www国产黄色| 久久精品国产网站| 亚洲欧美在线不卡| 中文字幕乱码久久午夜不卡 | 亚洲免费大片| 日韩欧美国产片| 99精品偷自拍| 中文字幕人妻一区二| 在线一区二区观看| 亚洲精品福利网站| 日韩性xxxx爱| 免费电影日韩网站| 国产精品香蕉视屏| 亚洲网色网站| 四季av一区二区| 99久久精品情趣| 国产这里有精品| 欧美日韩你懂的| 你懂的免费在线观看| 欧美激情乱人伦一区| 日韩成人综合网| 欧美一区二区三区精美影视| 激情综合激情| 少妇愉情理伦片bd| 欧美激情一区在线观看| 制服.丝袜.亚洲.中文.综合懂色| 欧美一级理论性理论a| 中文字幕在线观看日本| 国产91在线视频| 久久动漫网址| 黄色激情在线视频| 国产精一区二区三区| 国产福利视频网站| 欧美视频精品在线观看| www.亚洲视频| 国产不卡精品视男人的天堂| 秋霞影院一区二区三区| 霍思燕三级露全乳照| 国产成人aaaa| 黄色一级片在线| 欧美一级在线观看| 成人免费网站在线观看视频| 国产在线精品一区免费香蕉| 不卡av一区二区| 欧美特级aaa| 欧美极品xxx| 国产乱码在线观看| 中文字幕国内精品| 日本免费成人| 在线观看免费黄色片| 狠狠色狠狠色综合| 九九这里只有精品视频| 欧美精品第一页| 国产网友自拍视频导航网站在线观看| 成人免费激情视频| 91tv官网精品成人亚洲| 四虎成人在线播放| 一区二区三区中文字幕在线观看| a天堂在线观看视频| 欧美美女18p| 国产精品男女| 中文字幕乱码人妻综合二区三区 | www.日韩系列| 欧美视频免费看| 久久久国产精华液999999| 精品一区二区三区蜜桃| 五月天av网站| 精品国精品自拍自在线| 黄色视屏在线免费观看| 欧美极品色图| 美女脱光内衣内裤视频久久影院| 特黄一区二区三区| 日韩一级精品视频在线观看| 大黄网站在线观看| 欧美极品日韩| 精品午夜一区二区三区在线观看| 欧美黄色aaa| 亚洲国产古装精品网站| 性欧美videohd高精| 一区二区三区四区欧美日韩| 国产91对白在线观看九色| 日韩伦人妻无码| 国产亚洲精品美女| 精品三级国产| 欧美在线观看成人| 国产精品国产三级国产普通话蜜臀| 国产喷水吹潮视频www| 午夜精品在线观看| 久久国产成人精品| 亚洲美女精品视频| 在线免费精品视频| 成人性生交大片免费看网站| 欧美一级二级三级九九九| 国内精品视频一区二区三区八戒| 日韩精品视频播放| 中文字幕在线日韩| 精品国产导航| 日本中文字幕观看| 欧美色另类天堂2015| 国产激情在线观看| 欧美午夜免费| 国产麻豆精品在线观看| 中国一级特黄毛片| 日韩一级黄色av| 欧美成人午夜77777| 国内自拍第二页| 日韩欧美亚洲国产一区| 午夜影院免费在线| 亚洲精品在线免费| 99精品在线观看视频| 精品人妻一区二区三区含羞草 | 国产激情视频在线播放|