Maison > interface Web > Tutoriel H5 > Comment faire en sorte qu'Android WebView prenne en charge la lecture plein écran de la vidéo HTML5 (image)

Comment faire en sorte qu'Android WebView prenne en charge la lecture plein écran de la vidéo HTML5 (image)

黄舟
Libérer: 2017-05-21 15:21:23
original
3663 Les gens l'ont consulté

1) Doit être installé dans AndroidManifest.xml Il est indiqué dans le fichier que HardwareAccelerate doit être utilisé, qui peut être affiné au niveau d'activité. Si la vue n'est pas nécessaire, elle peut être déclarée pour ne pas utiliser l'accélération, mais cela doit être fait dans. le code, comme suit :

a. Si vous souhaitez déclarer que l'ensemble de l'application doit être accéléré :

         < application
 ... android:hardwareAccelerated ="true">
Copier après la connexion

b. Si vous souhaitez la déclarer dans Activité, alors :

                <activity
 ... android:hardwareAccelerated="true" >,
 还可以更细化到Window, getWindow.setFlags(  WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);                               
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
Copier après la connexion

c. Si l'application ou l'activité déclare qu'une accélération matérielle est requise, mais pour certaines raisons (telles que économie d'énergie ?), certaines vues ne nécessitent pas d'accélération matérielle,

.setLayerType(View .LAYER_TYPE_SOFTWARE, null); 2) Qu'est-ce qui est étrange est que vous devez utiliser dans le fichier AndroidManifest.xml. , et s'il est vide, targetSDK ou minSDK doit être écrit, mais je l'ai testé, et ce n'est pas le cas. peu importe la version dans laquelle il est écrit. . . Théoriquement, Android devrait être capable d'accélérer le rendu 2D à partir de la version 3.0 (

API

Niveau 11), mais il peut être utilisé même si je règle le targetSDK sur 5, mais cela ne fonctionne pas sans écrire cette balise.

De manière générale, une fois les opérations ci-dessus effectuées, vous pouvez utiliser la balise vidéo pour lire la vidéo. Si vous souhaitez prendre en charge le plein écran, vous devez faire un peu plus : <. 🎜>

1) Donnez à webview un objet Web

Chr

omeClient

Cet objet WebChromeClient doit implémenter les méthodes onShowCustomView et onHideCustomView. :

    @Override
               public void onShowCustomView(View
 view, CustomViewCallback callback) {
                      if (myCallback != null)
 {
                            myCallback.onCustomViewHidden();
                            myCallback = null ;
                            return;
                     }
                     
                      long id
 = Thread.currentThread().getId();
                     WrtLog. v("WidgetChromeClient", "rong
 debug in showCustomView Ex: " + id);
                     
                     ViewGroup parent = (ViewGroup) mWebView.getParent();
                     String s = parent.getClass().getName();
                     WrtLog. v("WidgetChromeClient", "rong
 debug Ex: " + s);
                     parent.removeView( mWebView);
                     parent.addView(view);
                      myView =
 view;
                      myCallback =
 callback;
                      chromeClient = this ;
              }
               private View myView = null;
               private CustomViewCallback myCallback = null;
              
              
               public void onHideCustomView()
 {
                     
                      long id
 = Thread.currentThread().getId();
                     WrtLog. v("WidgetChromeClient", "rong
 debug in hideCustom Ex: " + id);
                     
                     
                      if (myView != null)
 {
                           
                            if (myCallback != null)
 {
                                   myCallback.onCustomViewHidden();
                                   myCallback = null ;
                           }
                           
                           ViewGroup parent = (ViewGroup) myView.getParent();
                           parent.removeView( myView);
                           parent.addView( mWebView);
                           myView = null;
                     }
               }
Copier après la connexion
D'accord, cette façon d'écrire est différente de nombreuses façons d'écrire sur Internet. La plupart des exemples sur Internet indiquent que la vue reçue par la méthode onShowCustomView est. un objet VideoView, et voici une sous-classe

HTML5 VideoFullScreen VideoSurfaceView introuvable, et cette sous-classe est toujours une sous-classe privée, accessible de l'extérieur. Il n'y a pas de classe HTML5VideoFullScreen dans android.jar. Si vous souhaitez accéder à cette classe dans l'application, vous devez ajouter le package /platforms//data/layoutlib.jar au buildpath , et ce n'est le cas que depuis Android-14, c'est-à-dire après Android 4.0. En d'autres termes, la méthode mentionnée sur Internet peut être utilisée à l'ère d'Android 3.0, mais pas après Android 4.0. .0,3.

 

En fait, quelle que soit la version, la signification générale de ce code est que dans la méthode onShowCustomView, placer la vue obtenue en haut de l'activité en cours, et dans onHideCustomView, masquer le vue précédente Ou supprimer, remettez la vue Web initialement couverte et terminez la lecture, sinon elle sera signalée à MediaPlayer IllegalStatusException, et c'est toujours une méthode native, donc elle ne peut pas être déboguée du tout.

Vous pouvez le télécharger, utiliser eclipse pour l'importer dans le projet et ajouter l'échantillon vidéo Mettez-le dans le répertoire racine de la carte SD. Du point de vue du système, il s'agit de /mnt/sdcard.

L'effet est le suivant :

Avant le plein écran :

 


Après le plein écran :

>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal