iOS播放系統聲音


iOS可通過兩種方式播放聲音:

  • 播放壓縮的聲音文件,比如mp3文件,一般使用播放聲音中提到的方法,適用於播放時間較長,比如大於30秒,AVAudioPlayer可以提供更多的控制特性,比如暫停等等
  • 播放系統聲音,比如翻頁的嘩啦聲,應該使用播放系統聲音的方法,因為壓縮的聲音文件比播放wav等非壓縮聲音文件在播放前消耗更多的處理器資源,這樣的聲音還要頻繁的播放,而且,因為系統聲音文件都較小,一般小於30秒,因此即使壓縮格式,也不會節省多少存儲空間。

本文介紹后者,播放系統聲音。

系統聲音屬於AudioToolbox框架,因此使用前,需要給項目安裝框架:

image

 

另外,需要引用頭文件:

#import <AudioToolbox/AudioToolbox.h>

播放系統聲音,基本思路是:

  • 在播放前,比如控制器初始化階段,注冊系統聲音,並保存一個系統聲音id
  • 在需要播放系統聲音的時候只需調用系統服務的全局方法,傳入系統聲音id即可

注冊系統聲音,首先要創建實例變量,供后面播放時引用

SystemSoundID soundID;

然后,在比如控制器初始化代碼部分,加入:

NSURL *filePath   = [[NSBundle mainBundle] URLForResource:   @"pageflip" withExtension: @"aif"]; 
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);

這里的pageflip.aif是系統聲音允許的格式。還可以接受:

  • caf
  • wav

如果你有MP3文件,可以轉換成上述格式文件。我使用的是mac系統,臨時找的Switch,可在網站(http://www.nch.com.au/switch/index.html)上下載試用版。

image

播放聲音很簡單:

AudioServicesPlaySystemSound(soundID);

 

 

 

需要導入框架#import <AudioToolbox/AudioToolbox.h>
SystemSoundID sameViewSoundID;
NSString *thesoundFilePath = [[NSBundle mainBundle] pathForResource:@"Clap Crowd" ofType:@"caf"]; //音樂文件路徑
CFURLRef thesoundURL = (CFURLRef)[NSURL fileURLWithPath:thesoundFilePath];
AudioServesCreateSystemSoundID(thesoundURL, &sameViewSoundID);
//變量SoundID與URL對應

AudioServicesPlaySystemSound(sameViewSoundID); //播放SoundID聲音




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM