首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >声池没有播放任何声音

声池没有播放任何声音
EN

Stack Overflow用户
提问于 2022-03-02 12:17:47
回答 2查看 43关注 0票数 0

我试图使声音池工作,因为我需要使用它的一个项目。问题是它没有播放任何声音。我只是试着播放一个测试声音,看看它是否有效。希望有人能看到我在这里做错了什么。

代码语言:javascript
运行
复制
public class MainActivity extends AppCompatActivity {

SoundPool soundPool;
int game_over;

@Override
protected void onCreate(
        Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        AudioAttributes audioAttributes = new AudioAttributes
                .Builder()
                .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
                .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                .build();
        soundPool = new SoundPool
                .Builder()
                .setMaxStreams(4)
                .setAudioAttributes(audioAttributes)
                .build();
    }
    
    game_over = soundPool.load(this, R.raw.test, 1);
    soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
        @Override
        public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
            soundPool.play(game_over, 1, 1, 1, 1, 1f);
        }
    });
}

}

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-02 12:27:42

setOnLoadCompleteListener调用之前设置load (应该使用sampleId,因为game_over可能还没有分配)

代码语言:javascript
运行
复制
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
    @Override
    public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
        soundPool.play(sampleId, 1, 1, 1, 1, 1f);
    }
});
game_over = soundPool.load(this, R.raw.test, 1);

afaik所有load方法的SoundPool都是同步的-它们返回已经加载的音频文件的ID。加载音频后设置OnLoadCompleteListener将不会导致调用此侦听器,因为没有更多要加载的内容。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71322571

复制
相关文章

相似问题

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