SoundPool类-游戏中即时音效的简介
2016-08-08 10:22
381 查看
SoundPool为即时音效,一般用于游戏里面的短暂的音效,与Android系统自带的MediaPlay而言不会占用大量的系统资源,并且播放是不需要缓冲,延迟较小,一般的文件大小为<=7秒的小音频文件。
SoundPool类的构造器和方法如下图:
本demo的运行结果如下图:
源码连接:
xml文件非常的简单 就两个button 的摆放所以 你们自己写,非常的简单
下面给出主要的.java文件的代码:
SoundPool类的构造器和方法如下图:
本demo的运行结果如下图:
源码连接:
xml文件非常的简单 就两个button 的摆放所以 你们自己写,非常的简单
下面给出主要的.java文件的代码:
package com.xyliwp.soundpooldeom; import android.content.Context; import android.media.AudioManager; import android.media.SoundPool; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.util.HashMap; /* 需求:本dome主要为了熟悉解释 soundpool soundpool 主要用于 小于等于7秒的即时音乐的播放 即为既时音乐。的简介,它相比较Android提供的MediaPlay而言 播放时并需要缓存 并且不会 占用大量的系统资源。 */ public class MainActivity extends AppCompatActivity { /** * 生命soundpool的引用 */ private SoundPool soundPool; //声明hashmap用来存放声音文件 private HashMap<Integer,Integer> hashMap; //当前正在播放的streamid private int currStreamId; //对播放和暂停两个按钮的定义 private Button button_bofang; private Button button_zanting; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化 soundpool initSoundPool(); //控件id的绑定 initId(); //控件点击事件的设置 idOnClick(); } /** * id绑定 */ private void initId(){ button_bofang = (Button)findViewById(R.id.bofang); button_zanting = (Button)findViewById(R.id.zanting); } /** * 点击事件的设置 */ private void idOnClick() { button_zanting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //停止当前音效的播放 soundPool.stop(currStreamId); Toast.makeText(getApplicationContext(),"暂停即时音效",Toast.LENGTH_SHORT).show(); } }); button_bofang.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //播放1号资源 并且播放一次 playSound(1,0); Toast.makeText(getApplicationContext(),"播放即时音效",Toast.LENGTH_SHORT).show(); } }); } /** * 初始化 声音池 */ private void initSoundPool(){ //创建soundpool对象 soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC,0); hashMap = new HashMap<Integer, Integer>(); //加载 zhandou音效 并这只为1号 hashMap.put(1,soundPool.load(this,R.raw.qiangsheng,1)); } /** * 播放即时音效 * @param sound * @param loop */ private void playSound(int sound,int loop){ //AudioManager引用 AudioManager audioManager = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE); //获取当前系统音量 float qian = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); //获取系统最大音量 float max = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); //计算得到播放音量 float bofang = qian/max; /** * 设置播放文件的音量 * hashMap.get(sound) 播放的id * bofang,bofang 左右升到的音量 * loop 循环次数,0不循环,-1永远循环 * 1 参数的优先级 0为最低 * 1.0f 回放的速度 */ currStreamId = soundPool.play(hashMap.get(sound),bofang,bofang,1,loop,1.0f); } }
相关文章推荐
- Android游戏开发教程之十七:支持多音效同时播放的SoundPool类
- Android 游戏开发--即时音效
- Android游戏开发教程之十七:支持多音效同时播放的SoundPool类
- Android 游戏开发--即时音效
- android 游戏 即时音效 未完成
- android 游戏开发之即时音效Demo
- android 游戏开发之即时音效
- android 游戏开发之即时音效Demo
- 从现在开始开发一款即时战略游戏——BigForest!
- Cocos2d-JS 中游戏背景音乐与音效
- 疯狂ios讲义之疯狂连连看游戏简介
- 【iOS-Cocos2d游戏开发之十四】音频/音效/视频播放(利用Cocos2D-iPhone-Extensions嵌入Cocos2d进行视频播放!)
- 基于Game Center的多人游戏简介
- 游戏中的音乐和音效的设置界面
- flex做的即时通讯游戏源代码
- 【PHP-socket框架】MeepoPS轻松构建在线实时聊天, 即时游戏, 视频流媒体播放
- 【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)
- 12.1pygame游戏开发框架(1):pygame简介
- 游戏中的AI编程(一) 遗传算法简介
- 网络游戏引擎简介