2

観覧席レポート アプリには、Youtube ビデオを含む WebView があります。全画面アイコンを押すと、ビデオが全画面で再生されます。どうやってやるの?それはサーバー側の問題ですか、それともAndroidの問題ですか?追加したいのは、YouTube動画ですが、表示されるプレーヤーはYouTubeプレーヤーではなく、別のプレーヤーです。

編集: YouTube はコンポーネントであり、URL ページです。これは YouTube の Web ページではないため、「shouldOveriteUrl」は使用できません。また、YouTube ビデオについてのみ話しているのではなく、ビデオ コンポーネントについて話しているのです。動画コンポーネントを別のプレーヤーなどでラップするなど、サーバー上で何かを行うことはできますか? ありがとう!

4

2 に答える 2

1

// これは、YouTube 動画を支払うサンプル アクティビティです。

public class MyWebViewClient extends WebViewClient {

public Activity mActivity;

public MyWebViewClient(Activity activity,) {
    super();
    mActivity = activity;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Uri uri = Uri.parse(url);
    if (uri.getHost().contains("youtube.com")) {
        IntentUtils.viewYoutube(mActivity, url);
        return true;
    }

    return false;
}

public static void viewYoutube(Context context, String url) {
    IntentUtils.viewWithPackageName(context, url, "com.google.android.youtube");
}

public static void viewWithPackageName(Context context, String url, String packageName) {
    try {
        Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        if (isAppInstalled(context, packageName)) {
            viewIntent.setPackage(packageName);
        }
        context.startActivity(viewIntent);
    } catch (Exception e) {
        Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        context.startActivity(viewIntent);
    }
}

public static boolean isAppInstalled(Context context, String packageName) {
    PackageManager packageManager = context.getPackageManager();
    try {
        packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
        return true;
    } catch (NameNotFoundException e) {
    }
    return false;
}

@Override
public void onPageFinished(final WebView view, String url) {
    String javascript = "javascript:" +
        "var iframes = document.getElementsByTagName('iframe');" +
        "for (var i = 0, l = iframes.length; i < l; i++) {" +
        "   var iframe = iframes[i]," +
        "   a = document.createElement('a');" +
        "   a.setAttribute('href', iframe.src);" +
        "   d = document.createElement('div');" +
        "   d.style.width = iframe.offsetWidth + 'px';" +
        "   d.style.height = iframe.offsetHeight + 'px';" +
        "   d.style.top = iframe.offsetTop + 'px';" +
        "   d.style.left = iframe.offsetLeft + 'px';" +
        "   d.style.position = 'absolute';" +
        "   d.style.opacity = '0';" +
        "   d.style.filter = 'alpha(opacity=0)';" +
        "   d.style.background = 'black';" +
        "   a.appendChild(d);" +
        "   iframe.offsetParent.appendChild(a);" +
        "}";
    view.loadUrl(javascript);

    super.onPageFinished(view, url);
}
于 2013-06-13T07:46:02.253 に答える
0

Android でアプリケーションを使用せずにビデオを webview で実行する場合は、サーバー側のビデオ プレーヤーが必要です。

Webview はデフォルトで Javascript を許可しません。これは、ビデオ プレーヤーが Web サイトで使用している可能性が最も高いものです。ほとんどの場合、少なくともビデオを再生しようとするために、Webview に Javascript を使用するように指示する必要があります (私はこれを自分で行ったことがないので、通常はビデオのプレーヤー アクティビティを使用します)。

したがって、activies webview オブジェクトを参照することで、次のことができます。

browser = (WebView) findViewById(R.id.webbrowser_wvViewer);    
browser.getSettings().setJavaScriptEnabled(true);

これがあなたに役立つことを願っています.. :)

于 2013-06-13T07:48:09.353 に答える