【问题标题】:Showing youtube video in webview its displaying the Blank page;while clicking the play button the screen will becomes blank在 webview 中显示 youtube 视频,它显示空白页面;单击播放按钮时,屏幕将变为空白
【发布时间】:2014-02-12 02:49:19
【问题描述】:

我正在从我的服务器获取 youtube id 并制作为 youtube 嵌入 url,之后我在 listview 中显示该 youtube url,同时单击 listitem youtube 视频必须在 webview 中播放,这是我的要求,我尝试了所有对我不起作用的方法,它显示空白页

像这样我从我的服务器获取并制作为 youtube url

app1.setUrlWiki("http://www.youtube.com/embed/"+json.getString("youtube_url")+"?fs=0");

这是我的 mainactivity.java

lv2 =(ListView)findViewById(R.id.listV_main);   
        lv2.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                Object o = lv2.getItemAtPosition(position);
                Application1 obj_itemDetails = (Application1)o;


                Intent intent1=new Intent(PoojaVideos.this,WebViewActivity.class);
                //Log.d("test","strContactList: "+strContactList);
                //intent1.putExtra("firstKeyName", Uri.parse(((Application1) o).getUrlWiki()));
                String link = Uri.parse(((Application1) o).getUrlWiki()).toString();
                intent1.putExtra("firstKeyName", link);
                startActivity(intent1);


            } 
        });

从那里我根据点击将 url 发送到 webview 活动

webviewactivity.java 音频单独来了,但视频没有显示

 public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.webview);
             //wv = (WebView) findViewById(R.id.webView);

              mContentView = (FrameLayout) findViewById(R.id.main_content);
             wv = (WebView) findViewById(R.id.webView);
             mCustomViewContainer = (FrameLayout) findViewById(R.id.fullscreen_custom_content);

            wv.getSettings().setJavaScriptEnabled(true);
            wv.getSettings().setPluginsEnabled(true);
            wv.setWebChromeClient(new WebChromeClient() {
            });
            final String mimeType = "text/html";
            final String encoding = "UTF-8";
            String html = getHTML();
            System.out.println(".................."+html);
            wv.loadDataWithBaseURL("", html, mimeType, encoding, "");

        }

        public String getHTML() {

            Intent intent1= getIntent(); // gets the previously created intent
        String firstKeyName1 = intent1.getStringExtra("firstKeyName");
             Toast.makeText(this, firstKeyName1, 1000).show();
             System.out.println("kkkkk."+firstKeyName1);
             String html = "<iframe class=\"youtube-player\" style=\"border: 0; width: 100%; height: 95%; padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\"  src="firstKeyName1" frameborder=\"0\">\n"
                        + "</iframe>\n";

                return html;

        }

webview.xml

<WebView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

点击播放按钮时,音频正在运行,但视频不显示,显示黑屏。**

**According to the answer i changed my code,now its working fine;i checked in device its working fine but in emulator audio only coming.so guys check in device**

【问题讨论】:

  • 你服务器上的 youtube id,你能在这里显示任何一个吗?
  • @AnkitMakwana 01-23 06:47:42.157: I/System.out(3168): kkkkk.youtube.com/embed/dRAuRhXghHA?fs=0 01-23 06:47:42.177: I/System.out(3168) : ..................跨度>
  • 现在发生了什么,伙计,点击播放按钮时音频即将到来,但视频未显示@AnkitMakwana
  • @AnkitMakwana 从那里他们以不同的方式讲述,是不是 webview 不起作用啊伙计?

标签: java android webview youtube


【解决方案1】:

你必须这样设置html字符串中的url:

String html = "<iframe class=\"youtube-player\" style=\"border: 0; width: 100%; height: 95%; padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\" src='"+firstKeyName1 +"' frameborder=\"0\">\n"
                        + "</iframe>\n";

现在您可以在该屏幕上轻松查看 youtube 视频。

【讨论】:

  • 是的,我使用了您的代码,它是正确的,但是在单击播放按钮时它显示黑屏,但是音频来了,视频没有显示@Avijit
  • 它的工作,在模拟器中没有显示,同时检查设备它运行完美..
【解决方案2】:

根据文档

为了在您的应用程序中支持内嵌 HTML5 视频,您需要 打开硬件加速,并设置 WebChromeClient。 对于全屏支持,onShowCustomView(View, WebChromeClient.CustomViewCallback) 和 onHideCustomView() 是 必需,getVideoLoadingProgressView() 是可选的。

android:hardwareAccelerated="true" 放入您的AndroidManifest。

【讨论】:

  • 你也可以在 WebView 上设置它,可以是 XML 也可以是程序化的 webView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2020-07-17
  • 2013-08-25
  • 1970-01-01
相关资源
最近更新 更多