在Android上停止曲目(在某个点)

时间:2010-04-25 19:02:48

标签: java android audio

我知道你可以用Mediaplayer'寻求()'...(从某一点开始)

但有没有人知道是否有办法制作曲目(播放音频)......停在某一点? - 或者必须使用定时器循环上的if语句吗?

请帮忙......

非常感谢,

詹姆斯

3 个答案:

答案 0 :(得分:1)

似乎不可能(如果我错了,请纠正我)使用媒体播放器执行此操作而无需在计时器循环中使用seekto()。但是,您可以尝试将AudioTrack与设置通知标记结合使用:

AudioTrack.setNotificationMarkerPosition

  

设置通知标记的位置。

并覆盖播放位置更新侦听器AudioTrack.OnPlaybackPositionUpdateListener

  

当AudioTrack的播放头位置已达到通知标记或已增加一段时间时调用的回调的接口定义。

答案 1 :(得分:0)

可悲的是,AudioTrack的位置回调似乎被严重打破了。 http://code.google.com/p/android/issues/detail?id=2563

答案 2 :(得分:0)

你必须制造将触发getCurrentPosition()的威胁。

当它到达停止点时,你必须停止MediaPlayer。

public void run() {
    while (mp != null && mPosition < mTotal) {
        try {
            Thread.sleep(500); // you can modify sleep time for better accuracy
            if (mp.isPlaying()) {
                mPosition = mp.getCurrentPosition();
                if (mPosition == mYourStopPoint) { //remember to set mYourStopPoint
                    mp.stop();
                    break;
                }
            }
        } catch (InterruptedException e) {
            return;
        } catch (Exception e) {
            return;
        }

    }
}

onPreapared回调中启动此主题。

public void onPrepared(MediaPlayer genericPlayer) {
    mTotal = mp.getDuration();
    new Thread(this).start();
}