无法在Android中加载Youtube iframe
我正在尝试使用webview和YouTube iframe api在android设备上播放YouTube视频。在4.2设备上测试时,它在4.2.2 Nexus4上也能工作。但当我在Sony Xpedia L上试用时,它显示缓冲状态,但视频从未加载(附带屏幕截图)。有什么办法可以解决这个问题?有什么建议吗 我的代码如下 JAVA代码无法在Android中加载Youtube iframe,android,youtube-api,youtube-javascript-api,Android,Youtube Api,Youtube Javascript Api,我正在尝试使用webview和YouTube iframe api在android设备上播放YouTube视频。在4.2设备上测试时,它在4.2.2 Nexus4上也能工作。但当我在Sony Xpedia L上试用时,它显示缓冲状态,但视频从未加载(附带屏幕截图)。有什么办法可以解决这个问题?有什么建议吗 我的代码如下 JAVA代码 wvVideo = (WebView)findViewById(R.id.wvVideo); wvVideo.setWebChromeClient(new We
wvVideo = (WebView)findViewById(R.id.wvVideo);
wvVideo.setWebChromeClient(new WebChromeClient());
WebSettings webSettings = wvVideo.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setMediaPlaybackRequiresUserGesture(false);
wvVideo.addJavascriptInterface(new WebAppInterface(this), "Android");
wvVideo.loadUrl("http://test.com/iframeYouTube.html?videoid="+videoURL);
wvVideo.loadUrl("javascript:playVideo();");
XML
HTML
变量查询=函数(){
var query_string={};
var query=window.location.search.substring(1);
var vars=query.split(&);
for(var i=0;istringhtml=getHTML(url);
MainActivity.webview.getSettings().setJavaScriptEnabled(true);
MainActivity.webview.getSettings().setPluginState(PluginState.ON);
最终字符串mimeType=“text/html”;
最终字符串编码=“UTF-8”;
MainActivity.webview.setWebViewClient(新的WebViewClient());
MainActivity.webview.setWebChromeClient(新的WebChromeClient());
webview.loadDataWithBaseURL(“”,html,mimeType,
编码“”;
公共静态字符串getHTML(字符串str){
字符串html=“\n”
+“\n”;
返回html;
}
stringhtml=getHTML(url);
MainActivity.webview.getSettings().setJavaScriptEnabled(true);
MainActivity.webview.getSettings().setPluginState(PluginState.ON);
最终字符串mimeType=“text/html”;
最终字符串编码=“UTF-8”;
MainActivity.webview.setWebViewClient(新的WebViewClient());
MainActivity.webview.setWebChromeClient(新的WebChromeClient());
webview.loadDataWithBaseURL(“”,html,mimeType,
编码“”;
公共静态字符串getHTML(字符串str){
字符串html=“\n”
+“\n”;
返回html;
}
我也面临同样的问题,我唯一能说的是,这个错误与Android版本有关。特别是,正如我发布的:
- 在Android 4版本中,无法自动播放。用户必须在iframe中按播放按钮才能开始播放视频。特别是:
- 在安卓4.1中,它会复制音频,但不会复制图像
- 在安卓4.3中,我测试了可以重现音频但没有声音的设备
无法复制任何内容的视频和设备
- 在Android 4.4中,不要复制任何内容
- 从Android 5和+开始,一切正常
我花了太多的时间试图去做,但我找不到方法:(我面临着同样的问题,我唯一能说的是,这个错误与Android版本有关。特别是,正如我发布的:
- 在Android 4版本中,无法自动播放。用户必须在iframe中按播放按钮才能开始播放视频。特别是:
- 在安卓4.1中,它会复制音频,但不会复制图像
- 在安卓4.3中,我测试了可以重现音频但没有声音的设备
无法复制任何内容的视频和设备
- 在Android 4.4中,不要复制任何内容
- 从Android 5和+开始,一切正常
我花了太多时间试着去做,却找不到方法:(在同一部手机的Google Chrome中打开的相同视频url正常工作!在应用程序中出现问题..在同一部手机的Google Chrome中打开的相同视频url正常工作!在应用程序中出现问题..在同一部手机的Google Chrome中打开的相同视频url正常工作!在应用程序中出现问题作为一个问题..尝试了这个..问题坚持:(对不起,兄弟,但它对我的所有设备都有效,但我没有索尼手机:(你也遇到过同样的问题吗?!尝试过这个..问题坚持:(对不起,兄弟,但它对我的所有设备有效,但我没有索尼手机)(你也遇到过同样的问题吗?!尝试了这个..问题坚持:(对不起,兄弟,但这对我的所有设备都有效,但我没有索尼手机:(你也面临同样的问题吗?!
<WebView
android:id="@+id/wvVideo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:background="#212121"></WebView>
<!DOCTYPE html>
<html style="height:100%;margin:0;padding:0;width:100%">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body style="background:#212121;height:100%;margin:0;padding:0">
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player" style="margin:0;padding:0"></div>
<script>
var Query = function () {
var query_string = {};
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if (typeof query_string[pair[0]] === "undefined") {
query_string[pair[0]] = pair[1];
} else if (typeof query_string[pair[0]] === "string") {
var arr = [ query_string[pair[0]], pair[1] ];
query_string[pair[0]] = arr;
} else {
query_string[pair[0]].push(pair[1]);
}
}
return query_string;
} ();
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height:'100%',width:'100%',
videoId: Query.videoid,
playerVars: { 'autoplay': 0, 'controls': 0, 'showinfo':0, 'modestbranding':1},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
cueCheck();
timerFunction();
videoLength();
}
var done = false;
function onPlayerStateChange(event) {
Android.playState(event.data+"");
if (event.data == YT.PlayerState.PLAYING && !done) {
done = true;
}
}
function cueCheck()
{
Android.playState("cued");
}
function timerFunction(){
console.log("function");
Android.updateTimer(player.getCurrentTime()+"");
setTimeout(timerFunction, 20);
}
function videoLength(){
Android.getVideoLength(player.getDuration()+"");
}
function seekTo(val) {
player.seekTo(val);
// player.playVideo();
}
function pauseVideo(){
player.pauseVideo()
}
function playVideo(){
player.playVideo()
}
</script>
</body>
</html>
String html = getHTML(url);
MainActivity.webview.getSettings().setJavaScriptEnabled(true);
MainActivity.webview.getSettings().setPluginState(PluginState.ON);
final String mimeType = "text/html";
final String encoding = "UTF-8";
MainActivity.webview.setWebViewClient(new WebViewClient());
MainActivity.webview.setWebChromeClient(new WebChromeClient());
webview.loadDataWithBaseURL("", html, mimeType,
encoding, "");
public static String getHTML(String str) {
String html = "<iframe class=\"youtube-player\" style=\"overflow:hidden; width: 100%; height: 95%; scrolling=\"no\" padding:0px; margin:0px\" id=\"ytplayer\" type=\"text/html\" src=\"http://www.youtube.com/embed/"
+ str
+ "?html5=1&autoplay=1 & fs=0\" frameborder=\"0\" >\n"
+ "</iframe>\n ";
return html;
}