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

android 4.0以上WebView不能全屏播放視頻的解決辦法

移動開發 Android
上次鄙人做了一個簡單的利用webView實現的一個瀏覽器!其中遇到了兩個問題,一個是將瀏覽器中需要下載的內容托管到系統默認的下載程序進行下載。

上次鄙人做了一個簡單的利用webView實現的一個瀏覽器!其中遇到了兩個問題,一個是將瀏覽器中需要下載的內容托管到系統默認的下載程序進行下載,這個比較簡單就不在這里討論了;另一個問題就是我們的Android設備版本是4.0.3,不能像Android2.3那樣支持全屏播放視頻,這個問題比較糾結,但是經過不斷的摸索,終于解決了這個問題。在這里和大家分享一下解決方法:

 

1、首先定義一個VideoEnabledWebView繼承自WebView,復寫其中的loadData,loadDataWithBaseURL,loadUrl方法,道理很簡單就是在加載url或者js的時候初始化一些內容。見代碼:

  1. package com.danielme.android.webviewdemo; 
  2.  
  3. import java.util.Map; 
  4. import android.annotation.SuppressLint; 
  5. import android.content.Context; 
  6. import android.os.Handler; 
  7. import android.os.Looper; 
  8. import android.util.AttributeSet; 
  9. import android.webkit.WebChromeClient; 
  10. import android.webkit.WebView; 
  11.  
  12. public class VideoEnabledWebView extends WebView 
  13.     public interface ToggledFullscreenCallback 
  14.     { 
  15.         public void toggledFullscreen(boolean fullscreen); 
  16.     }     
  17.     private VideoEnabledWebChromeClient videoEnabledWebChromeClient; 
  18.     private boolean addedJavascriptInterface;    
  19.     public VideoEnabledWebView(Context context) 
  20.     { 
  21.         super(context); 
  22.         addedJavascriptInterface = false
  23.     }    
  24.     public VideoEnabledWebView(Context context, AttributeSet attrs) 
  25.     { 
  26.         super(context, attrs); 
  27.         addedJavascriptInterface = false
  28.     }    
  29.     public VideoEnabledWebView(Context context, AttributeSet attrs, int defStyle) 
  30.     { 
  31.         super(context, attrs, defStyle); 
  32.         addedJavascriptInterface = false
  33.     }     
  34.     /** 
  35.      * Pass only a VideoEnabledWebChromeClient instance. 
  36.      */ 
  37.     @Override 
  38.     @SuppressLint ("SetJavaScriptEnabled"
  39.     public void setWebChromeClient(WebChromeClient client) 
  40.     { 
  41.         getSettings().setJavaScriptEnabled(true); 
  42.  
  43.         if (client instanceof VideoEnabledWebChromeClient) 
  44.         { 
  45.             this.videoEnabledWebChromeClient = (VideoEnabledWebChromeClient) client; 
  46.         } 
  47.  
  48.         super.setWebChromeClient(client); 
  49.     }     
  50.     @Override 
  51.     public void loadData(String data, String mimeType, String encoding) 
  52.     { 
  53.         addJavascriptInterface(); 
  54.         super.loadData(data, mimeType, encoding); 
  55.     }     
  56.     @Override 
  57.     public void loadDataWithBaseURL(String baseUrl, String data, 
  58.                                     String mimeType, String encoding, 
  59.                                     String historyUrl) 
  60.     { 
  61.         addJavascriptInterface(); 
  62.         super.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); 
  63.     }     
  64.     @Override 
  65.     public void loadUrl(String url) 
  66.     { 
  67.         addJavascriptInterface(); 
  68.         super.loadUrl(url); 
  69.     }     
  70.     @Override 
  71.     public void loadUrl(String url, Map<String, String> additionalHttpHeaders) 
  72.     { 
  73.         addJavascriptInterface(); 
  74.         super.loadUrl(url, additionalHttpHeaders); 
  75.     }     
  76.     private void addJavascriptInterface() 
  77.     { 
  78.         System.out.println(addedJavascriptInterface); 
  79.         if (!addedJavascriptInterface) 
  80.         { 
  81.             // Add javascript interface to be called when the video ends (must be done before page load) 
  82.             addJavascriptInterface(new Object() 
  83.             { 
  84.             }, "_VideoEnabledWebView"); // Must match Javascript interface name of VideoEnabledWebChromeClient             
  85.             addedJavascriptInterface = true
  86.         } 
  87.     }    
  88.   

其中addJavascriptInterface方法是將一個當前的java對象綁定到一個javascript上面,使用如下方法

 

webv.addJavascriptInterface(this, "_VideoEnabledWebView");//this為當前對象,綁定到js的_VideoEnabledWebView上面,主要_VideoEnabledWebView的作用域是全局的。這個部分的內容我不是很懂,提供鏈接給大家學習下,希望看懂的朋友能教教這個步驟是干嘛的!(http://www.oschina.net/code/snippet_232612_8531

 

2、定義一個類VideoEnabledWebChromeClient繼承自WebChromeClient,這個WebChromeClient中的onShowCustomView方法就是播放網絡視頻時會被調用的方法,onHideCustomView方法就是視頻播放完成會被調用的。其中有個構造函數需要提出來:

  1. public VideoEnabledWebChromeClient(View activityNonVideoView, ViewGroup activityVideoView, View loadingView, VideoEnabledWebView webView) 
  2.     { 
  3.         this.activityNonVideoView = activityNonVideoView; 
  4.         this.activityVideoView = activityVideoView; 
  5.         this.loadingView = loadingView; 
  6.         this.webView = webView; 
  7.         this.isVideoFullscreen = false
  8.     } 
  9.   

這個構造函數中的參數,***個是webView的父布局,activityVideoView是另外的一個占滿整個屏幕的布局,loadingView是播放器的那個顯示緩沖狀態的view,webView就是webView啦!

 

見activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     xmlns:tools="http://schemas.android.com/tools" 
  4.     android:layout_width="match_parent" 
  5.     android:layout_height="match_parent" 
  6.     tools:context=".MainActivity" > 
  7.     <RelativeLayout 
  8.         android:id="@+id/nonVideoLayout" 
  9.         android:layout_width="match_parent" 
  10.         android:layout_height="match_parent" > 
  11.         <com.danielme.android.webviewdemo.VideoEnabledWebView 
  12.             android:id="@+id/webView" 
  13.             android:layout_width="match_parent" 
  14.             android:layout_height="match_parent" /> 
  15.     </RelativeLayout> 
  16.     <FrameLayout 
  17.         android:id="@+id/videoLayout" 
  18.         android:layout_width="match_parent" 
  19.         android:layout_height="match_parent" > 
  20.     </FrameLayout> 
  21. </RelativeLayout> 
  22.   

不多說了,直接貼代碼VideoEnabledWebChromeClient.java代碼。

  1. package com.danielme.android.webviewdemo; 
  2.  
  3. import android.app.ActionBar.LayoutParams; 
  4. import android.media.MediaPlayer; 
  5. import android.media.MediaPlayer.OnCompletionListener; 
  6. import android.media.MediaPlayer.OnErrorListener; 
  7. import android.media.MediaPlayer.OnPreparedListener; 
  8. import android.view.View; 
  9. import android.view.ViewGroup; 
  10. import android.webkit.WebChromeClient; 
  11. import android.widget.FrameLayout; 
  12. import android.widget.VideoView; 
  13.  
  14. public class VideoEnabledWebChromeClient extends WebChromeClient implements OnPreparedListener, OnCompletionListener, OnErrorListener 
  15.     public interface ToggledFullscreenCallback 
  16.     { 
  17.         public void toggledFullscreen(boolean fullscreen); 
  18.     } 
  19.     private View activityNonVideoView; 
  20.     private ViewGroup activityVideoView; 
  21.     private View loadingView; 
  22.     private VideoEnabledWebView webView; 
  23.     private boolean isVideoFullscreen; // Indicates if the video is being displayed using a custom view (typically full-screen) 
  24.     private FrameLayout videoViewContainer; 
  25.     private CustomViewCallback videoViewCallback; 
  26.     private ToggledFullscreenCallback toggledFullscreenCallback; 
  27.     /** 
  28.      * Never use this constructor alone. 
  29.      * This constructor allows this class to be defined as an inline inner class in which the user can override methods 
  30.      */ 
  31.     public VideoEnabledWebChromeClient() 
  32.     { 
  33.     } 
  34.     /** 
  35.      * Builds a video enabled WebChromeClient. 
  36.      * @param activityNonVideoView A View in the activity's layout that contains every other view that should be hidden when the video goes full-screen. 
  37.      * @param activityVideoView A ViewGroup in the activity's layout that will display the video. Typically you would like this to fill the whole layout. 
  38.      */ 
  39.     public VideoEnabledWebChromeClient(View activityNonVideoView, ViewGroup activityVideoView) 
  40.     { 
  41.         this.activityNonVideoView = activityNonVideoView; 
  42.         this.activityVideoView = activityVideoView; 
  43.         this.loadingView = null
  44.         this.webView = null
  45.         this.isVideoFullscreen = false
  46.     } 
  47.     /** 
  48.      * Builds a video enabled WebChromeClient. 
  49.      * @param activityNonVideoView A View in the activity's layout that contains every other view that should be hidden when the video goes full-screen. 
  50.      * @param activityVideoView A ViewGroup in the activity's layout that will display the video. Typically you would like this to fill the whole layout. 
  51.      * @param loadingView A View to be shown while the video is loading (typically only used in API level <11). Must be already inflated and without a parent view. 
  52.      */ 
  53.     public VideoEnabledWebChromeClient(View activityNonVideoView, ViewGroup activityVideoView, View loadingView) 
  54.     { 
  55.         this.activityNonVideoView = activityNonVideoView; 
  56.         this.activityVideoView = activityVideoView; 
  57.         this.loadingView = loadingView; 
  58.         this.webView = null
  59.         this.isVideoFullscreen = false
  60.     } 
  61.     /** 
  62.      * Builds a video enabled WebChromeClient. 
  63.      * @param activityNonVideoView A View in the activity's layout that contains every other view that should be hidden when the video goes full-screen. 
  64.      * @param activityVideoView A ViewGroup in the activity's layout that will display the video. Typically you would like this to fill the whole layout. 
  65.      * @param loadingView A View to be shown while the video is loading (typically only used in API level <11). Must be already inflated and without a parent view. 
  66.      * @param webView The owner VideoEnabledWebView. Passing it will enable the VideoEnabledWebChromeClient to detect the HTML5 video ended event and exit full-screen. 
  67.      * Note: The web page must only contain one video tag in order for the HTML5 video ended event to work. This could be improved if needed (see Javascript code). 
  68.      */ 
  69.     public VideoEnabledWebChromeClient(View activityNonVideoView, ViewGroup activityVideoView, View loadingView, VideoEnabledWebView webView) 
  70.     { 
  71.         this.activityNonVideoView = activityNonVideoView; 
  72.         this.activityVideoView = activityVideoView; 
  73.         this.loadingView = loadingView; 
  74.         this.webView = webView; 
  75.         this.isVideoFullscreen = false
  76.     } 
  77.     /** 
  78.      * Indicates if the video is being displayed using a custom view (typically full-screen) 
  79.      * @return true it the video is being displayed using a custom view (typically full-screen) 
  80.      */ 
  81.     public boolean isVideoFullscreen() 
  82.     { 
  83.         return isVideoFullscreen; 
  84.     } 
  85.     /** 
  86.      * Set a callback that will be fired when the video starts or finishes displaying using a custom view (typically full-screen) 
  87.      * @param callback A VideoEnabledWebChromeClient.ToggledFullscreenCallback callback 
  88.      */ 
  89.     public void setOnToggledFullscreen(ToggledFullscreenCallback callback) 
  90.     { 
  91.         this.toggledFullscreenCallback = callback; 
  92.     } 
  93.     @Override 
  94.     public void onShowCustomView(View view, CustomViewCallback callback) 
  95.     { 
  96.         if (view instanceof FrameLayout) 
  97.         { 
  98.             // A video wants to be shown 
  99.             FrameLayout frameLayout = (FrameLayout) view; 
  100.             View focusedChild = frameLayout.getFocusedChild(); 
  101.             // Save video related variables 
  102.             this.isVideoFullscreen = true
  103.             this.videoViewContainer = frameLayout; 
  104.             this.videoViewCallback = callback; 
  105.             // Hide the non-video view, add the video view, and show it 
  106.             activityNonVideoView.setVisibility(View.GONE);             
  107.             activityVideoView.addView(videoViewContainer, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
  108.             activityVideoView.setVisibility(View.VISIBLE); 
  109.             if (focusedChild instanceof VideoView) 
  110.             { 
  111.                 // VideoView (typically API level <11) 
  112.                 VideoView videoView = (VideoView) focusedChild; 
  113.                 // Handle all the required events 
  114.                 videoView.setOnPreparedListener(this); 
  115.                 videoView.setOnCompletionListener(this); 
  116.                 videoView.setOnErrorListener(this); 
  117.             } 
  118.             else // Usually android.webkit.HTML5VideoFullScreen$VideoSurfaceView, sometimes android.webkit.HTML5VideoFullScreen$VideoTextureView 
  119.             { 
  120.                 // HTML5VideoFullScreen (typically API level 11+) 
  121.                 // Handle HTML5 video ended event 
  122.                 if (webView != null && webView.getSettings().getJavaScriptEnabled()) 
  123.                 { 
  124.                     // Run javascript code that detects the video end and notifies the interface 
  125.                     String js = "javascript:"
  126.                     js += "_ytrp_html5_video = document.getElementsByTagName('video')[0];"
  127.                     js += "if (_ytrp_html5_video !== undefined) {"
  128.                     { 
  129.                         js += "function _ytrp_html5_video_ended() {"
  130.                         { 
  131.                             js += "_ytrp_html5_video.removeEventListener('ended', _ytrp_html5_video_ended);"
  132.                             js += "_VideoEnabledWebView.notifyVideoEnd();"// Must match Javascript interface name and method of VideoEnableWebView 
  133.                         } 
  134.                         js += "}"
  135.                         js += "_ytrp_html5_video.addEventListener('ended', _ytrp_html5_video_ended);"
  136.                     } 
  137.                     js += "}"
  138.                     webView.loadUrl(js); 
  139.                 } 
  140.             } 
  141.  
  142.             // Notify full-screen change 
  143.             if (toggledFullscreenCallback != null
  144.             { 
  145.                 toggledFullscreenCallback.toggledFullscreen(true); 
  146.             } 
  147.         } 
  148.     } 
  149.     @Override 
  150.     public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) // Only available in API level 14+ 
  151.     { 
  152.         onShowCustomView(view, callback); 
  153.     } 
  154.     @Override 
  155.     public void onHideCustomView() 
  156.     { 
  157.         // This method must be manually (internally) called on video end in the case of VideoView (typically API level <11) 
  158.         // This method must be manually (internally) called on video end in the case of HTML5VideoFullScreen (typically API level 11+) because it's not always called automatically 
  159.         // This method must be manually (internally) called on back key press (from this class' onBackPressed() method) 
  160.         if (isVideoFullscreen) 
  161.         { 
  162.             // Hide the video view, remove it, and show the non-video view 
  163.             activityVideoView.setVisibility(View.GONE);//播放視頻的 
  164.             activityVideoView.removeView(videoViewContainer); 
  165.             activityNonVideoView.setVisibility(View.VISIBLE); 
  166.  
  167.             // Call back 
  168.             if (videoViewCallback != null) videoViewCallback.onCustomViewHidden(); 
  169.  
  170.             // Reset video related variables 
  171.             isVideoFullscreen = false
  172.             videoViewContainer = null
  173.             videoViewCallback = null
  174.  
  175.             // Notify full-screen change 
  176.             if (toggledFullscreenCallback != null
  177.             { 
  178.                 toggledFullscreenCallback.toggledFullscreen(false); 
  179.             } 
  180.         } 
  181.     } 
  182.     @Override 
  183.     public View getVideoLoadingProgressView() // Video will start loading, only called in the case of VideoView (typically API level <11) 
  184.     { 
  185.         if (loadingView != null
  186.         { 
  187.             loadingView.setVisibility(View.VISIBLE); 
  188.             return loadingView; 
  189.         } 
  190.         else 
  191.         { 
  192.             return super.getVideoLoadingProgressView(); 
  193.         } 
  194.     } 
  195.     @Override 
  196.     public void onPrepared(MediaPlayer mp) // Video will start playing, only called in the case of VideoView (typically API level <11) 
  197.     { 
  198.         if (loadingView != null
  199.         { 
  200.             loadingView.setVisibility(View.GONE); 
  201.         } 
  202.     } 
  203.  
  204.     @Override 
  205.     public void onCompletion(MediaPlayer mp) // Video finished playing, only called in the case of VideoView (typically API level <11) 
  206.     { 
  207.         onHideCustomView(); 
  208.     } 
  209.     @Override 
  210.     public boolean onError(MediaPlayer mp, int what, int extra) // Error while playing video, only called in the case of VideoView (typically API level <11) 
  211.     { 
  212.         return false// By returning false, onCompletion() will be called 
  213.     } 
  214.     /** 
  215.      * Notifies the class that the back key has been pressed by the user. 
  216.      * This must be called from the Activity's onBackPressed(), and if it returns false, the activity itself should handle it. Otherwise don't do anything. 
  217.      * @return Returns true if the event was handled, and false if it is not (video view is not visible) 
  218.      */ 
  219.     public boolean onBackPressed() 
  220.     { 
  221.         if (isVideoFullscreen) 
  222.         { 
  223.             onHideCustomView(); 
  224.             return true
  225.         } 
  226.         else 
  227.         { 
  228.             return false
  229.         } 
  230.     }     
  231.   

主要是onShowCustomView方法中,當這個方法被調用,將含有webView的那個父布局隱藏掉(GONE),然后將***個參數view加到布局中。獲取***個參數view的子控件childView,進行判斷childView是否屬于VideoView(Android 4.0之前是VideoView),如果是Android 4.0之后,則會執行else中的代碼,新建String類型js代碼,然后調用loadUrl(js)就可以進行視頻播放了。其中我個人不知道它是如何通過js來播放視頻的,我覺得和之前的addJavascriptInterface這個方法有一定關系,希望知道如何實現的能夠指導一下本人。其它的函數就很好理解了。

其中多說一句,Android 4.0之前的那個***個參數view是videoView,Android 4.0之后是那個HTML5VideoFullScreen$VideoSurfaceView

責任編輯:張葉青 來源: eoe Android開發者社區
相關推薦

2017-05-10 07:33:41

AndroidWebView視頻

2023-03-29 09:37:49

視頻播放器應用鴻蒙

2013-07-15 14:46:34

iOS開發UIScrollVie移動開發

2010-01-13 08:46:21

Windows 7USB自動播放

2011-03-04 13:07:47

Filezilla

2009-06-03 16:41:21

Eclipse亂碼Eclipse

2010-04-16 12:42:44

無線路由器故障

2009-05-31 09:07:35

Oracle鎖定

2011-01-19 17:54:48

2015-03-23 11:16:38

網頁打不開

2015-11-30 12:02:25

DNS服務器

2009-12-07 18:38:16

WCF異常

2011-06-17 11:10:51

Qt 中文 輸出

2020-05-09 10:59:33

git cloneLinux文件

2009-02-18 09:30:10

AJAX跨域XML

2017-05-04 20:15:51

iOSNSTimer循環引用

2010-01-15 09:38:08

磁盤被寫保護解決辦法

2011-03-30 11:04:11

mrtg

2022-05-06 15:48:24

播放器鴻蒙

2010-04-19 14:57:16

Oracle收縮表分區
點贊
收藏

51CTO技術棧公眾號

久久av红桃一区二区禁漫| 亚洲五码在线观看视频| 在线精品免费视| 国产一区国产二区国产三区| 色菇凉天天综合网| 亚洲成人一区二区三区| 波多野结衣啪啪| 欧美aaaa视频| 精品福利在线导航| 国产女女做受ⅹxx高潮| 91短视频版在线观看www免费| 久久99精品久久久久| 欧美另类交人妖| 黄色性生活一级片| 欧美黄色网络| 亚洲午夜久久久久久久久久久 | 日韩视频在线播放| 亚洲天堂视频网| 国产精品sm| 亚洲丝袜在线视频| 中文字幕av一区二区三区人妻少妇| 97人澡人人添人人爽欧美| 国产偷国产偷精品高清尤物| 99高清视频有精品视频| 国产又粗又爽视频| 欧美在线91| 日韩精品在线视频美女| 黄色片免费网址| 亚洲优女在线| 一区二区免费看| 鲁鲁狠狠狠7777一区二区| 91久久国语露脸精品国产高跟| 在线日本成人| 在线视频亚洲欧美| 久久久老熟女一区二区三区91| 日韩国产一二三区| 九九视频精品全部免费播放| 欧美视频第三页| 青青草视频在线观看免费| 亚洲女同中文字幕| 亚洲欧洲av一区二区| 亚洲五月激情网| 国产经典一区| 高跟丝袜一区二区三区| 国产精品8888| 午夜免费播放观看在线视频| 国产黄色精品视频| 国产精品免费视频久久久| 免费看日韩毛片| 欧美三区美女| 久久香蕉国产线看观看av| 欧美丰满老妇熟乱xxxxyyy| 欧美日韩破处| 精品国精品国产尤物美女| 爱爱爱爱免费视频| 国产精品久久久久久久久久齐齐 | 日韩激情一二三区| 久久久久久亚洲精品不卡| 日韩国产第一页| 久久福利影院| 色综合伊人色综合网| 成年人网站免费在线观看| 奇米777国产一区国产二区| 337p日本欧洲亚洲大胆色噜噜| 中文字幕在线观看视频www| 国产精品原创视频| 色综合天天性综合| 99精品在线免费视频| 狠狠操一区二区三区| 午夜一区二区三区视频| 男的插女的下面视频| 2019中文字幕在线电影免费| 亚洲va国产天堂va久久en| 日韩欧美不卡在线| 91桃色在线| 精品久久久久久中文字幕大豆网| 国产精品无码一区二区在线| 国产污视频在线播放| 午夜精品123| 成人综合视频在线| 欧美日韩免费看片| 欧美视频一区在线观看| 狠狠操狠狠干视频| 欧美日韩国产网站| 91精品中文字幕一区二区三区| 手机av在线网站| 91精品短视频| 精品毛片乱码1区2区3区| 欧美激情一区二区三区p站| 国产精品网址| 亚洲香蕉av在线一区二区三区| 51妺嘿嘿午夜福利| 91亚洲一区| 欧美丰满少妇xxxxx做受| 久草视频中文在线| 国产美女精品| 国产免费成人av| 精品久久久久中文慕人妻| 波波电影院一区二区三区| 欧美一区二区福利| 成人日韩欧美| 香港成人在线视频| 伊人国产在线视频| 成人直播在线观看| 亚洲性生活视频| 免费人成视频在线| 久久久噜噜噜| 亚洲最大激情中文字幕| 日韩porn| 一区二区三区在线不卡| 成人免费观看毛片| 日本99精品| 亚洲人成啪啪网站| 中文字幕av免费在线观看| 免播放器亚洲| 91九色蝌蚪成人| 四虎精品在线| 一区二区在线观看视频| 久久精品香蕉视频| 粉嫩av一区二区| 精品国产一区二区三区在线观看 | 欧美日韩日本国产| 色18美女社区| 国产一区网站| 欧美极品少妇xxxxⅹ喷水 | 在线视频欧美精品| 中文字幕人妻一区| 这里只有精品在线| 国产精品久久久久久久久久免费| xxxx国产精品| 亚洲国产电影在线观看| 黄色一级片播放| 亚洲国产精品免费视频| 丝袜美腿精品国产二区| 成人免费毛片男人用品| 成人综合在线网站| 中文字幕第50页| 亚洲成av在线| 亚洲精品小视频| 日本系列第一页| 国产91色综合久久免费分享| 亚洲人成影视在线观看| 久久野战av| 日韩国产激情在线| 国产真人真事毛片| 国产精品一区三区| ijzzijzzij亚洲大全| 福利一区二区| 粉嫩一区二区三区性色av| 中文字幕在线看视频国产欧美在线看完整 | 色av综合在线| 国产福利短视频| 亚洲国内精品| av资源一区二区| 性欧美高清come| 在线播放91灌醉迷j高跟美女 | 国产精品欧美一区喷水| 欧美少妇性生活视频| 四虎5151久久欧美毛片| 国模私拍一区二区三区| 国产综合在线播放| 亚洲国产另类精品专区| 亚洲一区二区三区四区av| 伊人久久大香线| 亚洲精品免费av| 午夜影院免费在线| 日韩欧美卡一卡二| 九九热精品免费视频| 国产精品91一区二区| 日韩资源av在线| 成人国产激情| 久久精品国产精品亚洲| 国产老女人乱淫免费| 亚洲欧美日韩综合aⅴ视频| 色91精品久久久久久久久| 我不卡神马影院| 51精品国产人成在线观看| 好吊日av在线| 亚洲精品小视频| 中文字幕无码乱码人妻日韩精品| 国产精品成人在线观看| 国内av免费观看| 伊人影院久久| 青青成人在线| 国产成人免费精品| 操日韩av在线电影| 欧美自拍第一页| 色婷婷av久久久久久久| 国产精品成人69xxx免费视频| 国产精品亚洲午夜一区二区三区| 美国av在线播放| 黄色欧美网站| 国产精品久久久久久久电影| 男女啪啪在线观看| 337p日本欧洲亚洲大胆精品| 亚洲综合久久网| 亚洲视频狠狠干| 国产人妻黑人一区二区三区| 老司机免费视频久久| 在线日韩av永久免费观看| 日本免费一区二区三区视频| 国产91精品青草社区| 在线观看二区| 亚洲成av人影院在线观看| 国产免费一级视频| 国产精品久久久久影院老司 | 疯狂欧洲av久久成人av电影 | wwwwww日本| 国产一区久久久| 日本福利视频在线| 亚洲老妇激情| 欧美日韩综合精品| 伊人久久大香线蕉av超碰| 国产精品国模在线| 伊人福利在线| 国产亚洲视频在线观看| 国产精品热久久| 色婷婷精品大在线视频 | 91日韩欧美| 欧洲精品亚洲精品| 超碰97成人| 国产精品久久不能| 国产乱码精品一区二三赶尸艳谈| 亚洲欧洲一区二区三区在线观看| 性欧美8khd高清极品| 欧美三区在线观看| 亚洲 欧美 日韩 综合| 一区二区三区在线高清| 欧美 日本 国产| 国产福利91精品| 污视频网址在线观看| 国产亚洲精品自拍| 久久久久久av无码免费网站下载| 亚州av一区| 国产99在线免费| 免费在线成人激情电影| 浅井舞香一区二区| 亚洲性图自拍| 久久精品99无色码中文字幕| 草碰在线视频| 亚洲欧美在线看| 天堂中文资源在线观看| 日韩一区二区电影在线| 亚洲一级视频在线观看| 在线影视一区二区三区| 亚洲伊人成人网| 亚洲美女屁股眼交| 国产又粗又硬又长又爽| 国产精品网站一区| 日本精品在线观看视频| 91色九色蝌蚪| 亚洲中文字幕无码av| 成人精品国产一区二区4080| 国产男女无遮挡猛进猛出| 精品一区二区成人精品| 五月婷婷六月丁香激情| 奇米精品一区二区三区在线观看一| 中国丰满人妻videoshd| 久久国产88| 茄子视频成人免费观看| 国产一区二区三区的电影| 欧美一级在线看| 久久久久久久欧美精品| 亚洲 中文字幕 日韩 无码| 亚洲国产黄色| 免费一级特黄特色毛片久久看| 亚洲精品欧洲| 日本精品免费在线观看| av成人黄色| 日本黄网站免费| 日韩av在线免费观看不卡| 黄色国产小视频| 欧美中文日韩| 国产一二三四在线视频| 久久精品999| 97人人模人人爽人人澡| 豆国产96在线|亚洲| 88av在线播放| 久久精品一区二区三区av| 国产成人在线网址| 亚洲自拍偷拍综合| 国产亚洲欧美精品久久久久久| 亚洲va欧美va人人爽| 亚洲 欧美 中文字幕| 欧美精品一二三四| 午夜精品一区二区三| 亚洲精品视频免费| 三区四区电影在线观看| 欧美床上激情在线观看| 在线观看涩涩| 国产精品一卡二卡| 91小视频在线播放| 国产精品一级在线| 国产激情视频网站| 国产拍欧美日韩视频二区| 91视频最新网址| 亚洲不卡一区二区三区| 国产在线观看第一页| 欧美不卡视频一区| 国产青青草在线| 精品综合久久久久久97| 国产精品字幕| 国产免费高清一区| 国产精品久久天天影视| 久久精品国产sm调教网站演员| 日本在线播放一区二区三区| 波多野结衣三级视频| 欧美国产日韩一二三区| 日本在线观看视频网站| 欧美久久婷婷综合色| 国产中文在线视频| 国模gogo一区二区大胆私拍 | 国产91丝袜在线观看| 国产91丝袜美女在线播放| 亚洲成人激情自拍| 国产aⅴ爽av久久久久成人| 国产亚洲激情在线| 成人勉费视频| 国产日韩一区欧美| 欧美日本一区| 五月天六月丁香| 国产精品第四页| 亚洲永久精品一区| 精品一区二区电影| 1234区中文字幕在线观看| 91成人在线看| 午夜激情久久| 色婷婷综合网站| 国产欧美日韩中文久久| 你懂的国产在线| 亚洲精品720p| 国产精品蜜芽在线观看| 国产精品日本一区二区| 欧美 亚欧 日韩视频在线 | 久久久久久少妇| 欧美精品一区二区三区久久久| 怡红院在线播放| 97se在线视频| 狠狠干综合网| 年下总裁被打光屁股sp| 一区二区三区四区中文字幕| www.成人免费视频| 久久99热精品| 成人爽a毛片免费啪啪红桃视频| 狠狠精品干练久久久无码中文字幕| 久久99久久精品| 老熟妇高潮一区二区三区| 欧美精品久久久久久久久老牛影院| 日韩在线资源| 92福利视频午夜1000合集在线观看| 四季av一区二区三区免费观看 | 成人亚洲精品| 男女爱爱视频网站| 国产精品2024| 日本一区二区三区四区五区| 亚洲福利在线视频| 成人欧美大片| 神马影院午夜我不卡| 美女脱光内衣内裤视频久久影院| 男人av资源站| 日韩精品一区国产麻豆| 国产一二三在线| 欧美一级爽aaaaa大片| 久久精品国产一区二区| 欧美三级小视频| 亚洲精品不卡在线| 国产一区二区精品调教| 最新视频 - x88av| 成人黄页在线观看| 日本视频网站在线观看| 亚洲最新中文字幕| 精品中文字幕一区二区三区| 日本熟妇人妻xxxx| 国产午夜亚洲精品不卡| 伊人网中文字幕| 欧美韩国理论所午夜片917电影| 国产精品一区二区三区美女| 久久精品.com| 综合久久久久久久| 欧美性猛交 xxxx| 国产精品久久久久久久久久久新郎 | 日韩国产精品91| 紧身裙女教师波多野结衣| 亚洲高清免费观看高清完整版| 卡通欧美亚洲| 欧美视频在线第一页| 久久综合色鬼综合色| 国产精品探花视频| 91精品国产91久久久久久最新| 欧美中文一区二区| 天天躁日日躁狠狠躁免费麻豆| 在线观看亚洲一区| 日本高清在线观看视频| 日本一区二区精品视频| 国产成人精品一区二区三区四区 | 最新精品视频| 久久综合九色综合97婷婷| 国产又粗又黄又爽的视频| 91产国在线观看动作片喷水| 1024精品久久久久久久久|