[解決済み] WebViewとHTML5 <video>
質問
私は、他のものの間で "frames" 私たちのウェブサイトのいくつかの安物のアプリをつなぎ合わせています... 非常に単純な
WebViewClient
ビデオにぶつかるまでは。
ビデオは、次のように行われます。
HTML5
要素で構成され、これらは Chrome や iPhone で問題なく動作し、エンコーディングの問題を修正した後は
Android
で素晴らしく機能します。
さて、揉め事です。
WebView
はそれが好きではありません。 まったくです。 ポスター画像をクリックしても、何も起こりません。
ググってみると この は近いですが、video 要素ではなく 'link' (href のような...) に基づいているようです。 (onDownloadListener は video 要素で呼び出されないようです...)
onShowCustomView をオーバーライドするための参照も見ますが、video 要素では呼び出されないようです... shouldOverrideUrlLoading も...。
サーバーから xml を取得し、アプリで再フォーマットすることは避けたいと思います。ストーリー レイアウトをサーバー上に維持することで、アプリを更新し続けることを強制せずに、コンテンツをもう少しうまく制御できます。 ですから、ネイティブブラウザのようにタグを処理するようにWebViewを説得できれば、それがベストでしょう。
私は明らかに何かを見逃しています...しかし、何の手がかりもありません。
どのように解決するのですか?
私は誰かがそれを読んで、結果に興味がある場合に備えて、このトピックに答える。 WebView内でvideo要素(video html5タグ)を表示することは可能ですが、私は数日間それに対処しなければならなかったと言わざるを得ません。以下は、私がこれまでにたどった手順です。
-適切にエンコードされた動画を探す
-WebViewの初期化時に、JavaScript、プラグイン、WebViewClient、WebChromeClientを設定する。
url = new String("http://broken-links.com/tests/video/"); mWebView = (WebView) findViewById(R.id.webview); mWebView.setWebChromeClient(chromeClient)。 mWebView.setWebViewClient(wvClient); mWebView.setWebViewClient(wvClient); mWebView.getSettings().setJavaScriptEnabled(true)を実行します。 mWebView.getSettings().setPluginState(PluginState.ON)を実行します。 mWebView.loadUrl(url)を実行します。
-WebChromeClientオブジェクトでonShowCustomViewを処理します。
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
super.onShowCustomView(view, callback);
if (view instanceof FrameLayout){
FrameLayout frame = (FrameLayout) view;
if (frame.getFocusedChild() instanceof VideoView){
VideoView video = (VideoView) frame.getFocusedChild();
frame.removeView(video);
a.setContentView(video);
video.setOnCompletionListener(this);
video.setOnErrorListener(this);
video.start();
}
}
}
-ウェブビューに戻るために、動画の onCompletion と onError イベントを処理します。
public void onCompletion(MediaPlayer mp) {
Log.d(TAG, "Video completo");
a.setContentView(R.layout.main);
WebView wb = (WebView) a.findViewById(R.id.webview);
a.initWebView();
}
しかし、ここでまだ重要な問題があると言わなければなりません。私は一度だけそれを再生することができます。私はビデオディスパッチャ(ポスターまたはいくつかの再生ボタンのいずれか)をクリックする二度目、それは何もしません。
私はまた、メディアプレーヤーウィンドウを開くのではなく、WebViewフレーム内でビデオを再生したいのですが、これは私にとっては二次的な問題です。
これが誰かの助けになることを願っています。また、コメントや提案に感謝します。
こんにちは、テリコーラ。
関連
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] 画面サイズ、現在のウェブページ、ブラウザウィンドウのサイズを取得する
-
[解決済み] HTML5の数値入力のスピンボックスを非表示にすることはできますか?
-
[解決済み] Androidのウェブビューでloadurlを呼び出すとブラウザが起動する
-
[解決済み] WebViewがURLの読み込みを終了したことを確認する方法は?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
-
[解決済み] Androidの連絡先リストを呼び出すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] データベースでリサイクルビューを使用する
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] アンドロイドでシェイクを検出するには?
-
[解決済み] edittextのテキストがメールアドレスかどうかを確認するには?
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] LayoutParamsの高さを密度に依存しないピクセル数でプログラム的に設定する。
-
[解決済み] 文字列リソースにHTML?