带循环的 Soundpool 无法正常工作

Posted

技术标签:

【中文标题】带循环的 Soundpool 无法正常工作【英文标题】:Soundpool with loop not working properly 【发布时间】:2013-01-01 06:16:19 【问题描述】:

我在显示一些数字时播放了一段声音片段,然后希望它停止。然后我想重复这个过程。

初始化东西:

    private SoundPool soundPool;
    private int soundRoll;
    boolean soundloaded = false;
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() 
      @Override
      public void onLoadComplete(SoundPool soundPool, int sampleId, int status) 
            soundloaded = true;
      
    );
    soundRoll = soundPool.load(this, R.raw.roll, 1);

线程调用:

    public void update() 
    .......
    new Thread(new Runnable() 
       public void run() 
         int streamID = 0;
         streamID = soundPool.play(soundRoll, volume, volume, 1, -1, 1);
         ... loop to animate text....
         soundPool.stop(streamID);
         
    ).start();
    

这每隔一段时间都可以正常工作。 所以它第一次播放并在正确的时间停止。 第二次我什么也没听到 但后来它第三次起作用了

如果我取出循环,那么它可以工作。

任何帮助将不胜感激

【问题讨论】:

尝试改变 streamID = soundPool.play(soundRoll, volume, volume, 1, -1, 1); to streamID = soundPool.play(soundRoll, 音量, 音量, 1, 1, 1);删除 -1 n 检查它 发布你的线程代码.. 【参考方案1】:

似乎如果我从 MP3 切换到 OGG 文件,错误就会消失

【讨论】:

以上是关于带循环的 Soundpool 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

使用 SoundPool 的无缝循环

Soundpool 没有在 android 4.3 中循环

Seekbar 控制 Soundpool,停止工作

Android:应用程序终止后 SoundPool 不工作

React-native 链接无法正常工作

Android Soundpool Issue