遊戲聲音分為『音樂』與『音效』.音效長度不應超過5秒.讓其可以載入『記憶體』中.並將所有音效文檔存放在『\app\src\main\assets』目錄下.讓AssetManager能夠訪問.並將所有『音效』文檔存為『OGG』格式.並且採用低採樣頻率.
Android提供SoundPool『音效池』實現音效載入與播放.
SoundPool(int maxStreams, int streamType, int srcQuality)
maxStreams:用時能播放音效量
streamType:使用音樂流輸出音頻.這裡使用AudioManager.STREAM_MUSIC
srcQuality:廢棄,總為0
構建音效播放
SoundPool sound_pool = new SoundPool(32, AudioManager.STREAM_MUSIC,0);
用於訪問Asset目錄
AssetManager asset_manager = context.getAssets();
獲取資源文檔描述符
AssetFileDescriptor afd = asset_manager.openFd(file_name);
把音效文檔載入『記憶體』中,讓AssetFileDescriptor傳給load()並返回整數ID句柄
int id = sound_pool.load(afd,1);
播放音效
public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
soundID:音效ID句柄
leftVolume\rightVolume:左右聲道音量在0.0f – 1.0f之間
priority:優先級.值越大優先級越高,0優先級最低
loop:循環次數.0代表不循環
rate:播放速率取值0.5f – 2.0f之間.其中0.5f表示播放速度慢一半.1表示正常速率播放.
單次播放音效
sound_pool.play(id, 1.0f, 1.0f, 0, 0, 1);
當不需要音效時,需要釋放音效記憶體
sound_pool.unload(ID);
當退出遊戲時需釋放SoundPool『音效池』
sound_pool.release();
你必須登入才能發表留言。