2012-09-07 35 views
6

Tôi có một WebView lưu trữ video được nhúng. khi tôi làm suy giảm Webview, âm thanh của video tiếp tục phát. Làm thế nào tôi có thể ngăn chặn điều này? Tôi đã thử webview.destroy(); nhưng lực đó đóng ứng dụng khi tôi cố gắng mở lại WebView.WebView với số lần phát video được nhúng trong nền

Trả lời

0

Ý của bạn là gì: "khi tôi làm giảm Webview thì âm thanh của video tiếp tục phát".

Đây có phải là ứng dụng tùy chỉnh không? Nếu vậy, bạn cần tạo tệp kê khai ứng dụng của mình với android: hardwareAccelerated = true (giả sử bạn đang thực hiện điều này trên ICS hoặc JB). Nếu không có khả năng tăng tốc phần cứng, bạn sẽ chỉ nghe thấy âm thanh nhưng video không thể nhìn thấy (đó là những gì nó âm thanh như bạn đang nhìn thấy). Dưới đây là một số thông tin về cách thay đổi tệp kê khai của bạn: http://developer.android.com/guide/topics/graphics/hardware-accel.html

4

Tôi giả định rằng "khi tôi làm giảm Webview" thành khi bạn đóng chế độ xem. Dù sao, tôi cũng đã thử phương pháp tương tự - gọi webview.destroy() và đã gặp sự cố tương tự như bạn.

Cách tiếp cận duy nhất hoạt động là gọi _webView.loadData ("", "văn bản/html", "utf-8"); từ phương thức kết thúc hoạt động() của tôi.

(dựa trên câu trả lời này: How do I stop Flash after leaving a WebView? không thực sự hoạt động vì onDestroy không được gọi cho đến sau này).

5

Bạn phải gọi phương thức onPause()onResume() của WebView cho mục đích đó. Bạn thường làm điều đó trên hoạt động của bạn onPause()onResume() nhưng bạn cũng có thể làm điều đó bất cứ khi nào bạn đang ẩn WebView theo một cách nào đó và nội dung của nó cũng ngừng làm bất cứ điều gì họ đang làm, chẳng hạn như chạy Javascript hoặc phát video HTML5.

Nếu bạn cần những phương pháp này trong các cấp API trước khi đến 11, bạn có thể sử dụng phản ánh như thế này: WebView.class.getMethod("onPause").invoke(myWebView);

0

Bạn cũng có thể thực hiện kịch bản Java để tạm dừng video/audio trên onPause gọi vòng đời sau của hoạt động này, trong dưới đây ví dụ tôi đã làm nó cho âm thanh (nó làm việc). Hy vọng rằng việc thay đổi 'âm thanh' thành 'video' sẽ giúp bạn.

@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); 
    } 
} 
Các vấn đề liên quan