2

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

应用程序部分之一是视频列表,它们在弹出窗口内的 iframe 中打开,在 iOS 中运行良好,但如果我们在 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 使视频与移动设备兼容的选项也被标记。

谢谢!

4

1 回答 1

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

于 2015-07-03T22:47:34.930 回答