android开发(44) 使用了 SoundPool 播放提示音
SoundPool
一个声音播放的辅助类,从名字可以看出,它具有 “池”的能力,它先加载声音文件到内存,以支持多次播放声音文件。
特点
- SoundPool适合 短小的 声音文件
- SoundPool适合播放 “需要多次播放的提示音”,比如在 一些常用的 请登录,请点击什么的
- 相比mediaPlayer,耗用资源更少
- 支持 同时 播放多个声音
使用方法
创建实例
mSoundPool = new SoundPool(1, AudioManager.STREAM_ALARM, 0);
soundPoolMap = new HashMap<Integer, Integer>(); //这里我创建一个 hash 表,用于记录加载过的声音的ID,一般我们会定义一个常量作为检索该声音的KEY
加载声音文件
soundPoolMap.put(KEY_SOUND_A1, mSoundPool.load(this, R.raw.a1, 1));
soundPoolMap.put(KEY_SOUND_A2, mSoundPool.load(this, R.raw.a2, 1));//注意,这里 hash表里 记录
播放声音文件
mSoundPool.play(soundPoolMap.get(KEY_SOUND_A1), 1, 1, 0, 0, 1); //注意,这里从hash表里取出了具体的ID
注册一个监听器,在加载声音完毕的时候获得消息
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
alert(" " + sampleId);
}
});
最后,是完整的类的代码,示例代码可以在我的github上下载:https://github.com/vir56k/demo/tree/master/SoundPoolDemo
package demo.vir56k.soundpooldemo; import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View; import java.util.HashMap; public class MainActivity extends AppCompatActivity {
public static final int KEY_SOUND_A1 = 1;
public static final int KEY_SOUND_A2 = 1; SoundPool mSoundPool;
private HashMap<Integer, Integer> soundPoolMap; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); mSoundPool = new SoundPool(1, AudioManager.STREAM_ALARM, 0);
mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
alert(" " + sampleId);
}
});
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(KEY_SOUND_A1, mSoundPool.load(this, R.raw.a1, 1));
soundPoolMap.put(KEY_SOUND_A2, mSoundPool.load(this, R.raw.a2, 1));
} private void alert(String s) {
Log.i("Alert: ", s + "");
} public void onClickView(View view) {
if (view.getId() == R.id.button) {
mSoundPool.play(soundPoolMap.get(KEY_SOUND_A1), 1, 1, 0, 0, 1);
}
if (view.getId() == R.id.button2) {
mSoundPool.play(soundPoolMap.get(KEY_SOUND_A2), 1, 1, 0, 0, 1);
}
} }
android开发(44) 使用了 SoundPool 播放提示音的更多相关文章
- SoundPool 播放提示音
SoundPool 一个声音播放的辅助类,从名字可以看出,它具有 “池”的能力,它先加载声音文件到内存,以支持多次播放声音文件. 特点 SoundPool适合 短小的 声音文件 SoundPool适合 ...
- Android开发教程AnimationDrawable逐帧播放动画
下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助. 当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的 ...
- 【Android开发VR实战】二.播放360°全景视频
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...
- Android开发多媒体应用之SoundPool的使用的代码
内容过程中,把写内容过程中比较好的内容段记录起来,下面的内容是关于Android开发多媒体应用之SoundPool的使用的内容,希望对各位也有用途. public class MainActivity ...
- Android开发中Eclipse里的智能提示设置
今天开始学习一下Android开发,直接在Android Developers下载的一个开发工具包,然后再下了一个JDK,配置完环境变量等一系列的工作后环境就搭建好了,在新建好第一个Android项目 ...
- Android笔记: 播放提示音 的简单方法
public static void sendSound(Context mContext) { //上下文 Uri mUri= RingtoneManager.getDefaultUri(Ringt ...
- 关于微信内置浏览器在ios上播放提示音的经验分享
document.addEventListener("WeixinJSBridgeReady", function () { window.audio= new Audio() w ...
- Android开发手记(14) 使用MediaPlayer播放mp3
1.获取MediaPlayer实例 (1)可以直接通过new或者create方式: 调用setDataSource和create的区别是,create时已经执行了MediaPlayer.prepare ...
- Android开发(30)--AutoCompleteTextView和MultiAutoCompleteTextView自动提示输入内容
首先大家都见过类似这种效果, AutoCompleteTextView是实现动态匹配输入的内容 下面就通过一个实例来说明AutoCompleteTextView,同样,AutoCompleteText ...
随机推荐
- 如何使用git 提交作业 收作业
如何使用git 提交作业 收作业 方法论: 今天就来用一个通俗易懂的自然模型来解释Git的commit,pull和push.不过,我们首先要理解两个名词,remote,local. remote,翻译 ...
- 启动supervisord 生成openvpn用于android的证书
service supervisord start netstat -anp | grep 你的端口号 生成证书: 进入到openvpn的证书生成文件夹,通常在/etc/openvpn/easy-r ...
- 更改 AWS RDS mysql时区 -摘自网络
AWS RDS AWS上搭建数据库的时候,不是DB on EC2就是RDS,但是选择RDS时,Timezone怎么处理? 「面向全球提供的AWS来讲理所当然的是UTC」,而RDS也不是例外.把服务器迁 ...
- Android 7.0 介绍和适配问题
介绍:http://gank.io/post/56e0b83c67765963436fcb94 适配:http://blog.csdn.net/fengyuzhengfan/article/detai ...
- 支付宝接口错误:您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8
调试支付宝条码支付的时候碰到个错误:您使用的私钥格式错误,请检查RSA私钥配置,charset = utf-8, 原因是我代码里的那私钥是直接复制pem文件里的代码的,可支付宝底层的sdk中默认是以文 ...
- Android xUtils3源代码解析之网络模块
本文已授权微信公众号<非著名程序猿>原创首发,转载请务必注明出处. xUtils3源代码解析系列 一. Android xUtils3源代码解析之网络模块 二. Android xUtil ...
- bulk insert 在mssql中使用
从远程数据文件中批量导入 若要使用 BULK INSERT 从其他计算机中大容量导入数据,必须在两台计算机之间共享数据文件. 指定共享数据文件时,请使用它的通用命名约定 (UNC) 名称,其一般形式为 ...
- pandas数组(pandas Series)-(1)
导入pandas import pandas as pd countries = ['Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Ba ...
- [PY3]——环境配置(1)——pyenv | pip | ipython | jupyter(含安装pyenv环境shell脚本)
1.关于pyenv (1)pyenv是一个开源的.shell脚本编写的工具:Simple Python version management (2)为什么使用pyenv:当多个项目同时在开发与维护时, ...
- [Windows Azure] What is a cloud service?
What is a cloud service? When you create an application and run it in Windows Azure, the code and co ...