遊戲聲音分為『音樂』與『音效』.遊戲背景『音樂』播放時間通常達幾分鐘以上.音檔通常較大不能一次性載入記憶體.只能以『數據流』方式逐次讀入數據塊.並解碼為PCM數據交給音頻芯片上.Android系統提供MediaPlayer幫你解卻所有問題. 將所有『音樂』文檔存放在『\app\src\main\assets』目錄下.讓AssetManager能夠訪問.
生成MediaPlayer音頻播放器
MediaPlayer media_player = new MediaPlayer();
獲取ASSET文檔描述符
AssetFileDescriptor afd = asset_manager.openFd(file_name);
文檔描述符
FileDescriptor file_descriptor = afd.getFileDescriptor();
獲取音檔數據開此位置偏移量
long offset = afd.getStartOffset();
獲取音檔數據長度
long length = afd.getLength();
設定音檔數據
media_player.setDataSource(descriptor,offset,length);
每次啟動播放時.都需載入準備播放
media_player.prepare();
啟動播放
media_player.start();
播放中若暫停播放
media_player.pause();
播放中若停止播放
media_player.stop();
設定循環播放.
media_player.setLooping(true);
設定左右聲道音量.數值在0~1之間
media_player.setVolume(volume,volume);
判定時否播放中. isPlaying()若返回true則播放中否則返回false
media_player.isPlaying();
或用註冊OnCompletionListener簡聽器
media_player.setOnCompletionListener(listener);
若退出遊戲需釋放記憶體
media_player.release();