2016-08-01 73 views
0

我有一些使用JavaScript處理vimeo的問題。Webview與Vimeo frogaloop API

此應用程序在Android 5.0上運行完美,但它不適用於Android電視盒中的Android 4.4。

我的應用程序有兩個部分。代碼爲Android應用程序和JavaScript。

我有這樣的代碼使用javascript:

var player; 
var paused=false; 
var speedSeek=240; 
var current=0; 
var total=0; 
var valor=0; 

$(function() { 
var iframe = $('#player1')[0]; //player1 
player = $f(iframe); 
var status = $('.status'); 


player.addEvent('ready', function() { 
    //status.text('ready'); 

    player.addEvent('pause', onPause); 
    player.addEvent('finish', onFinish); 
    player.addEvent('playProgress',onPlayProgress); 
    player.addEvent('play',onPlay); 
    player.addEvent('seek',onSeek); 
}); 


function onPlay() { 
window.myjava.returnValue("play"); 
} 


function onPause() { 
    window.myjava.returnValue("pause"); 
} 

function onFinish() { 
window.myjava.returnValue("finish"); 
} 

function onSeek() { 
// window.myjava.returnValue("seekeed"); 
} 

function onPlayProgress(data) { 

    current=data.seconds; 
    total=data.duration;        


    if(data.seconds>=data.duration)            
window.myjava.returnValue("finish"); 
} 

}); 



function pause() { 


if(paused==false) { 
    player.api("pause"); 
    paused=true; 
} else { 
    player.api("play"); 
    paused=false; 
} 

} 

function forwarddd() { 
player.api('seekTo',current+25); 
} 

我與JavaScript接口,被稱爲 '米亞瓦' 工作。在這裏,我將消息發送到我的Android應用程序,例如:停止,播放,完成.....

這是一些對Android應用的代碼:

public void loadWebView(String time) { 
    webview.loadUrl("about:blank"); 

    if(videos!=null && videos.size()>0) 
videourl = videos.get(numvideo).getURL() + "/?autoplay=1&byline=0&portrait=0&api=1&player_id=player1"; 



    String html = "<html><head><style>.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; height: auto; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }</style>"; 
    html = html + "<script src=\"http://code.jquery.com/jquery-1.11.0.min.js\"></script></head>"; 
    html = html + "<script src='https://f.vimeocdn.com/js/froogaloop2.min.js'></script><script src='http://www.sourcenet.es/main.js'></script>"; 

    html = html + "<body style='margin: 0; padding: 0'><div class='embed-container'><iframe id='player1' src='" + videourl + "' width='400' id='player1' height='500' frameborder='0' webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div></body></html>"; 

    webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    webview.getSettings().setMediaPlaybackRequiresUserGesture(false); 
    webview.getSettings().setLoadWithOverviewMode(true); 
    webview.getSettings().setDomStorageEnabled(true); 
    webview.getSettings().setUserAgentString("Desktop"); 
    webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webview.setWebChromeClient(chromeClient); 
    webview.addJavascriptInterface(new MyJS(), "myjava"); 
    webview.loadData(html, "text/html", "UTF-8"); 
    webview.setWebContentsDebuggingEnabled(true); 

} 

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 


    if(event.getAction() == KeyEvent.ACTION_DOWN) {  

     switch(event.getKeyCode()) { 

      case 22: 
       webview.loadUrl("javascript:forwarddd()"); 
      break; 


       case 23:             
        webview.loadUrl("javascript:pause()");    //Pausamos 
       break; 

       case 88:      //Change video : back 

        if(numvideo>0) { 
         numvideo--; 
         loadWebView(); 
        } 
       break; 


       case 87:      //Change video 

        if(numvideo<videos.size()-1) { 
         numvideo++; 
         loadWebView(); 
        } 

       break; 



      default: 
       return super.dispatchKeyEvent(event); 
     } 

    } 
    } 


    return true; 
} 

的問題是: webview.loadUrl( 「javacript:正向()」);只有在不服從之後提前幾秒鐘。似乎是視頻有限制,不超過1:20 aprox。如果我嘗試超過1:20我不能。方法:

player.api('seekTo',seconds); 

被執行但它不起作用。我不知道,因爲發生這種情況。

的是被顯示了Android 4.4的MediaPlayer左右的logcat throught一些消息,這些消息是論文:

08-02 17:28:22.178 2361-2361/es.packa.nage E/MediaPlayer: msg : { when=-17ms what=3 arg1=5 target=android.media.MediaPlayer$EventHandler } 

也許這個問題是在媒體播放器?

這並沒有發生在Android 5.0手機,但在我的Android電視盒與Android 4.4它不起作用。

有人可以幫我嗎? 問候。

回答

0

除了logcat中顯示了這個消息時,我就尋求..

08-02 23:54:42.038 23805-23879/package.es.name.name W/MediaPlayer: info/warning (702, 0) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err: java.lang.NullPointerException 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at  android.media.MediaPlayer$EventHandler.record_logfile(MediaPlayer.java:3226) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3466) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at android.os.Looper.loop(Looper.java:136) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5017) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at java.lang.reflect.Method.invokeNative(Native Method) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at java.lang.reflect.Method.invoke(Method.java:515) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604) 
08-02 23:54:42.038 23805-23805/package.es.name.name W/System.err:  at dalvik.system.NativeStart.main(Native Method)