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);

Android音效SoundPool问题:soundpool 1 not retry的更多相关文章

  1. Android音频播放之SoundPool

    SoundPool 一.基本概念 在Android应用程序的开发过程中,经常需要播放多媒体文件,也许最先想到的会是MediaPlayer类了,该类提供了播放.暂停.停止及重复播放等功能性方法(该类位于 ...

  2. Android音频播放之SoundPool 详解

    SoundPool —— 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 下面介绍SoundPool的创建过程: 1. 创建一个SoundPool (构造函数) public SoundPoo ...

  3. Android简单的利用SoundPool进行播放铃声的实例代码

    MainActivity.java package com.example.pengdonglin.soundpool_demo; import android.annotation.Suppress ...

  4. 修复android 5.0 Xutils的框架问题retry error, curr request is null

    Android 5.0手机对xUtils-2.6.13.jar请求时会出现retry error, curr request is null 情况, 修复解决方式: 找到library/src/com ...

  5. Android 使用SoundPool播放音效

    在Android开发中我们经常使用MediaPlayer来播放音频文件,但是MediaPlayer存在一些不足,例如:资源占用量较高.延迟时间较长.不支持多个音频同时播放等.这些缺点决定了MediaP ...

  6. android SoundPool播放音效

    MediaPlayer的缺点: 资源占用量高,延时时间较长 不支持多个音效同一时候播放 SoundPool主要用于播放一些较短的声音片段,CPU资源占用率低和反应延时小,还支持自行色设置声音的品质,音 ...

  7. Android MediaPlayer播放一般音频与SoundPool播放短促的音效

    [1]使用MediaPlayer实现一般的音频播放 MediaPlayer播放通常的音频文件 MediaPlayer mediaPlayer = new MediaPlayer(); if (medi ...

  8. Android SoundPool.play方法的音量与系统音量的关系

    Android中播放音频,除了使用MediaPlayer,还可以使用SoundPool.SoundPool使用音效池的概念来管理多个短促的音效,对于需要短促的提示音的场景特别合适. 通常调用Sound ...

  9. Android中的音频处理------SoundPool,MediaRecorder,MediaPlayer以及RingStone总结

    用Soundpool可以播一些短的反应速度要求高的声音, 比如游戏中的爆破声, 而Mediaplayer适合播放长点的. MediaRecorder主要用来录音. SoundPool载入音乐文件使用了 ...

随机推荐

  1. No.2 selenium学习之路之八种基本定位

    selenium的八种定位方式 1.通过id定位     find_element_by_id() send_keys() 输入框输入字符串 click()  鼠标点击事件 注:send_keys输入 ...

  2. maven网址

    http://www.yiibai.com/maven/maven_environment_setup.html

  3. Luogu P1750 【出栈序列】

    一眼(万年)贪心minn设小调不出来祭 首先要保证更靠前的输出更小那么容易想到,对于之后可能入栈的元素(即栈的剩余空间仍能装下的所有元素),我们可以取其中的最小值minn,和栈顶元素$top$比较,如 ...

  4. MySQL 连接本地数据库、远程数据库命令

    一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:/>mysql -h localhost -u root -p123 二. ...

  5. Struts 2 - Architecture

    From a high level, Struts2 is a pull-MVC (or MVC2) framework. The Model-View-Controller pattern in S ...

  6. stellar

    13) Sundapeng.123 12) 有个问题问下,这里的私钥和公钥是随意生成的吗? 当前的配置启动的时候报错了 11) ssh root@39.108.127.234 Liansen2018 ...

  7. Ubuntu下编译安装OpenCV 2.4.7并读取摄像头

    主要参考: 1.http://www.ozbotz.org/opencv-installation/ 2.http://www.ozbotz.org/opencv-install-troublesho ...

  8. python处理汉字转拼音pypinyin

    主要是pypinyin 包,官网: http://pypinyin.readthedocs.io/zh_CN/master/index.html jieba包,主要是用来分词的,我之前的博文有介绍:h ...

  9. WordCount_命令行运行时指定参数

    WordCountApp命令行运行时指定参数 1.修改之前的WordCountApp.java的代码 package cmd; import java.net.URI; import org.apac ...

  10. vscode 配置import @ 路径提示及代码智提

    1.安装插件:Path Intellisense 2.配置: "path-intellisense.mappings": { "@": "${work ...