这是问题所在,我想在视频流开始在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. 如何检测AVPlayer何时开始/停止播放
- 2. Android VideoView,如何理解播放完成
- 3. 检测声音(音乐)何时开始播放并结束?
- 4. 检测音频何时开始播放其他应用程序
- 5. 如何检测VideoView是播放视频还是缓冲?
- 6. 如何检测AVPlayer实际开始快速播放
- 7. 直到VideoView开始播放时才显示TextView
- 8. Android VideoView同时播放2个视频
- 9. 如何在android中播放视频时拍摄videoview的快照?
- 10. AVPlayer播放时检测
- 11. 如何使用VideoView/MediaPlayer在Android上播放流媒体视频
- 12. 如何通过点击LinkLabel开始播放播放列表?
- 13. 如何从开始播放AVAudio播放器?
- 14. 如何判断QTMovie何时开始播放?
- 15. Android:视频不能播放Videoview
- 16. 无法使用Android播放MP4 VideoView
- 17. 使用VideoView在Android中播放RTSP mrl
- 18. 在Android上播放RTMP视频流videoview
- 19. 在Android中使用VideoView播放视频
- 20. Android 3.1/Galaxy Tab/VideoView不会播放
- 21. 的Android VideoView不能播放.avi
- 22. Android VideoView不会播放MKV文件
- 23. 如何检测iPod播放的歌曲
- 24. 如何检测歌曲播放完成?
- 25. 检测用户何时开始录像
- 26. 如何在Android中开始播放之前添加延迟?
- 27. 如何检测HTML5视频何时播放第一帧?
- 28. 如何检测音效何时播放完毕?
- 29. 钛如何打开播放列表android
- 30. 如何在播放Flash视频时检测时间
OMG,请不要走这条路!你正在轮询一段时间(真)。这真的很糟糕。 – edoardotognoni 2014-07-25 15:43:01
我同意@edoardotognoni – 2014-09-22 17:43:48
答案的关键点不是循环部分,而是getCurrentPosition()方法。我只是想定期调用这个函数来检测视频是否启动。如果需要,可以使用不同的结构进行定期操作。但就像我说的,它不是“我的视频开始”问题 – 2014-09-25 09:03:17