新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS短音播放開發(fā)指導(dǎo)
場(chǎng)景介紹

短音播放主要負(fù)責(zé)管理音頻資源的加載與播放、tone 音的生成與播放以及系統(tǒng)音播放。
接口說明
短音播放開放能力分為音頻資源、tone 音和系統(tǒng)音三部分,均定義在 SoundPlayer 類。
| 接口名 | 描述 |
|---|---|
| SoundPlayer(int taskType) | 構(gòu)造函數(shù),僅用于音頻資源。 |
| int createSound(String path) | 從指定的路徑加載音頻數(shù)據(jù)生成短音資源。 |
| int createSound(Context context, int resourceId) | 根據(jù)應(yīng)用程序上下文合音頻資源 ID 加載音頻數(shù)據(jù)生成短音資源。 |
| int createSound(AssetFD assetFD) | 從指定的 AssetFD 實(shí)例加載音頻數(shù)據(jù)生成短音資源。 |
| int createSound(java.io.FileDescriptor fd, long offset, long length) | 根據(jù)文件描述符從文件加載音頻數(shù)據(jù)生成音頻資源。 |
| int createSound(java.lang.String path, AudioRendererInfo rendererInfo) | 根據(jù)從指定路徑和播放信息加載音頻數(shù)據(jù)生成短音資源。 |
| boolean setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener) | 設(shè)置聲音創(chuàng)建完成的回調(diào)。 |
| boolean setOnCreateCompleteListener(SoundPlayer.OnCreateCompleteListener listener, boolean isDiscarded) | 設(shè)置用于聲音創(chuàng)建完成的回調(diào),并根據(jù)指定的isDiscarded標(biāo)志位確定是否丟棄隊(duì)列中的原始回調(diào)通知消息。 |
| boolean deleteSound(int soundID) | 刪除短音同時(shí)釋放短音所占資源。 |
| boolean pause(int taskID) | 根據(jù)播放任務(wù)ID暫停對(duì)應(yīng)的短音播放。 |
| int play(int soundID) | 使用默認(rèn)參數(shù)播放短音。 |
| int play(int soundID, SoundPlayerParameters parameters) | 使用指定參數(shù)播放短音。 |
| boolean resume(int taskID) | 恢復(fù)短音播放任務(wù)。 |
| boolean setLoop(int taskID, int loopNum) | 設(shè)置短音播放任務(wù)的循環(huán)次數(shù)。 |
| boolean setPlaySpeedRate(int taskID, float speedRate) | 設(shè)置短音播放任務(wù)的播放速度。 |
| boolean setPriority(int taskID, int priority) | 設(shè)置短音播放任務(wù)的優(yōu)先級(jí)。 |
| boolean setVolume(int taskID, AudioVolumes audioVolumes) | 設(shè)置短音播放任務(wù)的播放音量。 |
| boolean setVolume(int taskID, float volume) | 設(shè)置短音播放任務(wù)的所有音頻聲道的播放音量。 |
| boolean stop(int taskID) | 停止短音播放任務(wù)。 |
| boolean pauseAll() | 暫停所有正在播放的任務(wù)。 |
| boolean resumeAll() | 恢復(fù)雖有已暫停的播放任務(wù)。 |
| 接口名 | 描述 |
|---|---|
| SoundPlayer() | 構(gòu)造函數(shù),僅用于 tone 音。 |
| boolean createSound(ToneDescriptor.ToneType type, int durationMs) | 創(chuàng)建具有音調(diào)頻率描述和持續(xù)時(shí)間(毫秒)的 tone 音。 |
| boolean createSound(AudioStreamInfo.StreamType streamType, float volume) | 根據(jù)音量和音頻流類型創(chuàng)建 tone 音。 |
| boolean play(ToneDescriptor.ToneType toneType, int durationMs) | 播放指定時(shí)長(zhǎng)和 tone 音類型的 tone 音。 |
| boolean pause() | 暫停 tone 音播放。 |
| boolean play() | 播放創(chuàng)建好的 tone 音。 |
| boolean release() | 釋放 tone 音資源。 |
| 接口名 | 描述 |
|---|---|
| SoundPlayer(String packageName) | 構(gòu)造函數(shù),僅用于系統(tǒng)音。 |
| boolean playSound(SoundType type) | 播放系統(tǒng)音。 |
| boolean playSound(SoundType type, float volume) | 指定音量播放系統(tǒng)音。 |
音頻資源的加載與播放
- 通過 SoundPlayer(int taskType)構(gòu)造方法獲取 SoundPlayer 類的實(shí)例化對(duì)象,其中入?yún)?taskType 的取值范圍和含義參考枚舉類 AudioManager.AudioStreamType 的定義。
- 調(diào)用 createSound(String path) 方法從指定路徑加載音頻資源,并生成短音 ID,后續(xù)可使用通過短音 ID 進(jìn)行短音資源的播放和刪除等操作。
- (可選)提供單獨(dú)對(duì)音量,循環(huán)次數(shù),播放速度和優(yōu)先級(jí)進(jìn)行的設(shè)置的方法,支持在短音播放過程中進(jìn)行實(shí)時(shí)調(diào)整。
- 短音播放提供兩種方法,一種是包含播放參數(shù)設(shè)置的 play(int soundID, SoundPlayerParameters parameters) 方法,用戶可以在 SoundPlayerParameters 數(shù)據(jù)結(jié)構(gòu)中定義音量,循環(huán)次數(shù),播放速度和優(yōu)先級(jí),另一種是使用默認(rèn)播放參數(shù)的 play(int soundID) 方法。短音播放成功后返回任務(wù) ID,供后續(xù)對(duì)任務(wù)的管理。
- 通過任務(wù) ID,可以對(duì)短音播放任務(wù)進(jìn)行暫停,恢復(fù)和停止。
- 短音資源使用完畢需要調(diào)用 deleteSound(int soundID)完成對(duì)資源的釋放。
下面的樣例展示音頻資源的加載與播放:
public void demo() {
// 步驟1:實(shí)例化對(duì)象
SoundPlayer soundPlayer = new SoundPlayer(AudioManager.AudioVolumeType.STREAM_MUSIC.getValue());
// 步驟2:指定音頻資源加載并創(chuàng)建短音
int soundId = soundPlayer.createSound("/system/xxx");
// 步驟3:指定音量,循環(huán)次數(shù)和播放速度
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 音的生成與播放
- 通過 SoundPlayer() 構(gòu)造方法獲取 SoundPlayer 類的實(shí)例化對(duì)象。
- 使用 SoundPlayer 的實(shí)例化對(duì)象,通過 createSound(ToneDescriptor.ToneType type, int durationMs)方法,指定 tone 音類型和 tone 音播放時(shí)長(zhǎng)來創(chuàng)建 tone 音資源。
- 使用 SoundPlayer 的實(shí)例化對(duì)象,通過 play、pause、release 方法完成 tone 音播放,tone 音暫停和 tone 音資源釋放。
下面的樣例展示 tone 音的生成與播放:
public void demo() {
// 步驟1:實(shí)例化對(duì)象
SoundPlayer soundPlayer = new SoundPlayer();
// 步驟2:創(chuàng)建DTMF_0(高頻1336Hz,低頻941Hz)持續(xù)時(shí)間1000ms的tone音
soundPlayer.createSound(ToneDescriptor.ToneType.DTMF_0, 1000);
// 步驟3:tone應(yīng)播放,暫停和資源釋放
soundPlayer.play();
soundPlayer.pause();
soundPlayer.release();
}系統(tǒng)音的播放
- 通過 SoundPlayer(String packageName) 構(gòu)造方法獲取 SoundPlaye r類的實(shí)例化對(duì)象。
- 使用 SoundPlayer 的實(shí)例化對(duì)象,通過 playSound(SoundType type) 或 playSound(SoundType type, float volume) 方法指定系統(tǒng)音類型和音量,并進(jìn)行系統(tǒng)音播放。
下面的樣例展示系統(tǒng)音的播放:
public void demo() {
// 步驟1:實(shí)例化對(duì)象
SoundPlayer soundPlayer = new SoundPlayer("packageName");
// 步驟2:播放鍵盤敲擊音,音量為1.0
soundPlayer.playSound(SoundType.KEY_CLICK, 1.0f);
} 當(dāng)前題目:創(chuàng)新互聯(lián)鴻蒙OS教程:鴻蒙OS短音播放開發(fā)指導(dǎo)
文章來源:http://www.dlmjj.cn/article/dpddede.html


咨詢
建站咨詢
