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.
- Luchando con el fragmento de la ayuda del jugador de Youtube
- No se puede transmitir YouTube Url en VLC android
- Reproduce youtube / vimeo vídeo incrustado en HTML en Android WebView
- Integración de youtube para fragmentar
- "403 - useLimits" en la API de youtube
¿Tienen ustedes otra forma de resolver este problema / error? Realmente no quiero usar la etiqueta de vídeo HTML5. Gracias por adelantado.
- Android WebView con incrustaciones iframe no se muestra en 4.2.2 ni en la parte inferior
- Mostrar video de Youtube en viewpager
- ¿Cómo se juega a los videos MP4 de Youtube?
- YouTubePlayerSupportFragment en una aplicación de una sola actividad con cambio de orientación
- Instrucciones del juego 360 mp4 vids?
- ¿Cómo detener el video de YouTube en la vista web de Android?
- RTSP enlace de youtube
- Pantalla blanca tras cerrar el video de pantalla completa abierto desde WebView
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
- Tener un contexto, actividad o puntos de vista como miembro de una clase es un mal desempeño?
- El recolector de basura de Android trabaja duro en mi aplicación