Vimeo嵌入Phonegap + Android 4.2

时间:2013-01-08 21:55:58

标签: android cordova video vimeo

我正在使用Phonegap 2.1.0和jQuery Mobile 1.2.0为iOS和Android开发应用程序。 iOS版已经完成,但我们正在试验Android的一些问题......

其中一个应用部分是一个视频列表,它们在弹出窗口中的iframe中打开,在iOS中运行良好但是如果我们在Android设备(带有Android 4.2的Nexus 7)中尝试这个,我们只会得到拳头截图,当我们按播放时,只播放声音,没有视频。我们尝试在webview中使用childbrowser打开iframe网址,结果是一样的。只有当我们在外部浏览器(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选项使视频与移动设备兼容同样。

谢谢!

1 个答案:

答案 0 :(得分: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