Youtube HTML5视频停止在Android中工作

时间:2011-09-15 23:39:18

标签: java android youtube

不知何故Youtube HTML5视频大约一周前停止了我的工作。我不知道为什么。这是上周工作的代码(好吧,不是真正的代码,而是我能做的最小的例子):

public class VideoTestActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        WebView webView = new WebView(this);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setPluginState(PluginState.OFF);
        webView.setWebChromeClient(new TestWebChromeClient());

        setContentView(webView);

        // Try with http://player.vimeo.com/video/24158845 and it works.
        webView.loadUrl("http://www.youtube.com/embed/e2UIg3Ddfp0");
    }

    private class TestWebChromeClient extends WebChromeClient {
        @Override
        public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
            super.onShowCustomView(view, callback);
            VideoTestActivity.this.setContentView(view);
        }
    }
}

这不适用于我的手机或模拟器。疯狂的部分是Vimeo仍然很棒。我尝试设置一个iPhone用户代理,但这不起作用,我没有想法。它真的看起来Youtube已经改变了一些东西......

1 个答案:

答案 0 :(得分:2)

Youtube可能在其嵌入页面中发生了某些变化,很可能这会导致WebView内部出现问题,这就是为什么它不再起作用了。

您是否也在同一台设备上测试应用程序?

我认为使用此解决方案不是一个好习惯,因为您不能依赖于Youtube今天显示的内容并且它可以正常工作,并且在几天之内也会相同你现在刚刚遇到它,它仍然会起作用。我在videosYoutube内容方面也存在类似问题,它可以在一台设备上运行,而在某些其他设备上则无法运行。它也是Flash内容,许多Android设备没有Flash,也无法播放内容。

解决方案是创建一个Intent来播放视频:

      Intent videoIntent=new Intent(Intent.ACTION_VIEW, 
                                     Uri.parse("http://www.youtube.com/my_url"));
      startActivity(videoIntent);

但我建议按照Supported Media Formats中的建议对Android的视频进行编码,如果有可能,请将它们存储在您自己的服务器上。

编辑:他们确实改变了一些东西,因为那里有一个js错误。您可以使用WebChromeClient

跟踪它们
  mWebView.setWebChromeClient(new WebChromeClient(){
        @Override
        public void onConsoleMessage(String message, int lineNumber,
                String sourceID) {
            super.onConsoleMessage(message, lineNumber, sourceID);
            Log.i("VIDEO VIEW",message);
        }
 }

这是我收到的消息错误:

TypeError: Result of expression 'a' [undefined] is not an object.line 78sourcehttp://www.youtube.com/embed/e2UIg3Ddfp0

我不知道它是否对你有所帮助,我稍后再看看,看看能找到什么。