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是用于播放短暂...综上所述,SoundPool是Android平台上实现高效音效播放的关键组件,尤其适用于需要快速响应和低延迟的场景。了解和熟练掌握SoundPool的使用,能显著提升应用的用户体验。
`SoundPool`是Android系统提供的一个音频管理工具,它允许开发者快速播放短期的音频剪辑,如游戏中的按钮点击声或角色动作音效。`SoundPool`的特点在于它可以高效地管理和缓存多个小音频文件,确保在需要时能即时...
总结,`SoundPool`是Android中用于播放短小音频的利器,特别适合游戏或应用中的音效处理。通过合理使用`SoundPool`,开发者可以实现高效、流畅的音频播放体验。在实际项目中,务必注意音频资源的管理,确保音频加载...
总的来说,SoundPool是Android开发中处理音效播放的得力助手,通过合理的配置和使用,可以为游戏和应用带来流畅的音频体验。然而,随着Android系统的更新,开发者也应关注新的音频API,适时更新技术栈,以利用最新的...
本文实例为大家分享了Android使用SoundPool播放音效的具体代码,供大家参考,具体内容如下 SoundPool(int maxStreams, int streamType, int srcQuality) 参数依次是: ①指定支持多少个声音,SoundPool对象中允许...
Android 使用 SoundPool 播放音效实例 Android 使用 SoundPool 播放音效实例主要为大家详细介绍了 Android 使用 SoundPool 播放音效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考...
Android 中的音效播放是游戏和应用程序中非常重要的一部分,SoundPool 是 Android 中的一种音效播放机制,主要用于播放一些较短的声音片段。SoundPool 使用音效池的概念来管理多个短促的音效,例如它可以开始就 10 ...
在Android开发中,SoundPool是实现...通过这个SoundPool音效使用Demo源码,开发者可以学习如何在Android应用中集成和控制音效,提升用户体验。理解并掌握这些知识点,对于Android游戏开发或音视频应用开发都至关重要。
Android使用SoundPool播放音效的方法 Android开发中,MediaPlayer是一种常用的音频播放方式,但是它存在一些缺点,如资源占用量高、延迟时间长、不支持多个音频同时播放等。在某些场景下,例如游戏开发中,我们需要...
本示例将深入探讨如何在Android应用中使用`SoundPool`来实现音效的加载与播放,以提高用户体验。 `SoundPool`是Android为处理短暂、重复的音频而设计的。它通过内存映射技术,可以快速地加载和播放音频,特别适合...
Android 使用 SoundPool 播放短音效是 Android 开发中的一种常见需求,SoundPool 是 Android 提供的一种音频播放解决方案,主要用于播放短音效,例如提示音、铃声等。 SoundPool 的优点是可以节省更多资源,并且...
Android基础软件源码(SoundPool音效).zip
这个源码压缩包“Android应用源码之(SoundPool音效).zip”提供了一个实例,帮助开发者深入理解如何在实际项目中使用SoundPool。下面将详细解释SoundPool的工作原理、主要功能以及如何在Java代码中操作它。 1. ...
SoundPool是一个音频管理器,主要用于播放短音频,例如游戏中的音效、提示音等。下面详细介绍了Android使用SoundPool实现播放音频的相关知识点。 SoundPool的基本概念 SoundPool是一个音频管理器,用于播放短音频...
本实例将探讨如何使用Android SDK中的相关组件来实现摄像头功能以及通过SoundPool播放声音。 1. 摄像头操作 在Android中,摄像头功能主要通过Camera类和Camera2 API来实现。Camera类是早期版本Android中的主要接口...
本资源“4-15-2(SoundPool音效).7z”可能包含了一系列与SoundPool相关的音频文件和示例代码,用于帮助开发者了解和实践如何在Android应用中使用SoundPool来实现音效的播放。 SoundPool是Android SDK中的一个类,它...