package cn.wuxiaocheng.soundpool;
import android.content.res.AssetManager;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity implements OnClickListener {
private Button btn_play1;
private Button btn_play2;
private Button btn_release;
private AssetManager aManager;
private SoundPool mSoundPool = null;
private HashMap<Integer, Integer> soundID = new HashMap<Integer, Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aManager = getAssets();
try {
initSP();
} catch (Exception e) {
e.printStackTrace();
}
bindViews();
}
private void bindViews() {
btn_play1 = (Button) findViewById(R.id.rawPlay);
btn_play2 = (Button) findViewById(R.id.assetsPlay);
btn_release = (Button) findViewById(R.id.btn_release);
btn_play1.setOnClickListener(this);
btn_play2.setOnClickListener(this);
btn_release.setOnClickListener(this);
}
private void initSP() throws Exception {
//当前系统的SDK版本大于等于21(Android 5.0)时
if (Build.VERSION.SDK_INT >= 21) {
SoundPool.Builder builder = new SoundPool.Builder();
//传入音频数量
builder.setMaxStreams(2);
//AudioAttributes是一个封装音频各种属性的方法
AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
//设置音频流的合适的属性
attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC);
//加载一个AudioAttributes
builder.setAudioAttributes(attrBuilder.build());
mSoundPool = builder.build();
}
//当系统的SDK版本小于21时
else {//设置最多可容纳2个音频流,音频的品质为5
mSoundPool = new SoundPool(2, AudioManager.STREAM_SYSTEM, 5);
}
soundID.put(1, mSoundPool.load(this, R.raw.raw, 1));
soundID.put(2, mSoundPool.load(getAssets().openFd("assets.mp3"), 1)); //需要捕获IO异常
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rawPlay:
mSoundPool.play(soundID.get(1), 1, 1, 0, 0, 1);
break;
case R.id.assetsPlay:
mSoundPool.play(soundID.get(2), 1, 1, 0, 0, 1);
break;
case R.id.btn_release:
//回收SoundPool资源
mSoundPool.release();
break;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android用SoundPool播放音效
共49个文件
xml:20个
png:5个
properties:4个
3星 · 超过75%的资源 需积分: 32 108 下载量 76 浏览量
2015-12-15
17:25:17
上传
评论
收藏 494KB ZIP 举报
温馨提示
Android设备的一些较短的声音可以用SoundPool来做,如消息提醒等,此例子介绍了SoundPool的用法。
资源推荐
资源详情
资源评论
收起资源包目录
SoundPool.zip (49个子文件)
SoundPool
gradlew.bat 2KB
gradlew 5KB
gradle.properties 872B
.gradle
2.8
taskArtifacts
fileHashes.bin 124KB
cache.properties.lock 17B
taskArtifacts.bin 77KB
fileSnapshots.bin 1.41MB
cache.properties 31B
outputFileStates.bin 19KB
app
proguard-rules.pro 654B
src
main
res
raw
raw.mp3 45KB
mipmap-xxxhdpi
ic_launcher.png 10KB
drawable
mipmap-hdpi
ic_launcher.png 3KB
values
colors.xml 214B
strings.xml 75B
styles.xml 394B
dimens.xml 216B
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xhdpi
ic_launcher.png 5KB
layout
activity_main.xml 842B
values-w820dp
dimens.xml 364B
assets
assets.mp3 28KB
java
cn
wuxiaocheng
soundpool
MainActivity.java 3KB
AndroidManifest.xml 685B
app.iml 7KB
.gitignore 8B
build.gradle 651B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
.idea
gradle.xml 673B
runConfigurations.xml 564B
misc.xml 3KB
vcs.xml 164B
.name 9B
copyright
profiles_settings.xml 76B
modules.xml 355B
dictionaries
Administrator.xml 94B
encodings.xml 200B
compiler.xml 686B
workspace.xml 135KB
libraries
support_annotations_23_1_1.xml 479B
support_v4_23_1_1.xml 895B
appcompat_v7_23_1_1.xml 753B
SoundPool.iml 940B
.gitignore 105B
local.properties 419B
settings.gradle 16B
build.gradle 521B
共 49 条
- 1
资源评论
- 夜雨疯子2018-12-17还可以,很简单的用法
- 大熊喵喵2018-06-07谢谢楼主分享,给个赞!
- 就要叫随便逛逛2017-03-10无效的,浪费积分啊「已注销」2017-04-22无效?是你自己哪里写错吧。确定下代码没问题先。
「已注销」
- 粉丝: 55
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功