为 MediaPlayer 设置回调以在 X 秒后调用
Set a callback for MediaPlayer to get called after X seconds
我得到了一个 MediaPlayer 对象,比方说,歌曲播放 5 秒后应该调用回调。
如何使用 MediaPlayer 将其存档?
或者是否需要创建一个包装器,启动一个新线程,在该线程中等待 5 秒并调用回调函数?
MediaPlayer 没有任何此类功能,但实现此功能的一种方法是使用 Handler.postDelayed(Runnable, long)
。这将在特定延迟后执行 Runnable。
https://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)
另一种选择是Timer.schedule(TimerTask, long)
。
https://developer.android.com/reference/java/util/Timer.html#schedule(java.util.TimerTask, 长)
Handler 是您正在寻找的东西,因为媒体播放器没有任何 api 这方面的东西。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 2000ms
playMusic()
}
}, 2000);
我得到了一个 MediaPlayer 对象,比方说,歌曲播放 5 秒后应该调用回调。
如何使用 MediaPlayer 将其存档?
或者是否需要创建一个包装器,启动一个新线程,在该线程中等待 5 秒并调用回调函数?
MediaPlayer 没有任何此类功能,但实现此功能的一种方法是使用 Handler.postDelayed(Runnable, long)
。这将在特定延迟后执行 Runnable。
https://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)
另一种选择是Timer.schedule(TimerTask, long)
。
https://developer.android.com/reference/java/util/Timer.html#schedule(java.util.TimerTask, 长)
Handler 是您正在寻找的东西,因为媒体播放器没有任何 api 这方面的东西。
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 2000ms
playMusic()
}
}, 2000);