Java 在Android上停止一条轨道(在某一点)
我知道你可以Java 在Android上停止一条轨道(在某一点),java,android,audio,Java,Android,Audio,我知道你可以seekto()使用Mediaplayer,从某一点开始 但是有没有办法让一首曲目(音频播放)在某一点停止?或者必须在计时器循环中使用if语句吗?似乎不可能在不使用计时器循环中的seekto()的情况下对media player执行此操作(如果我错了,请更正我)。但是,您可以尝试将音轨与设置通知标记结合使用: 设置通知标记的位置 并覆盖播放位置更新侦听器 当音轨的播放头位置达到通知标记或增加一定时间时调用的回调的接口定义 似乎不可能(如果我错了,请纠正我)在没有在计时器循环中使用s
seekto()
使用Mediaplayer,从某一点开始
但是有没有办法让一首曲目(音频播放)在某一点停止?或者必须在计时器循环中使用if语句吗?似乎不可能在不使用计时器循环中的seekto()的情况下对media player执行此操作(如果我错了,请更正我)。但是,您可以尝试将音轨与设置通知标记结合使用:
设置通知标记的位置
并覆盖播放位置更新侦听器
当音轨的播放头位置达到通知标记或增加一定时间时调用的回调的接口定义
似乎不可能(如果我错了,请纠正我)在没有在计时器循环中使用seekto()的情况下使用media player执行此操作。但是,您可以尝试将音轨与设置通知标记结合使用:
设置通知标记的位置
并覆盖播放位置更新侦听器
当音轨的播放头位置达到通知标记或增加一定时间时调用的回调的接口定义
可悲的是,AudioTrack的位置回调似乎被严重破坏 遗憾的是,AudioTrack的位置回调似乎被严重破坏 你必须制造会触发的威胁 当它到达停止点时,您必须停止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;
}
}
}
你必须制造会触发的威胁 当它到达停止点时,您必须停止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;
}
}
}
我将尝试一个计时器循环,=]我对效率不太感兴趣,但我猜计时器循环是低效的P:)我会说它更混乱,而不是效率低下,可能不会显著降低应用程序的速度。我会尝试使用计时器循环,=]我对效率不太感兴趣,但我猜计时器循环效率低下?:P:)我会说它比低效更混乱,可能不会明显减慢应用程序的速度。