參考了許多資料,以截取重點出來,不同的音效類別所相異的作用:
【包裝成簡單使用的介面】
System Sound API – 簡短的音效播放,沒有花俏的功能。要鑲入AudioToolbox.framework。
AVAudioPlayer – Object-C的音樂播放API。要鑲入AVFoundation.framework。
【需要花比較多功夫設定、但提供較多的控制選項】
Audio Toolbox – 播放和錄製音訊、串流播放。要鑲入AudioToolbox.framework。
Audio Units – 處理音效。要鑲入AudioUnit.framework。
OpenAL – 3D 環繞效果。要鑲入OpenAL.framework。
通常我使用簡短的音效播放,我會使用System Sound API、音樂則是AVAudioPlayer。
使用AVAudioPlayer也是可以播放音效(僅限於mp3),只是比起System Sound API實在是很不方便。
使用System Sound API:(可支援 wav、caf 和 aif 等格式)
#import <AudioToolbox/AudioToolbox.h>
....
....
....
-(void)InitAudioAndPlay{
//先註冊Sound的使用。
SystemSoundID soundID;
NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &soundID);
//播放
AudioServicesPlaySystemSound(soundID);
//想邊播邊震動~那就加上這個~
AudioServicesPlayAlertSound(soundID);
//如果只想要震動一下~
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
//停止
AudioServicesDisposeSystemSoundID(soundID);
//設定音效播放完成時的呼叫
AudioServicesAddSystemSoundCompletion(soundID, NULL, NULL, systemSoundCompletion, NULL);
//取消播放完時候的呼叫~
AudioServicesRemoveSystemSoundCompletion(soundID);
}
static void systemSoundCompletion(SystemSoundID sound_id, void* user_data) {
//音效播放結束時被呼叫的方法函式
//這可以重複播放相同的音效
AudioServicesPlaySystemSound(sound_id);
}
參考資料:
[iPhone] 声音的播放 效果
Core Audio 的 System Sound 音效播放
使用 AVFoundation 來播放音樂
沒有留言:
張貼留言
歡迎大家留言提問,我會答的都會盡力回答!
如果太久沒出現回應就是我又忘記回來看留言了TAT