2013-01-08 39 views
2

我正在开发iOS和Android的应用程序与Phonegap 2.1.0和jQuery Mobile 1.2.0。 iOS版本已经完成,但我们正在试验一些Android的问题...Vimeo嵌入在Phonegap + Android 4.2

其中一个应用程序部分是视频列表,它们在iOS中的弹出窗口中的iframe中打开,但运行良好,但如果我们在Android设备(带有Android 4.2的Nexus 7)中试用此功能时,我们只能获得拳头屏幕截图,而当我们按播放时,只播放声音,而不播放视频。我们试图在webview中用childbrowser打开iframe url,结果是一样的。只有当我们在外部浏览器(openExternal)中打开它,它似乎工作。

我想,也许是的Vimeo的球员的问题,但是,当我们尝试播放的视频,我们在日志中看到这样的错误:

01-08 22:45:12.084:E/libEGL(26580):电话与没有当前上下文的OpenGL ES API(记录一次每线程)

01-08 22:45:12.094:d/MediaPlayer的(26580):可以在客户机侧没有打开文件,试图服务器侧

我一直在寻找几个小时没有成功,所以我希望有人可能知道如何使它工作...:/

对于iFrame,我们使用的代码Vimeo给我们从每个视频的嵌入部分(我不能在这里发布它们,因为它们是私人的),并且... Vimeo的选项使视频与移动设备兼容也被标记为。

谢谢!

+0

我有同样的问题:( –

+0

iFrame是在Android的WebView漂亮打破你可能需要找到另一种方式来播放您的Vimeo视频 –

+0

是的,我知道,但如果我们尝试在childbrowser中的直接url结果是一样的,所以这次不是iframe问题:( – YiZhAi

回答

1

HTML

<head> 
    <meta charset="utf-8"> 

    <!-- 
    | WARNING: 
    | For iOS 7, remove the width=device-width and height=device-height attributes. 
    | @see https://issues.apache.org/jira/browse/CB-4323 
    '--> 
    <meta name="viewport" content="width=device-width,height=device-height,target-densitydpi=device-dpi,user-scalable=no,initial-scale=1,minimum-scale=1,maximum-scale=1,minimal-ui"> 

</head> 
<body> 
    <div class="close"> 
     <a href="/cordova:close">fechar</a> 
    </div> 

    <script id="tmpl-player" type="text/template"> 
     <iframe id="video" src="https://player.vimeo.com/video/[[video]]?autoplay=1&autopause=1&byline=0&badge=0&title=0&portrait=1&color=333&loop=0" width="100%" height="100%" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> 
    </script> 

    <script> 
     var bodyEl = document.querySelector('body'); 
     var tmplPlayerEl = window.document.getElementById('tmpl-player'); 
     var tmplPlayer = template(tmplPlayerEl.innerHTML, getURLParams()); 

     function getURLParams() { 
      var query = location.search.substr(1); 
      var result = {}; 
      query.split('&').forEach(function(part) { 
       var item = part.split('='); 
       result[item[0]] = decodeURIComponent(item[1]); 
      }); 
      return result; 
     } 

     function template(raw, data, keep404) { 
      return raw.replace(/\[{2,}[(\s\uFEFF\xA0a-zA-Z0-9_\./]+\]{2,}/gi, function(match, value) { 
       value = match.replace(/^\[{2,}|\s+|\]{2,}$/g, ''); 
       return typeof data[value] !== 'undefined' ? data[value] : (keep404 ? match : ''); 
      }); 
     } 

     var newNode = window.document.createElement('div'); 
     newNode.innerHTML = tmplPlayer; 
     bodyEl.appendChild(newNode); 
    </script> 
</body> 

JAVASCRIPT:

var fsVideo = window.open('vimeo.html?video='+video, '_blank', 'location=no,zoom=no'); 
fsVideo.addEventListener('loaderror', onLoadError); 
fsVideo.addEventListener('loadstop', onLoadStop); 
fsVideo.addEventListener('exit', onExit); 
function onLoadError(evt){ 
    fsVideo.close(); 
} 
function onLoadStop(evt){ 
    evt.url.match('cordova:close') && fsVideo.close(); 
} 
function onExit(evt){ 
    fsVideo.removeEventListener('loaderror', onLoadError); 
    fsVideo.removeEventListener('loadstop', onLoadStop); 
    fsVideo.removeEventListener('exit', onExit); 
    fsVideo = null; 
} 

不要忘记https://github.com/apache/cordova-plugin-inappbrowser