2012-09-07 65 views
6

我有一個託管嵌入式視頻的WebView。當我降級Webview時,視頻的聲音一直在播放。我怎樣才能阻止呢?我嘗試了webview.destroy();,但是當我嘗試再次打開WebView時,該強制關閉了應用程序。帶有嵌入式視頻的WebView在後臺播放

回答

0

你是什麼意思:「當我降級Webview視頻的聲音繼續播放」。

這是一個自定義應用嗎?如果是這樣,您需要使用android:hardwareAccelerated = true構建應用程序清單文件(假設您正在ICS或JB上執行此操作)。如果沒有硬件加速,您只會聽到音頻,但無法看到視頻(這就是您聽到的聲音)。以下是關於更改清單文件的一些信息: http://developer.android.com/guide/topics/graphics/hardware-accel.html

4

我假定當我關閉視圖時,「當我降級Web視圖」時。 無論如何,我也嘗試了同樣的方法 - 調用webview.destroy(),並且和你一樣崩潰。

工作的唯一方法是調用_webView.loadData(「」,「text/html」,「utf-8」);從我的activity finish()方法。

(根據這個回答:How do I stop Flash after leaving a WebView?哪個沒有真正的工作,因爲onDestroy直到很晚才被調用)。

5

您必須爲此調用WebView的onPause()onResume()方法。您通常在活動的onPause()onResume()上執行此操作,但是您也可以在某種方式隱藏WebView時執行此操作,並且其內容也應該停止執行任何操作,例如運行Javascript或播放HTML5視頻。

如果前11需要在API層面這些方法,你可以使用反射像這樣:WebView.class.getMethod("onPause").invoke(myWebView);

0

您也可以執行Java腳本暫停上的onPause生命週期調用視頻/音頻回活動的,在下面的例子我已經做了它的音頻(它的工作)。希望將'音頻'改爲'視頻'對你來說是個訣竅。

@Override 
protected void onPause() { 

    executeJavascript("javascript:document.querySelector('audio').pause();", new ValueCallback() { 
     @Override 
     public void onReceiveValue(Object value) { 
      Trace.d(TAG, value.toString()); 
     } 
    }); 

    super.onPause(); 
} 

private void executeJavascript(String javascript, ValueCallback callback){ 
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
     mWebView.evaluateJavascript(javascript, callback); 
    } else { 
     mWebView.loadUrl(javascript); 
    } 
} 
相關問題