iPhone OSが2.2にアップデートされまして、Frameworkに新しくAVFoundationなんてものが追加されていました。今のところAVAudioPlayerというAPIしか無いようですが、AVと名がついているだけに今後映像がらみでも機能が増えそうな気がします。
そのAVAudioPlayerを早速試してみたところ、お手軽BGM再生APIという感じのようです。オーディオファイルのパスを渡してやるだけでWAV、AIFF、mp3、AAC、ロスレスあたりはいとも簡単に再生できます。これがあればやたらめんどくさいAudio Queue Serviceなんていりません。
ということでとりあえず再生してみるコードです。バンドルにmp3を入れてから実行すると延々とループして再生します。2つ以上あればミックスして再生されます。ちょっとお行儀の悪いコードですので、そのへんは適当に流してください。
- (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after application launch [window makeKeyAndVisible]; NSBundle *bundle = [NSBundle mainBundle]; NSArray *wavePaths = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[bundle bundlePath]]; for (NSString *path in wavePaths) { NSURL *url = [NSURL fileURLWithPath:path]; NSError *error = nil; AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; if (!error) { audioPlayer.numberOfLoops = -1; [audioPlayer play]; } } }
ピンバック: iPhone 2.2の誰も教えてくれない新機能 | Objective-Audio