Android音效SoundPool问题:soundpool 1 not retry


今天开发中要用到SoundPool,遇到soundpool 1 not retry无法播放声音,MediaPlay可以


后来经过一番研究,发现:

出现soundpool 1 not retry问题的代码,无法播放声音

mgr = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);
        //初始化soundPool 对象,第一个参数是允许有多少个声音流同时播放,第2个参数是声音类型,第三个参数是声音的品质
        soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
        soundPoolMap = new HashMap<Integer, Integer>();
        soundPoolMap.put(1, soundPool.load(MainActivity.this, R.raw.or, 1));
        soundPoolMap.put(2, soundPool.load(MainActivity.this, R.raw.sd, 1));
        volume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);

//loop:循环中的循环模式(0 =没有循环,-1 =无限循环)
                soundPool.play(soundPoolMap.get(1), volume, volume, 1, 0, 1f);

问题解决:这里的问题是soundPool.load(MainActivity.this, R.raw.or, 1),即 load() 声音文件后,立马 play() 播放,系统还没有准备好声音文件,所以才出了问题

这里需要你:先在其他地方load()好了,比如在构造函数里先load()好了,在需要播放的地方再调用play(),也就是要过一段时间再调用play()

这样写就没问题

mgr = (AudioManager) MainActivity.this.getSystemService(Context.AUDIO_SERVICE);
        //初始化soundPool 对象,第一个参数是允许有多少个声音流同时播放,第2个参数是声音类型,第三个参数是声音的品质
        soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
        soundPoolMap = new HashMap<Integer, Integer>();
        soundPoolMap.put(1, soundPool.load(MainActivity.this, R.raw.or, 1));
        soundPoolMap.put(2, soundPool.load(MainActivity.this, R.raw.sd, 1));
        volume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        soundPool.play(soundPoolMap.get(1), volume, volume, 1, 0, 1f);

最新文章

  1. 选项卡切换:自动定时&amp;主动触发事件
  2. SQL Server认证培训与考试
  3. 【转载】linux lftp命令 详解
  4. Uncaught SyntaxError: Unexpected token ILLEGAL
  5. 浅谈PopupWindow弹出菜单
  6. 五 mybatis的SqlMapConfig.xml详解
  7. (转)对DotNet分布式应用搭建的考虑
  8. FlashBuilder精选插件
  9. html渐隐轮播
  10. Android Fragment详解(一):概述
  11. 使用SVN clang: error: linker command failed with exit code 1 (use -v to see invocation)
  12. JavaScript的第一次小结
  13. emacs在windows下打开报错原因
  14. 【LSGDOJ1383】修改回文 dp
  15. 敏捷开发相关编辑思想(SOA、DDD、REST、CQRS)
  16. js 获取url具体参数
  17. session、cookie 记住登录状态的实现
  18. Docker基础-镜像操作
  19. UVA10054_The Necklace
  20. ASP.NET CORE API Swagger+IdentityServer4授权验证

热门文章

  1. Python字符串(Str)详解
  2. 再谈OPENCV(转)
  3. LongAdder类学习笔记
  4. GeoHash核心原理解析 - OPEN 开发经验库
  5. CTF常用python库PwnTools的使用学习
  6. 20165333实验一 JAVA开发环境的熟悉
  7. FileBeat读取特征目录及特征文件,为不同的path生成不同的Kafka Topic
  8. CCF CSP 201612-2 工资计算
  9. Eclipse+Tomcat+Axis2+ADT开发环境配置
  10. Web前端开发最佳实践(12):JavaScript代码中有大量写死的配置数据?这些数据难以维护,你需要合理组织这些数据