我正在使用 WebView 来显示嵌入的 Youtube 视频,它适用于 Galaxcy S2 (OS 2.3.5) 而不适用于 Nexus S (OS 2.3.4),我得到的只是没有任何视频显示的白屏。
这是我正在使用的代码片段和清单文件中的声明:
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)。
Manifest 文件中的声明:
<?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" >
.
.
请让我知道,以防您发现我应该在我的代码中更改任何内容,或者帮助提供一个完整的代码,该代码可以支持所有 Android 设备和操作系统,以显示高质量的嵌入式(应用内)Youtube 视频。
更新:注意,我正在寻找的解决方案应该显示高分辨率视频。我使用 VideoView 类让它在不同的设备和操作系统上工作,但视频质量不够好。因此,任何解决方案,包括 VideoView 或 WebView 或任何其他方式,只有在显示高质量的 YouTube 视频时才会被接受。感谢所有响应者!