​soundpool报E/FMQ: grantorIdx must be less than 3​以及只能播放6s

在使用SoundPool进行音频播放时遇到两个问题:1)模拟器上播放报错,但手机正常,可能由于Windows问题;2)SoundPool限制播放6秒内的音频,若需更长,需修改音频文件并使用加载完成监听器确保播放。
摘要由CSDN通过智能技术生成

今天在使用soundpool进行音频播放时,发现两个小问题,搞了半天,最后发现并不是我们代码的问题!!

1、用模拟器播放时总是报E/FMQ: grantorIdx must be less than 3,然后不能播放声音,最后发现用手机就可以播放!!原因可能时网上说的windows的问题:

android - Android模拟器在访问视频解决方案时关闭(exoplayer) - 堆栈内存溢出 (stackoom.com)

2、soundpool只能播放6s左右,搞了半天发现这是soundpool的规定!!如果想延长播放时间,可以改音频文件,参考:

(25条消息) Android SoundPool只能播放6秒 mp3 文件_apk内置音乐时长限制_jiaqiangziji的博客-CSDN博客

另外,需要使用加载完成的监听器,不然手机上也播放不了:

try {
                    int soundId = soundPool.load(context.getAssets().openFd(
                            SOUNDS_FOLDER +"/"+boxBean.getName()),1);
                    soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
                        @Override
                        public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                            soundPool.play(soundId,
                                    1.0f,1.0f,1,0,1.0f);
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }

参考:

Android SoundPool的简单使用 - 简书 (jianshu.com)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值