我正在使用 WebView 来显示嵌入的 YouTube 视频,这在 Galaxcy S2 (OS 2.3.5) 上可以工作,但在 Nexus S (OS 2.3.4) 上不行,所有我只能看到一个白屏,没有视频显示。以下是我使用的代码片段以及 Manifest 文件中的声明:
清单文件中的声明:
更新: 请注意,我需要的解决方案应该能够显示高分辨率视频。我已经使用VideoView类在不同的设备和操作系统上实现了它,但是视频质量并不够好。因此,任何包括VideoView或WebView或其他方式的解决方案都将被接受,只要它能够显示高质量的YouTube视频即可。感谢所有回答者!
private WebView wv;
private void setWebView()
{
wv = (WebView) findViewById(R.id.webView);
wv.setWebChromeClient(new WebChromeClient());
wv.getSettings().setPluginState(WebSettings.PluginState.ON);
wv.setWebViewClient(new WebViewClient());
wv.getSettings();
wv.setBackgroundColor(0x00000000);
wv.setKeepScreenOn(true);
wv.setHorizontalScrollBarEnabled(false);
wv.setVerticalScrollBarEnabled(false);
wv.getSettings().setBuiltInZoomControls(true);
final String mimeType = "text/html";
final String encoding = "UTF-8";
String html = getHTML();
wv.loadDataWithBaseURL("", html, mimeType, encoding, "");
}
public String getHTML()
{
String html = "<html>"
+ "<head>"
+ "</head>"
+ "<body style=\"border: 0; padding: 0\">"
+ "<iframe "
+ "type=\"text/html\" "
+ "class=\"youtube-player\" "
+ "width= 100%\""
+ "\" "
+ "height= 95%\""
+ "\" "
+ "src=\"http://www.youtube.com/v/"
+ selected_video
+ "?controls=0&showinfo=0&showsearch=0&modestbranding=0" +
"&autoplay=1&fs=1&vq=hd720\" " + "frameborder=\"0\"></iframe>"
+ "</body>"
+ "</html>";
return html;
}
注意:参数"selected_video"是视频哈希值(VideoID)。清单文件中的声明:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
.
.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
.
.
android:hardwareAccelerated="true" >
.
.
请告诉我是否有任何需要改变的地方,或者提供一份完整的代码来支持在所有安卓设备和操作系统上显示嵌入式(应用内)高质量Youtube视频。更新: 请注意,我需要的解决方案应该能够显示高分辨率视频。我已经使用VideoView类在不同的设备和操作系统上实现了它,但是视频质量并不够好。因此,任何包括VideoView或WebView或其他方式的解决方案都将被接受,只要它能够显示高质量的YouTube视频即可。感谢所有回答者!