短音播放主要负责管理音频资源的加载与播放、tone 音的生成与播放以及系统音播放。
短音播放开放能力分为音频资源、tone 音和系统音三部分,均定义在 SoundPlayer 类。
接口名 | 描述 |
---|---|
SoundPlayer(int taskType) | 构造函数,仅用于音频资源。 |
int createSound(String path) | 从指定的路径加载音频数据生成短音资源。 |
int createSound(Context context, int resourceId) | 根据应用程序上下文合音频资源 ID 加载音频数据生成短音资源。 |
int createSound(AssetFD assetFD) | 从指定的 AssetFD 实例加载音频数据生成短音资源。 |
int createSound(java.io.FileDescriptor fd, long offset, long length) | 根据文件描述符从文件加载音频数据生成音频资源。 |
int createSound(java.lang.String path, AudioRendererInfo rendererInfo) | 根据从指定路径和播放信息加载音频数据生成短音资源。 |
boolean setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener) | 设置声音创建完成的回调。 |
boolean setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener, boolean isDiscarded) | 设置用于声音创建完成的回调,并根据指定的isDiscarded标志位确定是否丢弃队列中的原始回调通知消息。 |
boolean deleteSound(int soundID) | 删除短音同时释放短音所占资源。 |
boolean pause(int taskID) | 根据播放任务ID暂停对应的短音播放。 |
int play(int soundID) | 使用默认参数播放短音。 |
int play(int soundID, SoundPlayerParameters parameters) | 使用指定参数播放短音。 |
boolean resume(int taskID) | 恢复短音播放任务。 |
boolean setLoop(int taskID, int loopNum) | 设置短音播放任务的循环次数。 |
boolean setPlaySpeedRate(int taskID, float speedRate) | 设置短音播放任务的播放速度。 |
boolean setPriority(int taskID, int priority) | 设置短音播放任务的优先级。 |
boolean setVolume(int taskID, AudioVolumes audioVolumes) | 设置短音播放任务的播放音量。 |
boolean setVolume(int taskID, float volume) | 设置短音播放任务的所有音频声道的播放音量。 |
boolean stop(int taskID) | 停止短音播放任务。 |
boolean pauseAll() | 暂停所有正在播放的任务。 |
boolean resumeAll() | 恢复虽有已暂停的播放任务。 |
接口名 | 描述 |
---|---|
SoundPlayer() | 构造函数,仅用于 tone 音。 |
boolean createSound(ToneDescriptor.ToneType type, int durationMs) | 创建具有音调频率描述和持续时间(毫秒)的 tone 音。 |
boolean createSound(AudioStreamInfo.StreamType streamType, float volume) | 根据音量和音频流类型创建 tone 音。 |
boolean play(ToneDescriptor.ToneType toneType, int durationMs) | 播放指定时长和 tone 音类型的 tone 音。 |
boolean pause() | 暂停 tone 音播放。 |
boolean play() | 播放创建好的 tone 音。 |
boolean release() | 释放 tone 音资源。 |
接口名 | 描述 |
---|---|
SoundPlayer(String packageName) | 构造函数,仅用于系统音。 |
boolean playSound(SoundType type) | 播放系统音。 |
boolean playSound(SoundType type, float volume) | 指定音量播放系统音。 |
下面的样例展示音频资源的加载与播放:
public void demo() {
// 步骤1:实例化对象
SoundPlayer soundPlayer = new SoundPlayer(AudioManager.AudioVolumeType.STREAM_MUSIC.getValue());
// 步骤2:指定音频资源加载并创建短音
int soundId = soundPlayer.createSound("/system/xxx");
// 步骤3:指定音量,循环次数和播放速度
SoundPlayerParameters parameters = new SoundPlayerParameters();
parameers.setVolumes(new AudioVolumes());
parameters.setLoop(10);
parameters.setSpeed(1.0f);
// 步骤4:短音播放
soundPlayer.play(soundId, parameters);
// 步骤5:停止播放
soundPlayer.stop(soundId);
// 步骤6:释放短音资源
soundPlayer.deleteSound(soundId);
}
下面的样例展示 tone 音的生成与播放:
public void demo() {
// 步骤1:实例化对象
SoundPlayer soundPlayer = new SoundPlayer();
// 步骤2:创建DTMF_0(高频1336Hz,低频941Hz)持续时间1000ms的tone音
soundPlayer.createSound(ToneDescriptor.ToneType.DTMF_0, 1000);
// 步骤3:tone应播放,暂停和资源释放
soundPlayer.play();
soundPlayer.pause();
soundPlayer.release();
}
下面的样例展示系统音的播放:
public void demo() {
// 步骤1:实例化对象
SoundPlayer soundPlayer = new SoundPlayer("packageName");
// 步骤2:播放键盘敲击音,音量为1.0
soundPlayer.playSound(SoundType.KEY_CLICK, 1.0f);
}
(c) 2024 chaojicainiao.com MIT license