Android SoundPool 结束事件侦听器?
Android SoundPool end event listener?
我最近开始弄乱 Android。我正试图在声音结束后开始一些事情并且 return 到前一个 activity。
spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
int soundID = spool.load(this, card.getSound(), 1);
spool.play(soundID, 500, 500, 1, 0, 1f);
我看不到有关获取声音持续时间或任何类型的声音结束事件的任何信息。我知道 SoundPool 会很痛苦,所以我愿意放弃它。
声音结束后我该如何做?我可以使用 SoundPool 执行此操作还是我找错树了?
谢谢。我是 Android 和 Java 的新手,所以愿意接受所有建议。
如果 SoundPool
的多流处理功能不是必需的,您可以使用 MediaPlayer
,它确实具有您所询问的回调。
一个粗略的例子:
MediaPlayer mp = MediaPlayer.create(Activity.this, soundId);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// do something
}
});
mp.start();
只需确保您挂在某个地方的 MediaPlayer 引用上,以便它 doesn't get GC'd 在您的 OnCompletionListener 触发之前:)
我最近开始弄乱 Android。我正试图在声音结束后开始一些事情并且 return 到前一个 activity。
spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
int soundID = spool.load(this, card.getSound(), 1);
spool.play(soundID, 500, 500, 1, 0, 1f);
我看不到有关获取声音持续时间或任何类型的声音结束事件的任何信息。我知道 SoundPool 会很痛苦,所以我愿意放弃它。
声音结束后我该如何做?我可以使用 SoundPool 执行此操作还是我找错树了?
谢谢。我是 Android 和 Java 的新手,所以愿意接受所有建议。
如果 SoundPool
的多流处理功能不是必需的,您可以使用 MediaPlayer
,它确实具有您所询问的回调。
一个粗略的例子:
MediaPlayer mp = MediaPlayer.create(Activity.this, soundId);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// do something
}
});
mp.start();
只需确保您挂在某个地方的 MediaPlayer 引用上,以便它 doesn't get GC'd 在您的 OnCompletionListener 触发之前:)