6

HTMLビデオが含まれているWebビューがあります。このビデオをフルスクリーンで表示したいので、をオーバーライドonShowCustomViewしてWebChromeClientを使用しVideoViewます。これは2.3ではうまく機能しますが、4.xではonShowCustomView呼び出されません。ビデオは引き続き再生されますが、クリックして再生および停止する以外に、コントロールなしでWebビュー内から再生されます。

また、hardwareAccelerated="true"があります。

なぜonShowCustomView呼び出されないのか、何か考えはありますか?

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    webView = (WebView) findViewById(R.id.webView);

    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.setWebViewClient(new WebViewClient());
    webView.setWebChromeClient(new MyChromeClient());

    webView.loadUrl(URL);

}

private class MyChromeClient extends WebChromeClient implements
        OnCompletionListener, OnErrorListener, OnPreparedListener {

    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        Log.d("ma", "onShowCustomView");
    }

...
4

2 に答える 2

9

しばらくこれに苦労した後、ようやく原因を突き止めました。Android 4.xでは、「video」タグのhtml「controls」属性を使用してコントロールを表示する必要があります。これらのコントロールを表示したら、フルスクリーンボタンをクリックして、「onShowCustomView」を呼び出すことができます。埋め込みビデオは4.xで利用可能であり、コントロールを使用して全画面表示にするオプションがあるため、onShowCustomViewは再生時に自動的に呼び出されません。残念ながら、これはAndroidのドキュメントにほとんど記載されていません。

于 2012-09-13T03:20:25.230 に答える
0

これは私のために働きます。

私はvimeoビデオでウェブアプリを作る際に「癖のある解決策」を見つけました。2つのデバイスをテストしました。1つはAndroid4.2.xバージョンで、もう1つは4.4.xバージョンです。1つはフルスクリーンモードでビデオを再生でき、もう1つはできません。

公式ドキュメント「Android4.4でのWebViewへの移行」を読んだ後、2つのデバイスで「UserAgent」の名前が異なることがわかりました。

1つはこのuserAgentを持っています。

Mozilla/5.0 (Linux; Android 4.4.2; SHV-E300L Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36

別の人はこれを持っています。

Mozilla/5.0 (Linux; Android 4.4.4; SHV-E370K Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36

クロームバージョンはフルスクリーンビデオを作るソリューションだと思います。そこで、Chromeのバージョンを30.xに変更しました。

WebSettings s = mWebView.getSettings();
//Change UserAgent to play fullscreen vimeo's videos.
String agent = s.getUserAgentString();
String p = "(Chrome/[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)";
Pattern pattern = Pattern.compile(p);
Matcher matcher = pattern.matcher(agent);
if(matcher.find()) {
    agent = matcher.replaceFirst("Chrome/30.0.0.0");
}
s.setUserAgentString(agent);

ああ~~私は眠ることができます...(私の貧弱な英語でごめんなさい)

于 2015-11-26T09:58:19.453 に答える