2013-01-08 41 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