CoreAudioは使わずに、AudioToolboxで音を再生してみる。 ToolboxってOSX以前のレガシーなライブラリっすよね。
Resources/sound.wavを再生してみます。 まず、AudioToolboxライブラリを追加。 次にXcode ■SoundViewController.h
#import
#import
@interface SoundViewController : UIViewController {
CFURLRef soundURL;
SystemSoundID soundId;
}
@property (readwrite) CFURLRef soundURL;
@property (readonly) SystemSoundID soundId;
-(IBAction) buttonPressed;
-(void) playSound;
-(void) loadSound:(NSString *)soundName;
AudioToolboxをimportして、CFURLRef、SystemSoundIDを定義。 汎用的に音の読み込み関数「loadSound」、音再生用関数「playSound」も用意しておく。
■SoundViewController.m
#import "SoundViewController.h"
@implementation SoundViewController
@synthesize soundURL;
@synthesize soundId;
- (IBAction) buttonPressed {
[self playSound];
}
-(void)loadSound:(NSString *)soundName {
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"wav"];
soundURL = (CFURLRef)[NSURL fileURLWithPath:soundPath];
AudioServicesCreateSystemSoundID (soundURL, &soundId);
CFRelease(soundURL);
}
-(void)playSound {
AudioServicesPlaySystemSound (soundID);
}
- (void)viewDidLoad {
[self loadSound:@"sound"];
}
- (void)dealloc {
AudioServicesDisposeSystemSoundID (soundId);
[super dealloc];
}
(1)viewDidLoadでファイル名を引数にloadSoundを実行して、Resources/sound.wavを読み込む。 ※wav限定 (2)IBActionでbuttonPressedされたら、playSoundを実行する。 (3)loadSoundでは、AudioServicesDisposeSystemSoundIDを利用してsoundIdを解放する。
サウンドファイル管理はまだ汎用化できそうですが、とりあえずこんな感じで。