Youtube вставлять видео не работает в веб-просмотра. Что не так с этим кодом? - PullRequest
8 голосов
/ 14 ноября 2011

Я новичок в Android. У меня сейчас две проблемы 1 . Я проанализировал XML-файл и показал его в веб-просмотре, который содержит видео и текст. Когда я нажимаю на видео, оно не воспроизводится. В XML-видео YouTube вставлять.

Почему это так?

1.Первая проблема: код и изображение

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.web_view);
    Intent intent=getIntent();
    String urlsting=intent.getStringExtra("str"); 
    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginState(PluginState.ON);
    mWebView.getSettings().setPluginsEnabled(true);
    mWebView.setInitialScale(100);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.loadDataWithBaseURL(null, urlsting,"text/html", "utf-8", null);
}

Когда я нажимаю на видео, оно начинает просмотр и показывает только черный экран, тогда ничего не произойдет.

! [] [1]

2. У меня есть встроенный URL-адрес видео, который я дал в теге html, и пытаюсь его загрузить. Они также не работают для меня. Я проверил количество вопросов и блогов, а также не сделал никаких настроек, а затем не смог показать видео. Помощь будет оценена. Спасибо заранее.

String video= "<table bgcolor=\"#666666\"><tr><td><iframe width=\"300\" height=\"260\"     frameborder=\"0\" id=\"player\" type=\"text/html\"src=\"http://www.youtube.com/embed/iiLepwjBhZE?enablejsapi=1&origin=example.com\"></iframe></td></tr><tr><td><iframe width=\"300\" height=\"260\" frameborder=\"0\" id=\"player\" type=\"text/html\"src=\"http://www.youtube.com/embed/lBMMTeuJ_UQ?enablejsapi=1&origin=example.com\"></iframe></td></tr><tr><td><iframe width=\"300\" height=\"260\" frameborder=\"0\" id=\"player\" type=\"text/html\"src=\"http://www.youtube.com/embed/BZMkY3y7nM0?enablejsapi=1&origin=example.com\"></iframe></td></tr><tr><td></table>"; 

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginState(PluginState.ON);
    mWebView.getSettings().setPluginsEnabled(true);
    //mWebView.loadDataWithBaseURL(null,load,"text/html","UTF-8",null);
    mWebView.loadData(video,"text/html","UTF-8");

В этом случае я загружаю видео встраиваемые YouTube в веб-просмотр, но они также не работают.

! [] [2]

Я использую Android 2.3.3 версии. Я также хочу уточнить, есть ли какие-либо требования установить Adobe Flash Player на эмуляторе, но я думаю, что нет, потому что видео работает в браузере. Кто-нибудь может сказать, я прав или нет ?? пожалуйста, попробуйте дать мне решение, потому что я застрял с этой проблемой давно ..

Я также попытался использовать тег объекта следующим образом:

        String obj="<object width=\"300\" height=\"260\"><param name=\"movie\" value=\"http://www.youtube.com/embed/iiLepwjBhZE?enablejsapi=1&origin=example.com\"?version=3&amp;hl=pt_BR&amp;rel=0\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://www.youtube.com/embed/iiLepwjBhZE?enablejsapi=1&origin=example.com\" ?version=3&amp;hl=pt_BR&amp;rel=0\" type=\"application/x-shockwave-flash\" width=\"480\" height=\"330\" allowscriptaccess=\"always\" allowfullscreen=\"true\" /></object>";

Ответы [ 5 ]

8 голосов
/ 25 декабря 2012

Вам нужно

  • установить WebChromeClient для вашего WebView

        web.setWebChromeClient(new WebChromeClient());
    
  • и включите аппаратное ускоренное значение

    <application
    android:hardwareAccelerated="true"...
    

Извлеките http://developer.android.com/reference/android/webkit/WebView.html и прочитайте раздел поддержки видео HTML5.

Это работает для меня ...

2 голосов
/ 03 декабря 2011

тестировали ли вы ваше приложение на реальном устройстве? Потому что такие встроенные видео, т.е. iFrame, загружаются больше времени. В моем случае происходило то же самое, тогда я изменил настройки веб-просмотра на

getSettings().setPluginsEnabled(true);

но после этого он не работал на эмуляторе, а в устройстве он загружался, поэтому я подумал, что он не работает, но только сегодня я попробовал то же самое, и он с удивлением работал нормально Так что вам просто нужно добавить эту строку кода.

Вторым моментом является то, что только те видео, которые встроены в тег iframe, поддерживаются включением плагинов в true.

2 голосов
/ 14 ноября 2011

Я полагаю, вы используете тег iframe в своем HTML-коде. Измените его с помощью тега объекта. Я имею в виду, вы должны использовать объект вместо iframe. Пример здесь:

<object width="480" height="330"><param name="movie" 
value="http://www.youtube.com/v/"here is your video id"?version=3&amp;hl=pt_BR&amp;rel=0">   
</param><param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/"here is your video id"?version=3&amp;hl=pt_BR&amp;rel=0" 
type="application/x-shockwave-flash" width="480" height="330" allowscriptaccess="always" allowfullscreen="true" /></object>

Используйте код ниже:

webview.getSettings().setPluginsEnabled(true);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setAllowFileAccess(true);
webview.loadUrl(url);

Попробуйте и утвердите, как принято, если ваша проблема решена :) 1007

1 голос
/ 28 февраля 2014

Следуйте за этим источником, видео на Youtube должно воспроизводиться

        String youtubeId = "iiLepwjBhZE";
        int width = rl.getWidth();
        int height = rl.getHeight();

        WebChromeClient mWebChromeClient = new WebChromeClient(){

            public void onProgressChanged(WebView view, int newProgress) {
                /*
                view.loadUrl("javascript:(function() { " +  
                        "document.querySelector('iframe').setAttribute('style', 'width: 1080px; height: 1920px'); " + 
                        "})()");
                */
            }
        };

        String video= "<table bgcolor=\"#666666\"><tr><td><iframe width=\"" +
                width +
                "\" height=\"" +
                height +
                "\"frameborder=\"0\" id=\"player\" type=\"text/html\"src=\"http://www.youtube.com/embed/" +
                youtubeId +
                "?enablejsapi=1&origin=example.com\"></iframe> </td> </tr><tr><td></table>"; 

//

        webView.getSettings().setPluginState(PluginState.ON);
        webView.setWebChromeClient(mWebChromeClient);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setAppCacheEnabled(true);
        webView.setInitialScale(1);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        //mWebView.loadDataWithBaseURL(null,load,"text/html","UTF-8",null);
        webView.loadData(video,"text/html","UTF-8");
1 голос
/ 25 сентября 2013

Это делает это:

myWebView.getSettings().setPluginState(PluginState.ON);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setAllowFileAccess(true);
        myWebView.setWebChromeClient(new WebChromeClient());

И включает аппаратное ускорение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...