首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Alarmmanager & Soundpool - Android

Alarmmanager & Soundpool - Android
EN

Stack Overflow用户
提问于 2012-09-03 14:26:17
回答 1查看 543关注 0票数 0

我在做一个警报系统。报警器工作正常,但声音不起作用。我正在做一个小测试,我不知道问题出在哪里..在Alarm活动中,我有以下代码:

代码语言:javascript
复制
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
    soundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
    try {
        AssetManager assetManager = getAssets();
        AssetFileDescriptor descriptor = assetManager.openFd("sound.ogg");
        mySoundId = soundPool.load(descriptor, 1);
    } catch (IOException e) {
        Log.d(TAG,"We've problem's!!, "
                + e.getMessage());
    }   

    soundPool.play(mySoundId, 1, 1, 0, 0, 1);

没有错误..但是音乐不起作用..相反,如果我在底部的作品中编写剧本!!有人能帮帮我吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-03 14:45:29

我刚试过你的代码,发现了问题所在。这是SoundPool中的一个常见问题。您需要等待声音加载完成后才能播放它。这就是为什么soundPool.play()返回零的原因。声音还没有准备好。

在API8中,引入了setOnLoadCompleteListener(),它将解决这个问题:

代码语言:javascript
复制
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
    public void onLoadComplete(SoundPool soundPool, int sampleId,int status) {
       //play the sound.
    }
});

然而,如果你的目标是较低的API,你不能确定你的声音是否已经准备好播放。在这种情况下,我建议您使用MediaPlayer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12242939

复制
相关文章

相似问题

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