soundpool - 如何知道 soundpool 何时完成播放音频文件?

标签 soundpool

我正在使用 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/

相关文章:

Android SoundPool 不播放 wav 格式的声音

android - SoundPool无法播放声音(MediaPlayer却可以)

java - 无法使用 STREAM_VOICE_CALL 通过 Android Java 中的 MediaPlayer 播放音频

android - Alarmmanager和Soundpool-Android

android - 使用 SoundPool 播放声音

android - 声音池未执行 “OnLoadComplete”

java - 我似乎找不到如何将 SoundPool 添加到我的特定游戏

android - SoundPool 中的流音量与 AudioManager 中的音量

java - SoundPool 只停止一次

java - 我的 soundpool 项目无法正常播放?