2012-09-07 26 views

Respuesta

0

¿Qué quiere decir con: "cuando degrade la Webview, el sonido del video sigue sonando".

¿Es esta una aplicación personalizada? Si es así, debe compilar el archivo de manifiesto de su aplicación con android: hardwareAccelerated = true (suponiendo que esté haciendo esto en ICS o JB). Sin aceleración de hardware, solo escuchará el audio, pero el video no podrá verse (que es lo que parece que está viendo). Aquí hay alguna información sobre cómo cambiar su archivo de manifiesto: http://developer.android.com/guide/topics/graphics/hardware-accel.html

4

Supongo que "cuando degrade la Webview" cuando cierre la vista. De todos modos, también probé el mismo enfoque: llamar a webview.destroy(), y tuve el mismo bloqueo que tú.

El único enfoque que funcionó fue llamar a _webView.loadData ("", "text/html", "utf-8"); de mi actividad finish() método.

(basado en esta respuesta: How do I stop Flash after leaving a WebView? que realmente no funcionó ya que el onDestroy no se llamaba hasta mucho más tarde).

5

Debe llamar a los métodos onPause() y onResume() de WebView para tal fin. Normalmente lo hace en su Actividad onPause() y onResume(), pero también puede hacerlo siempre que esté ocultando WebView de alguna manera y sus contenidos también deben dejar de hacer lo que están haciendo, como ejecutar Javascript o reproducir un video HTML5.

Si necesita estos métodos en los niveles de la API antes del 11, se puede utilizar la reflexión de esta manera: WebView.class.getMethod("onPause").invoke(myWebView);

0

También puede ejecutar Java Script para pausar el vídeo/audio en onPause llamada del ciclo de vida posterior de la actividad, en a continuación ejemplo lo he hecho para audio (funcionó). Con suerte, cambiar 'audio' a 'video' te sirve.

@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(); 
} 

y

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); 
    } 
} 
Cuestiones relacionadas