ホームページ >ウェブフロントエンド >H5 チュートリアル >Android WebView で HTML5 ビデオの全画面再生をサポートする方法 (写真)
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) bfbb500b983fbda4924ff941d541f424a7de59fe43a228fe8d81c67491f0be90 タグを使用する必要があり、それが空の場合は、targetSDK または minSDK を記述する必要がありますが、テストしたところ、バージョンは関係ありません。 。 。 。理論的には Android は 3.0 (APILevel 11) から 2D レンダリングを高速化できるはずですが、targetSDK を 5 にしても使えるのですが、このタグを書かないと動作しません。 一般に、上記の操作が完了した後、video タグを使用してビデオを再生できます。全画面をサポートしたい場合は、いくつかの操作を行う必要があります: 1) webview に Web を与えます。 ChromeClientobject
、この WebChromeClient オブジェクトは、onShowCustomView メソッドと 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; } }さて、この書き方は、インターネット上の多くの書き方とは異なります。インターネット上の例のほとんどは、onShowCustomView メソッドで受け取ったビューが VideoView オブジェクトであり、ここでは
HTML5
VideoFullScreen の VideoSurfaceView サブクラスが見つかりません。また、このサブクラスはプライベート サブクラスでもあり、アクセスできません。外部からは android.jar に HTML5VideoFullScreen クラスはありません。アプリケーションでこのクラスにアクセスしたい場合は、パッケージ d10213b4b7d42ab857b6d13b05e5abcf/platforms/3fccf5dbdf3b8f33f130448b904300d3/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 サイトの他の関連記事を参照してください。