【问题标题】:Android 2.2 - SoundPool sample 0 is not READYAndroid 2.2 - SoundPool 示例 0 未就绪
【发布时间】:2011-10-16 18:20:42
【问题描述】:

我搜索了 StackOverflow,但找不到像我这样的情况。我正在使用四个按钮,每个按钮播放一个声音文件。
我正在使用 SoundPool:
SoundPool sound = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);

我也在使用OnLoadCompleteListener(),它使用 Log 在 LogCat 中创建 I 通知。
当我在模拟器中启动程序时,我看到所有四个样本都已完成加载。在节目中,三个声音会播放,但是,一个总是说:
WARN/SoundPool(4842): sample 0 not READY

任何想法..因为我很吃惊。声音文件是播放方波音调的 16 位 pcm 波形文件。
加载代码:
sound.setOnLoadCompleteListener(new OnLoadCompleteListener(){

        @Override
        public void onLoadComplete(SoundPool sound, int sampleId, int status) {
            if(status != 0)
                Log.e("SOUND LOAD"," Sound ID: " + sampleId + " Failed to load.");
            else
                Log.i("SOUND LOAD"," Sound ID: " + sampleId + " loaded.");
        }
    });

    soundID[0] = sound.load(this, R.raw.greennote, 1);
    soundID[1] = sound.load(this, R.raw.rednote, 1);
    soundID[2] = sound.load(this, R.raw.yellownote, 1);
    soundID[3] = sound.load(this, R.raw.bluenote, 1);


播放声音:

streamid.setStreamId(myActivity.sound.play(id, 0.5f, 0.5f, 0, 0, 1));

【问题讨论】:

  • 编辑您的问题以包含加载和播放声音的代码。

标签: android soundpool


【解决方案1】:

我也有同样的问题。从我的实验来看,ID 处理似乎有问题。 SoundPool 只是不喜欢编号为 0 的声音 ID。

所以我找到了解决方法。我的示例 ID 以 1 开头,而不是 0。希望这可行。

【讨论】:

  • 你是怎么做到的?我的意思是您的示例 ID 以 1 开头?
  • 嗯,我使用 SoundPool 和 HashMap 来跟踪所有不同的声音。使用 HashMap,您可以手动设置 ID(也称为“键”)。由于听起来您没有使用 HashMap,因此我的评论可能没有意义。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2020-07-26
  • 2021-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多