這是問題所在,我想在視頻流開始在videoview中播放時更改播放按鈕以暫停按鈕,但我不知道如何檢測該事件?如何檢測VideoView何時開始播放(Android)?
回答
源。這足以覆蓋我的問題(播放按鈕可繪製更改爲暫停)
IsPlaying模塊()的調用來測試MediaPlayer對象是否處於啓動
據我所知,目前還沒有當視頻開始在VideoView播放發送的事件,但我可以請考慮以下兩種選擇:
- 自己創建一個VideoView版本,在這種情況下發送事件。
- 使用的MediaController(這是默認VideoView)
如果你想跟隨一個選項 - 你可以得到我結束了使用VideoView.setOnPreparedListener的VideoView from here
檢測videoview是否開始使用videoView.getCurrentPosition()的另一種方法。 getCurrentPosition()如果流式傳輸未開始,則返回0。
protected Runnable playingCheck = new Runnable() {
public void run() {
while (true) {
if (vw.getCurrentPosition() != 0) {
// do what you want when playing started
break;
} else {
try {
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
};
然後調用:
new Thread(playingCheck).start();
請試試這個:
final Handler h = new Handler();
h.postDelayed(new Runnable() {
public void run() {
if (videoView.getCurrentPosition() != 0) {
((ProgressBar) rootView.findViewById(R.id.pgStreaming)).setVisibility(View.GONE);
} else {
h.postDelayed(this, 250);
}
}
}, 250);
這裏我們就約MediaPlayer的一篇大文章 - http://www.malmstein.com/blog/2014/08/09/how-to-use-a-textureview-to-display-a-video-with-custom-media-player-controls/
您可以在VideoView設置infoListener
setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// Here the video starts
return true;
}
return false;
}
謝謝,但不幸的是,它要求API> 16 – 2016-01-18 19:16:32
這裏接受的答案不是100%準確的。
有時onprepared是第一幀正在渲染前3秒。我建議有對事件的回調(MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)
mMediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mediaPlayer, int i, int i1) {
if (i == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START){
//first frame was bufered - do your stuff here
}
return false;
}
});
看到媒體信息documantaion的信息/警告的詳細回調: https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_VIDEO_RENDERING_START
- 1. 如何檢測Android VideoView播放中的中斷?
- 2. 如何檢測AVPlayer何時開始/停止播放
- 3. Android VideoView,如何理解播放完成
- 4. 檢測聲音(音樂)何時開始播放並結束?
- 5. 檢測音頻何時開始播放其他應用程序
- 6. 如何檢測VideoView是播放視頻還是緩衝?
- 7. 如何檢測AVPlayer實際開始快速播放
- 8. 如何檢測MediaPlayer對象是否開始播放?
- 9. Android VideoView不會從開始播放視頻,而是在搜索後播放?
- 10. 如何知道何時開始播放音頻android
- 11. 直到VideoView開始播放時才顯示TextView
- 12. Android VideoView流播放混亂
- 13. Android VideoView未播放視頻
- 14. Android VideoView同時播放2個視頻
- 15. Android:如何檢測音頻何時停止播放
- 16. 如何在android中播放視頻時拍攝videoview的快照?
- 17. 當UIWebview開始播放音頻時檢測
- 18. Android VideoView無法播放多播流
- 19. 如何檢測何時在Android鍵盤上按「開始」
- 20. 如何在videoview上播放.mp4視頻
- 21. 如何在VideoView上播放Youtube視頻?
- 22. 檢測音樂何時播放
- 23. videojs播放流時開始
- 24. 如何從listView開始播放歌曲?
- 25. 如何預覽VideoView A而另一個VideoView B正在播放 - Android
- 26. AVPlayer播放時檢測
- 27. 如何使用VideoView/MediaPlayer在Android上播放流媒體視頻
- 28. 如何在VideoView的幫助下播放視頻在android
- 29. 如何在android中的videoview中播放.mp4視頻?
- 30. 如何開始在iPhone上播放音樂播放列表?
OMG,請不要走這條路!你正在輪詢一段時間(真)。這真的很糟糕。 – edoardotognoni 2014-07-25 15:43:01
我同意@edoardotognoni – 2014-09-22 17:43:48
答案的關鍵點不是循環部分,而是getCurrentPosition()方法。我只是想定期調用這個函數來檢測視頻是否啓動。如果需要,可以使用不同的結構進行定期操作。但就像我說的,它不是「我的視頻開始」問題 – 2014-09-25 09:03:17