2013-04-02 39 views
1

在android webview中,我設置了web chrome客戶端並啓用了硬件加速。在我的網頁中,我有一個html5視頻(內聯)。當播放視頻並按下主頁按鈕時,視頻不會暫停,從而導致用戶體驗不佳。如何暫停所有在webview實例上播放視頻而不破壞視頻?Android上的WebView中的HTML5內聯視頻回調

P.S.請不要發佈JS解決方案,因爲我無法訪問JS層(以及也有視頻的iframe)

+0

implement onPause(){} meathod在停止播放視頻 –

+0

也許回答「如何停止YouTube視頻在Android Web視圖中播放?」有助於? [鏈接](http://stackoverflow.com/questions/5946698/how-to-stop-youtube-video-playing-in-android-webview) – anabonne

回答

1

默認情況下,WebView不提供類似瀏覽器的小部件,不啓用JavaScript並忽略網頁錯誤。如果你的目標只是將一些HTML作爲你的用戶界面的一部分顯示出來,這可能是好的;除了閱讀外,用戶不需要與網頁交互,網頁也不需要與用戶交互。如果你真的想要一個全面的網絡瀏覽器,那麼你可能要調用同一個URL意圖瀏覽器應用程序,而不是用的WebView

http://developer.android.com/reference/android/webkit/WebView.html

0

您可以嘗試截取視頻流和使用表現出來表露出來媒體播放器課程。之後,您可能會訪問流媒體。

+0

你可以讓我知道我究竟是如何截取視頻流上一個webview?以下回調似乎都不起作用:DownloadListener.onDownloadStart,WebViewClient.onLoadResource,WebChromeClient.onProgressChanged。 – Akshay

+0

你有訪問視頻流的URL嗎?如果你有,那麼你可以寫你自己的下載和自己顯示小部件 – QArea

+0

不幸的是,我不想它是通用的。無論如何感謝:) – Akshay

2

使用此代碼

@Override 
public void onShowCustomView(View view, CustomViewCallback callback) { 
    super.onShowCustomView(view, callback); 
    if (view instanceof FrameLayout){ 
     FrameLayout frame = (FrameLayout) view; 
     if (frame.getFocusedChild() instanceof VideoView){ 
      VideoView video = (VideoView) frame.getFocusedChild(); 
      frame.removeView(video); 
      a.setContentView(video); 
      video.setOnCompletionListener(this); 
      video.setOnErrorListener(this); 
      video.start(); 
     }`enter code here` 
    } 
} 
+0

我已經實現了這一點。它只適用於較低的Android版本,如薑餅。 ICS上的內聯視頻無法使用此方法。謝謝 – Akshay

+1

http://stackoverflow.com/questions/9030524/auto-playing-vimeo-videos-in-android-webview?rq=1 – sreejithmohanan

0

我有這個問題,現在我有一個簡單,明確的答案。這假定您的webview對象是一個活動或活動片段中的字段(成員,屬性等)。

  • 在活動的onPause()中,調用webview.onPause();
  • 在活動的onResume()中,調用webview.onResume();

onPause()位我在其他地方得到了stackoverflow。 onResume需要重新建立webview對視頻對象的引用。如果你沒有這樣做,如果你想再次播放視頻,那麼你最終會遇到同樣的問題。

相關問題