首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果没有API8中引入的onLoadCompleteListener,如何检查SoundPool是否可以播放?

如果没有API8中引入的onLoadCompleteListener,如何检查SoundPool是否可以播放?
EN

Stack Overflow用户
提问于 2015-01-09 01:07:20
回答 1查看 470关注 0票数 2

Android程序如何检查Sound是否就绪,并在较旧版本的Android中播放?通常人们会这样告诉我们做Soundpool:

代码语言:javascript
复制
   soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
            loaded = true;
        }
    });
    soundID = soundPool.load(this, R.raw.beep, 1);

但是onLoadCompleteListener是在API8中引入的,所以它不能工作。我的程序听不到任何声音。检查声音是否可以播放的替代方法是什么?我只想放一些音乐作为背景。

EN

回答 1

Stack Overflow用户

发布于 2018-06-03 04:07:33

这可能是一个未知点,但在API 8之前,我会尝试以0.0音量播放声音来检查声音是否准备好了,看看它是否返回了一个正的流ID。如果没有,我会睡眠并循环到“准备”阶段,直到它播放为止。

代码语言:javascript
复制
// Briefly play the stream at zero volume to get it decoded and prepped.
int stream = soundPool.play( soundPoolId, 0.0f, 0.0f, 1, 0, 1.0f );
if (stream > 0)
{
  soundPool.stop(stream);
  isPrepared = true;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27845694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档