Java 如何在WebView或VideoView中播放Youtube url

Java 如何在WebView或VideoView中播放Youtube url,java,android,youtube,Java,Android,Youtube,我只是想在WebView或VideoView中播放youtube url。假设。我已经学习了很多教程,但是我找不到一个方法 WebViewActivity 在onCreate()中 而MyOwnWebViewClient是 public class MyOwnWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view

我只是想在WebView或VideoView中播放youtube url。假设。我已经学习了很多教程,但是我找不到一个方法

WebViewActivity

在onCreate()中

而MyOwnWebViewClient是

public class MyOwnWebViewClient extends WebViewClient
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view , String url)
        {
            view.loadUrl(url);

            return true;
        }
    }
视频活动

在onCreate()中

VideoViewTask.java在哪里

public class VideoViewTask extends AsyncTask<String, Void, String>
{
    ProgressDialog progressDialog;

    Context contexto;

    VideoView videoViewo;

    public VideoViewTask(Context context,VideoView videoView)
    {
        contexto = context;

        videoViewo = videoView;
    }

    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();

        progressDialog = ProgressDialog.show(contexto, "", "Loading Video wait...", true);
    }
    @Override
    protected String doInBackground(String... arg0)
    {
        String videoUrl = "";
        try
        {
            String url =  "http://www.androidbegin.com/tutorial/AndroidCommercial.3gp";//"http://www.youtube.com/watch?v=1FJHYqE0RDg";
            videoUrl = getUrlVideoRTSP(url);
            //Log.e("Video url for playing=========>>>>>", videoUrl);
        }
        catch (Exception e)
        {
            //Log.e("Login Soap Calling in Exception", e.toString());
        }
        return videoUrl;
    }


    @Override
    protected void onPostExecute(String result)
    {
        super.onPostExecute(result);

        progressDialog.dismiss();

        videoViewo.setVideoURI(Uri.parse(result));
        MediaController mc = new MediaController(contexto);
        videoViewo.setMediaController(mc);
        videoViewo.requestFocus();
        videoViewo.start();          
        mc.show();


    }

    public static String getUrlVideoRTSP(String urlYoutube)
    {
        try
        {
            String gdy = "http://gdata.youtube.com/feeds/api/videos/";
            DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            String id = extractYoutubeId(urlYoutube);
            URL url = new URL(gdy + id);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            Document doc = documentBuilder.parse(connection.getInputStream());
            Element el = doc.getDocumentElement();
            NodeList list = el.getElementsByTagName("media:content");///media:content
            String cursor = urlYoutube;
            for (int i = 0; i < list.getLength(); i++)
            {
                Node node = list.item(i);
                if (node != null)
                {
                    NamedNodeMap nodeMap = node.getAttributes();
                    HashMap<String, String> maps = new HashMap<String, String>();
                    for (int j = 0; j < nodeMap.getLength(); j++)
                    {
                        Attr att = (Attr) nodeMap.item(j);
                        maps.put(att.getName(), att.getValue());
                    }
                    if (maps.containsKey("yt:format"))
                    {
                        String f = maps.get("yt:format");
                        if (maps.containsKey("url"))
                        {
                            cursor = maps.get("url");
                        }
                        if (f.equals("1"))
                            return cursor;
                    }
                }
            }
            return cursor;
        }
        catch (Exception ex)
        {
            Log.e("Get Url Video RTSP Exception======>>", ex.toString());
        }
        return urlYoutube;

    }

    protected static String extractYoutubeId(String url) throws MalformedURLException
    {
        String id = null;
        try
        {
            String query = new URL(url).getQuery();
            if (query != null)
            {
                String[] param = query.split("&");
                for (String row : param)
                {
                    String[] param1 = row.split("=");
                    if (param1[0].equals("v"))
                    {
                        id = param1[1];
                    }
                }
            }
            else
            {
                if (url.contains("embed"))
                {
                    id = url.substring(url.lastIndexOf("/") + 1);
                }
            }
        }
        catch (Exception ex)
        {
            Log.e("Exception", ex.toString());
        }
        return id;
    }
}

请按照下面的例子。我试过android开发者的视频。效果很好。只在应用程序中玩

 WebView wv=(WebView)findViewById(R.id.webview);
     wv.getSettings().setJavaScriptEnabled(true);
    //wv.getSettings().setPluginsEnabled(true);
    final String mimeType = "text/html";
    final String encoding = "UTF-8";
    String html = getHTML();
    wv.setWebChromeClient(new WebChromeClient() {
    });
    wv.loadDataWithBaseURL("", html, mimeType, encoding, "");
在oncreate中添加上述代码

public String getHTML() {
String html = "<iframe class=\"youtube-player\" style=\"border: 0; width: 100%; height: 95%; padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\" src=\"http://www.youtube.com/embed/"
        + "s-4J7cijPAo"
        + "?fs=0\" frameborder=\"0\">\n"
        + "</iframe>\n";
return html;
公共字符串getHTML(){
字符串html=“\n”
+“\n”;
返回html;

插入您的youtube视频id,如上所述。

您是否尝试在不使用youtube API的情况下使用youtube android apiNo。我想在不使用youtube API的情况下播放该视频。@Nepster使用intentPlease Reference和在WebView中加载youtube视频会发生什么?Rambau我没有安装youtube player,因此它会转到catch block。哪一个所以不要播放itRamBabu youtube在我们地区是被禁止的。它显示图像,但我无法播放。当我播放它时,它说“视频包含UMG的内容。它被限制在某些网站上播放。”您是否尝试使用上述确切代码。我的应用程序中也有相同的视频。它说网站无法访问。禁止在您的区域内观看
public void watchYoutubeVideo(String id)
    {
        try
        {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:" + id));

            startActivity(intent);

        }
        catch (ActivityNotFoundException ex)
        {
            Intent intent = new Intent(Intent.ACTION_VIEW,
                    Uri.parse("http://www.youtube.com/watch?v=" + id));
            startActivity(intent);
        }
    }
 WebView wv=(WebView)findViewById(R.id.webview);
     wv.getSettings().setJavaScriptEnabled(true);
    //wv.getSettings().setPluginsEnabled(true);
    final String mimeType = "text/html";
    final String encoding = "UTF-8";
    String html = getHTML();
    wv.setWebChromeClient(new WebChromeClient() {
    });
    wv.loadDataWithBaseURL("", html, mimeType, encoding, "");
public String getHTML() {
String html = "<iframe class=\"youtube-player\" style=\"border: 0; width: 100%; height: 95%; padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\" src=\"http://www.youtube.com/embed/"
        + "s-4J7cijPAo"
        + "?fs=0\" frameborder=\"0\">\n"
        + "</iframe>\n";
return html;