Android遊戲之音效模塊

Android遊戲之音效模塊

遊戲聲音分為『音樂』與『音效』.音效長度不應超過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();

發佈留言