[Android开发学习03]短时间的音效播放实现SoundPool
实现技术: android.media.SoundPool实现 (管理和播放应用程序的声音资源,直接加载到内存)。
一.基础知识:
1. 创建一个SoundPool :
我们先看看SoundPool函数的定义,如下:
[java]
public SoundPool(
int maxStream, // 同时播放的流的最大数量
int streamType,// 流的类型,一般为STREAM_MUSIC
int srcQuality // 采样率转化质量,当前无效果,使用0作为默认值
)
public SoundPool(
int maxStream, // 同时播放的流的最大数量
int streamType,// 流的类型,一般为STREAM_MUSIC
int srcQuality // 采样率转化质量,当前无效果,使用0作为默认值
) eg.
SoundPool soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
创建了一个最多支持3个流同时播放的,类型标记为音乐的SoundPool。
2. 加载一个音频文件:
以下方法,取其一即可:
[java]
int load(Context context, int resId, int priority) //从APK资源载入
int load(FileDescriptor fd, long offset, long length, int priority) //从FileDescriptor对象载入
int load(AssetFileDescriptor afd, int priority) //从Asset对象载入
int load(String path, int priority) //从完整文件路径名载入
int load(Context context, int resId, int priority) //从APK资源载入
int load(FileDescriptor fd, long offset, long length, int priority) //从FileDescriptor对象载入
int load(AssetFileDescriptor afd, int priority) //从Asset对象载入
int load(String path, int priority) //从完整文件路径名载入 我目前使用的是第一种,从APK资源载入:
[java]
int load(
Context context, // 应用程序的上下文,即当前的Activity,可理解为谁来调用这个方法。
int resId, // 资源的ID
int priority // 优先级,我们设置为1即可。
)
int load(
Context context, // 应用程序的上下文,即当前的Activity,可理解为谁来调用这个方法。
int resId, // 资源的ID
int priority // 优先级,我们设置为1即可。
)
3. 播放音效:
[java]
int play(
int soundID, // 播放的音乐ID
float leftVolume, // 左声道音量
float rightVolume, // 右声道音量
int priority, // 优先级,0为最低
int loop, // 循环次数,0为不循环,-1为永远循环
float rate // 回放速度,该值在0.5-2.0之间,1为正常速度。
)
int play(
int soundID, // 播放的音乐ID
float leftVolume, // 左声道音量
float rightVolume, // 右声道音量
int priority, // 优先级,0为最低
int loop, // 循环次数,0为不循环,-1为永远循环
float rate // 回放速度,该值在0.5-2.0之间,1为正常速度。
)
4. 暂停音效:
[java]
void pause(int streamID) // 参数为 音效的ID。
void pause(int streamID) // 参数为 音效的ID。
二.编程实现:
1. 界面编辑(res\layout\main.xml):
[java]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:text="播放音效1"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button> <!-- 添加一个Button控件 -->
<Button
android:text="播放音效2"
android:id="@+id/Button02"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button> <!-- 添加一个Button控件 -->
<Button
android:text="暂停音效1"
android:id="@+id/Button1Pause"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button> <!-- 添加一个Button控件 -->
<Button
android:text="暂停音效2"
android:id="@+id/Button2Pause"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button> <!-- 添加一个Button控件 -->
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_heig
补充:移动开发 , Android ,