2012-08-03 118 views
1

我對android開發頗爲陌生,目前我正在開發一個非常簡單的應用程序,其中也包含一些視頻。爲了演示我的問題,我在我的res/raw /目錄中有兩個視頻(例如video1.mp4和video2.mp4)。我希望在第一個結束後立即開始播放第二個視頻。這是我如何調用視頻:Android VideoView - 在某些設備上更改路徑後的空白視頻

public void showVideo1() { 
    VideoView vd = (VideoView)findViewById(R.id.videoview); 
    vd.setVideoPath("android.resource://com.myapp.hello/" + R.raw.video1); 
    vd.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
    {   
     public void onCompletion(MediaPlayer mp) 
     { 
      Log.d("VideoComplete", "Video 1 is complete"); 
      showVideo2(); // start playing the second video... 
     }   
    }); 
    vd.start(); 
} 


public void showVideo2() { 
    VideoView vd = (VideoView)findViewById(R.id.videoview); 
    vd.setVideoPath("android.resource://com.myapp.hello/" + R.raw.video2); 
    vd.setOnCompletionListener(new MediaPlayer.OnCompletionListener() 
    {   
     public void onCompletion(MediaPlayer mp) 
     { 
      Log.d("VideoComplete", "Video 2 is complete"); 
     }   
    }); 
    vd.start(); 
} 

此示例適用於大多數設備 - 我稱之爲showVideo1()調用showVideo2,無論是播放視頻時,就是這樣。但是我發現有些設備不會播放第二個視頻(???)。例如,我的舊三星Galaxy 5 i5500在完成第一個視頻後只顯示一個空白屏幕 - 我可以在調試中看到第二個視頻已加載並開始播放,但不顯示 - 第一個視頻播放沒有問題。這款手機使用的是Android v2.2,我也嘗試過使用相同操作系統版本的其他設備(Galaxy Tab GT-P1000),並在這裏播放了兩個視頻。

我試圖重新編碼視頻(認爲這是一個編解碼器錯誤),但仍然沒有運氣。我也玩過setZOrderOnTop(true),seekTo(0)......,這讓我瘋狂。

有什麼建議嗎?我未來的應用取決於這個功能(能夠在所有設備上播放一個視頻),所以我真的非常渴望這一點。

+0

看來你的設備不支持第二個視頻。你是否嘗試在另一個應用中播放第二個視頻? – busylee 2015-06-15 11:25:39

回答

0

您可以在Video1的onCompleteListener中創建一個Handler,並在一段時間後檢查您的視頻是否正在播放。您可以進一步嘗試停止Video2並在可運行模式中再次播放它,並嘗試不同的事情,以瞭解其他設備是否絕對不可能支持您的邏輯。跟蹤從LogCat發生的事件。好運

相關問題