El video IFRAME incorporado sigue reproduciéndose en segundo plano después de salir de la pantalla completa en Android

He buscado mucho para una solución a este problema, pero al parecer no pude encontrar uno. Bueno, como su nombre indica, tengo una sencilla aplicación para Android que tiene una vista Web.

public class MainActivity extends Activity { protected FrameLayout webViewPlaceholder; protected WebView webView; final Context myApp = this; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initialize the UI initUI(); } protected void initUI() { // Retrieve UI elements webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder)); // Initialize the WebView if necessary if (webView == null) { // Create the webview webView = new WebView(this); webView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); webView.getSettings().setSupportZoom(true); webView.getSettings().setBuiltInZoomControls(true); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView.setScrollbarFadingEnabled(true); webView.getSettings().setLoadsImagesAutomatically(true); // Load the URLs inside the WebView, not in the external web browser webView.setWebViewClient(new WebViewClient()); //webView.setWebChromeClient(new CustomChromeClient(this)); webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) { new AlertDialog.Builder(myApp) .setTitle("javaScript dialog") .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setCancelable(false) .create() .show(); return true; }; public void onShowCustomView(View view, CustomViewCallback callback){ super.onShowCustomView(view, callback); Log.i("ChromeCLient", "onshowCustomView"); new AlertDialog.Builder(myApp) .setTitle("javaScript dialog") .setMessage("ajbdlsakndsland") .setCancelable(true) .create() .show(); } @Override public void onHideCustomView() { super.onHideCustomView(); Log.i("ChromeCLient", "onhideCustomView"); } }); webView.getSettings().setJavaScriptEnabled(true); if (Build.VERSION.SDK_INT < 8) { webView.getSettings().setPluginsEnabled(true); } else { webView.getSettings().setPluginState(WebSettings.PluginState.ON); } // Load a page webView.loadUrl("http://jsbin.com/ijixe4/3"); } // Attach the WebView to its placeholder webViewPlaceholder.addView(webView); } @Override public void onConfigurationChanged(Configuration newConfig) { if (webView != null) { // Remove the WebView from the old placeholder webViewPlaceholder.removeView(webView); } super.onConfigurationChanged(newConfig); // Load the layout resource for the new configuration setContentView(R.layout.activity_main); // Reinitialize the UI initUI(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); // Save the state of the WebView webView.saveState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); // Restore the state of the WebView webView.restoreState(savedInstanceState); } } 

Mi problema es el siguiente. El sitio que se carga en la vista web es un sitio que contiene un simple video incrustado de iframe. Cuando presiono el botón FullScreen en el video de youtube, cambia la orientación de mi aplicación aunque establezca en mi manifiesto: screenOrientation = "portrait". Al salir de FullScreen, mientras se reproduce el video se sigue reproduciendo (en segundo plano), aunque la vista web se ha recreado debido al cambio de orientación. He intentado destruir la webview en el método onDestroy () de la actividad cuando la orientación cambia de paisaje a retrato. Pero no ayudó. He intentado establecer un CustomWebChromeClient a la webview y la aplicación del método onShowCustomView (), pero el onShowCustomView () aparentemente no se llama a menos que el uso de vídeos HTML5. Incluso he intentado mantener el estado de la webview a través del cambio de orientación.

¿Tienen ustedes otra forma de resolver este problema / error? Realmente no quiero usar la etiqueta de vídeo HTML5. Gracias por adelantado.

Simplemente anule los métodos onPause y onResume y llame a los mismos métodos en el webView de la siguiente manera.

 @Override protected void onResume() { super.onResume(); this.webView.onResume(); } @Override protected void onPause() { super.onPause(); this.webView.onPause(); } 

Encontré esto mientras enfrentaba el mismo problema:

 webView.loadData("", "text/html", "utf-8"); // in onDestroy/onFinish 

Detiene la reproducción de vídeo. Podría ser útil. No puedo decir ahora si te ayuda, pero tienes que probarlo en los cambios de orientación o lo que sea. <> BTW Youtube tiene su propia API por lo que tal vez es mejor utilizarlo en lugar de WebView

  • Html5 mediaplayer para reproducir video de youtube
  • Cargando video de Youtube a través de i-frame en android webview
  • Haciendo un perfecto reproductor Youtube de Chromeless en Android
  • reproducir streaming en VideoView, convertir url a rtsp
  • Cerrar pantalla completa de Youtube Player en el botón de atrás dentro del fragmento
  • ¿Cuál es el formato del video compartido por YouTube en Android
  • El reproductor de video de youtube superpone el otro diseño cuando nos desplazamos
  • Reproducción de vídeos de youtube en la aplicación para Android
  • Android / Java: comprueba si url es url válida de youtube
  • Filtro de intenciones para Media Player (Reproducción de vídeo de Youtube)
  • API de YouTube para Android: YouTubePlayerFragment loading spinner
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.