我正在使用 soundpool 来播放我录制的文件。我只是想知道有什么方法可以知道 soundpool 何时完成播放。下面是我的工作代码。
public void soundPool() {
final float playbackSpeed = 1.5f;
final SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,
100);
final int soundId = soundPool.load(audiofile.getAbsolutePath(), 1);
AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
final float volume = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool arg0, int arg1, int arg2) {
soundPool.play(soundId, volume, volume, 1, 0, playbackSpeed);
}
});
}
最佳答案
不幸的是,没有提供监听器来告知 SoundPool 何时完成播放样本。如果您需要此功能,请使用 MediaPlayer。
作为一种黑客,您可以从音频编辑器获取音频文件的长度(以毫秒 (X) 为单位),然后在您告诉应用程序播放后在应用程序中设置一个计时器。计时器设置为在 X 毫秒后触发一次。这样您就可以大概知道您的声音是否已经播放完毕。然而,这是一种非常不可靠的方法,如果有帮助的话应该避免。相反,应将 MediaPlayer 类与 MediaPlayer.OnCompletionListener() 结合使用。
关于soundpool - 如何知道 soundpool 何时完成播放音频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567242/