android SoundPool播放音效

MediaPlayer的缺点:

资源占用量高,延时时间较长

不支持多个音效同时播放

SoundPool主要用于播放一些较短的声音片段,CPU资源占用率低和反应延时小,还支持自行色设置声音的品质,音量,播放比率等参数,避免使用SoundPool来播放歌曲或者做游戏背景音乐,只有那些短促的密集的声音才考虑使用SoundPool播放

构造器:

public SoundPool (int maxStreams, int streamType, int srcQuality)

Parameters

maxStreams the maximum number of simultaneous streams for this SoundPool object

streamType the audio stream type as described in AudioManager For example, game applications will normally use STREAM_MUSIC.

srcQuality the sample-rate converter quality. Currently has no effect. Use 0 for the default.

Returns

a SoundPool object, or null if creation failed

加载声音:

public int load (AssetFileDescriptor afd, int priority)

Parameters

afd an asset file descriptor

priority the priority of the sound. Currently has no effect. Use a value of 1 for future compatibility.

public int load (Context context, int resId, int priority)

Parameters

context the application context

resId the resource ID

priority the priority of the sound. Currently has no effect. Use a value of 1 for future compatibility.

public int load (String path, int priority)

Parameters

path the path to the audio file

priority the priority of the sound. Currently has no effect. Use a value of 1 for future compatibility.

public int load (FileDescriptor fd, long offset, long length, int priority)

Parameters

fd a FileDescriptor object

offset offset to the start of the sound

length length of the sound

priority the priority of the sound. Currently has no effect. Use a value of 1 for future compatibility.

播放声音:

public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)

Parameters

soundID a soundID returned by the load() function

leftVolume left volume value (range = 0.0 to 1.0)

rightVolume right volume value (range = 0.0 to 1.0)

priority stream priority (0 = lowest priority)

loop loop mode (0 = no loop, -1 = loop forever)

rate playback rate (1.0 = normal playback, range 0.5 to 2.0)

使用SoundPool播放声音的步骤:

调用SoundPool的构造器创建SoundPool的对象

调用SoundPool对象的load()方法从指定资源,文件,中加载声音,最好使用HashMap<Integer,Integer>来管理所加载的声音

调用SoundPool的play方法播放声音

例子程序:

import java.util.HashMap;

import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SoundPoolTest extends Activity implements OnClickListener
{
	Button bomb, shot, arrow;
	// 定义一个SoundPool
	SoundPool soundPool;
	HashMap<Integer, Integer> soundMap =
		new HashMap<Integer, Integer>();
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		bomb = (Button) findViewById(R.id.bomb);
		shot = (Button) findViewById(R.id.shot);
		arrow = (Button) findViewById(R.id.arrow);
		// 设置最多可容纳10个音频流,音频的品质为5
		soundPool = new SoundPool(10
			, AudioManager.STREAM_SYSTEM, 5);  //①
		// load方法加载指定音频文件,并返回所加载的音频ID。
		// 此处使用HashMap来管理这些音频流
		soundMap.put(1, soundPool.load(this, R.raw.bomb, 1));  //②
		soundMap.put(2, soundPool.load(this, R.raw.shot, 1));
		soundMap.put(3, soundPool.load(this, R.raw.arrow, 1));
		bomb.setOnClickListener(this);
		shot.setOnClickListener(this);
		arrow.setOnClickListener(this);
	}

	// 重写OnClickListener监听器接口的方法
	@Override
	public void onClick(View source)
	{
		// 判断哪个按钮被单击
		switch (source.getId())
		{
			case R.id.bomb:
				soundPool.play(soundMap.get(1), 1, 1, 0, 0, 1);  //③
				break;
			case R.id.shot:
				soundPool.play(soundMap.get(2), 1, 1, 0, 0, 1);
				break;
			case R.id.arrow:
				soundPool.play(soundMap.get(3), 1, 1, 0, 0, 1);
				break;
		}
	}
}

android SoundPool播放音效,布布扣,bubuko.com

时间: 2024-12-31 15:53:50

android SoundPool播放音效的相关文章

使用SoundPool播放音效

针对应用程序经常需要播放密集.短促的音效,因为MediaPlayer存在如下缺点: 1.资源占用量较高.延迟时间较长. 2.不支持多个音效同时播放. SoundPool使用音效池的概念来管理多个短促的音效,例如它可以开始就加在20个音效,以后在程序中按音效的ID进行播放. SoundPool主要用于播放一些较短的声音片段,与MediaPlayer相比,SoundPool的优势在于CPU资源占用量低和反映延迟小.另外,SoundPool还支持自行设置声音的品质.音量.播放比率等参数. SoundP

Android SoundPool即时音效的使用Demo

当应用程序需要低音频延迟并且(或者)将同时播放多个音频流时(例如播放多种音效和背景音乐的游戏),可以使用SoundPool类来管理音频. 即适合短促且对反应速度比较高的情况(游戏音效或按键声等). 好了,直接上代码,下面实现了,两个音频文件可同时播放的一个功能(我这里没有短的音频,所以使用的音频资源师两首歌曲的,都只会播放一点点): 布局文件: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q

Android 使用SoundPool播放音效

在Android开发中我们经常使用MediaPlayer来播放音频文件,但是MediaPlayer存在一些不足,例如:资源占用量较高.延迟时间较长.不支持多个音频同时播放等.这些缺点决定了MediaPlayer在某些场合的使用情况不会很理想,例如在对时间精准度要求相对较高的游戏开发中. 本文地址:http://www.cnblogs.com/wuyudong/p/5679191.html,转载请注明源地址. 在游戏开发中我们经常需要播放一些游戏音效(比如:子弹爆炸,物体撞击等),这些音效的共同特

android 声音播放 mediaplay soundpool

首先在res文件夹内新建raw文件夹,并在raw内存放声音文件. mediaplay方法: 在onCreate(Bundle saveInstanceState)方法内添加 “MediaPlay mp=MediaPlayer.create(context,R.raw.backsound):”//用于初始化mediapaly MediaPlayer.create(Context context, int resid) MdeiaPlayer.create(Context context,Uri u

Android设备 cocos2dx 骨骼动画注册事件播放音效,退到后台再返回黑屏问题

最近遇到一个cocos2dx 骨骼动画注册事件播放音效,在骨骼动画播放的时候,按HOME键退到桌面,再次打开游戏的时候,会黑屏. 解决办法如下,可能不是太完美,至少解决了大部分问题. 1.在org.cocos2dx.lib下的 Cocos2dxRenderer.java 中添加native方法 public static native void setIsPause(boolean isPause); 2.在Cocos2dxRenderer.java对应的Java_org_cocos2dx_li

[android] SoundPool详解

今天做一个小Demo用到了SoundPool,总结一下. MediaPlayer缺点:不能重叠播放音乐,封装程度比较高,所以加载起来会比较慢. SoundPool简介 Android系统提供了另一种播放音效的类.用来加载多个音效,短促音效和多个短促音效,可自行设置声音品质,音量,重复和优先级.在一定场合还是很好用的. 属于android.media包下,继承自Object. 构造方法 public SoundPool(int maxStreams, int streamType, int src

android声音播放

android播放声音,一种是soundPool,一种是mediaplayer soundpool 适合播放反映速度要求较高的声效,比如,游戏中的爆炸音效 mediaplay 适合播放时间比较长的声效,比如,游戏中的背景音乐 我们来做个例子,一个是chang.ogg,一个是duan.wav 这两个声效文件,我是从我的游戏目录中的笑傲江湖OL中搜索出来的.你也可以到你的游戏文件夹下搜索 *.ogg,*.wav 将这两个文件放到res/raw目录下,如果不存在raw目录,请创建它 定义activit

【项目实例】android开发游戏音效代码实例

//音效的音量 int streamVolume; //定义SoundPool 对象 private SoundPool soundPool; //定义HASH表 private HashMap<Integer, Integer> soundPoolMap; /*************************************************************** * Function: initSounds(); * Parameters: null * Returns

android音乐播放器的竞品分析

迄今为止最长的一篇博客,各位看官笑纳~~ 本次分析基于android平台,选取了几款我体验过的播放器进行比较分析.主要分为两类,一类是大而全的,功能全面,可满足用户管理歌曲.导入导出歌单等多方面需求,不仅仅是听歌,另一类是小而简的,操作简单,让用户专注听歌. 1. QQ音乐          版本:5.2.1.15 特点:这款产品在PC端就有庞大的用户基础,有一定的用户粘性,手机端是web端的延伸.其性能和体验都很不错,1. 曲库强大,可选不同播放音效和音质:2. 独具Qplay功能,可将手机里