Android WebView で HTML5 ビデオの全画面再生をサポートする方法 (写真)

黄舟
リリース: 2017-05-21 15:21:23
オリジナル
3633 人が閲覧しました

1) AndroidManifest.xmlファイルでHardwareAccelerateを使用する必要があることを宣言する必要があります。ビューが必要ない場合は、アクティビティレベルに調整できます。 、アクセラレーションを使用しないことを宣言できますが、次のようにコード内で行う必要があります:

a. アプリケーション全体をアクセラレーションする必要があることを宣言したい場合:

         < application
 ... android:hardwareAccelerated ="true">
ログイン後にコピー

b.アクティビティ内で宣言したい場合:

                <activity
 ... android:hardwareAccelerated="true" >,
 还可以更细化到Window, getWindow.setFlags(  WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);                               
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
ログイン後にコピー

アプリケーションまたはアクティビティがハードウェア アクセラレーションが必要であると宣言しているが、何らかの理由 (省電力など?) で一部のビューがハードウェア アクセラレーションを必要としない場合、

LAYER_TYPE_SOFTWARE,null); 2) タグを使用する必要があり、それが空の場合は、targetSDK または minSDK を記述する必要がありますが、テストしたところ、バージョンは関係ありません。 。 。 。理論的には Android は 3.0 (APILevel 11) から 2D レンダリングを高速化できるはずですが、targetSDK を 5 にしても使えるのですが、このタグを書かないと動作しません。 一般に、上記の操作が完了した後、video タグを使用してビデオを再生できます。全画面をサポートしたい場合は、いくつかの操作を行う必要があります: 1) webview に Web を与えます。 ChromeClientobject

、この WebChromeClient オブジェクトは、onShowCustomView メソッドと onHideCustom

View メソッド を実装する必要があります。実装例を次に示します。

    @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;
                     }
               }
ログイン後にコピー

さて、この書き方は、インターネット上の多くの書き方とは異なります。インターネット上の例のほとんどは、onShowCustomView メソッドで受け取ったビューが VideoView オブジェクトであり、ここでは

HTML5

VideoFullScreen の VideoSurfaceView サブクラスが見つかりません。また、このサブクラスはプライベート サブクラスでもあり、アクセスできません。外部からは android.jar に HTML5VideoFullScreen クラスはありません。アプリケーションでこのクラスにアクセスしたい場合は、パッケージ /plat

forms//data/layoutlib.jar をビルドパスに追加する必要があります。 Android-14、つまり Android 4.0 以降の場合です。つまり、Android 3.0 時代にはネット上に記載されている方法が使用できますが、Android 4.0 以降は使用できません。

実際、バージョンに関係なく、このコードの一般的な意味は、onShowCustomView メソッドでは取得したビューを現在のアクティビティの先頭に配置し、onHideCustomView では前のビューを非表示にするかdelete、元にカバーされていた Web ビューを元に戻して再生を終了します。そうでない場合は、MediaPlayer に報告されます。 IllegalStatusException が発生し、まだネイティブ メソッドであるため、まったくデバッグできません。

それをダウンロードし、

eclipseを使用してプロジェクトをインポートし、サンプルvideoをシステムの観点から見ると、/mnt/sdcardです。

効果は以下のとおりです:

全画面表示前:


全画面表示後:

以上がAndroid WebView で HTML5 ビデオの全画面再生をサポートする方法 (写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート