鴻蒙OS 短音播放開發(fā)指導(dǎo)

2020-09-18 14:33 更新

場景介紹

短音播放主要負(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í)長和 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)音。

音頻資源的加載與播放

  1. 通過 SoundPlayer(int taskType)構(gòu)造方法獲取 SoundPlayer 類的實(shí)例化對(duì)象,其中入?yún)?taskType 的取值范圍和含義參考枚舉類 AudioManager.AudioStreamType 的定義。

  1. 調(diào)用 createSound(String path) 方法從指定路徑加載音頻資源,并生成短音 ID,后續(xù)可使用通過短音 ID 進(jìn)行短音資源的播放和刪除等操作。

  1. (可選)提供單獨(dú)對(duì)音量,循環(huán)次數(shù),播放速度和優(yōu)先級(jí)進(jìn)行的設(shè)置的方法,支持在短音播放過程中進(jìn)行實(shí)時(shí)調(diào)整。

  1. 短音播放提供兩種方法,一種是包含播放參數(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ù)的管理。

  1. 通過任務(wù) ID,可以對(duì)短音播放任務(wù)進(jìn)行暫停,恢復(fù)和停止。

  1. 短音資源使用完畢需要調(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 音的生成與播放

  1. 通過 SoundPlayer() 構(gòu)造方法獲取 SoundPlayer 類的實(shí)例化對(duì)象。

  1. 使用 SoundPlayer 的實(shí)例化對(duì)象,通過 createSound(ToneDescriptor.ToneType type, int durationMs)方法,指定 tone 音類型和 tone 音播放時(shí)長來創(chuàng)建 tone 音資源。

  1. 使用 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)音的播放

  1. 通過 SoundPlayer(String packageName) 構(gòu)造方法獲取 SoundPlaye r類的實(shí)例化對(duì)象。

  1. 使用 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);
   }
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)