栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Android Soundpool 使用和遇到的问题

Java 更新时间:发布时间: 百科书网 趣学号

Android的音频播放常见的有MediaPlayer 和 Soundpool(相对轻量级一点,一般用来播放短小的铃声之类的音乐)
最近项目用到播放铃声问题,使用soundpool比较方便,需要在活动启动时候就响铃;

    private AssetManager aManager;//数据访问,不需要可以不写
    private SoundPool mSoundPool ; //定义初始化
    private HashMap soundID = new HashMap(); //可以用来存放多个音频
 
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        aManager = getAssets();
         //设置最多可容纳10个音频流,音频的品质为5
        mSoundPool = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5); //初始化需要时间,这个时间还不算短
        soundID.put(1, mSoundPool.load(this, R.raw.aaa, 1));  //把音频放进去
        soundID.put(2, mSoundPool.load(this, R.raw.bbb, 1));  
        soundID.put(3, mSoundPool.load(this, R.raw.ccc, 1));  


       mSoundPool.play(soundID.get(1), 1, 1, 0, 0, 1);
       //播放音频依次参数为
       (放进去的音频号,
       左声道音量设置,
       右声道音量设置,
       指定播放声音的优先级数值越高优先级越大,
  -1表示无限循环  0表示不循环  其他值表示要重复播放的次数,
指定播放速率(0.5~2.0) 1.0为原始  2.0为频率的两倍播放)
    }

//写到这基本就可以了,但是这么写肯定不行,因为mSoundPool 的初始化需要时间,直接在活动这么写不会有声音的
//如果要活动启动就播放声音可以添加一个监听,把播放声音写到监听里面,完成以后播放。

mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
               //文件加载完毕,播放声音
                mSoundPool.play(soundID.get(1), 1, 1, 0, 0, 1);  //可以选择播放存进去的哪一个声音
            }
        });

//使用完以后,别忘了回收资源
//释放SoundPool,执行过后无法在播放音乐,必须从新加载
mSoundPool.release();

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/957313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号