2011年 1月 22日(土曜日) 01:13

iOSで短いサウンドを再生するには

評価:
(1 Vote)

これもよく使うのに毎回やり方を忘れてしまうのでメモ。

iOSでサウンドを再生する方法はいくつかありますが、最も簡単に、短い効果音などを再生するには、AudioToolboxを使います。

この方法は、使い方がとても簡単な反面、途中で再生を中断したり、音量を調整したり、プレロードしたりといったことはできません。ボタンを押したときのクリック音などに使います。

1. AudioToolbox.frameworkを取り込みます
2. AudioToolbox/AudioServices.hをインポート
#import <AudioToolbox/AudioServices.h>
3. SystemSoundIDを宣言

何度も使う場合は、メンバ変数として宣言しておくと便利。

    SystemSoundID beepSoundId;
4. SystemSoundオブジェクトを作成

ここでは、Resourcesの下にある"beep.wav"を再生します。AudioServicesCreateSystemSoundIDでSystemSoundオブジェクトを作成します。次のようなメソッドを定義しておくと便利。

- (void)loadSounds {
    NSBundle *mainBundle = [NSBundle mainBundle];	
    NSURL *beepWavURL = [NSURL fileURLWithPath:[mainBundle pathForResource:@"beep" ofType:@"wav"] isDirectory:NO];
    AudioServicesCreateSystemSoundID((CFURLRef)beepWavURL, &beepSoundId);
}
5. 再生

あとは、再生したいタイミングでAudioServicesPlaySystemSoundをコールすれば、音が鳴ります。

        AudioServicesPlaySystemSound(beepSoundId);
5. あとかたづけ

使わなくなったら、AudioServicesDisposeSystemSoundIDを呼んで解放します。これはdeallocの中で呼んだ例。

- (void)dealloc {
    [super dealloc];
    AudioServicesDisposeSystemSoundID(beepSoundId);
}
最終更新日: 2011年 6月 27日(月曜日) 01:11
くらち たかよし

くらち たかよし

モバイル・Webアプリ作家。最近は主にiPhoneアプリ制作を手がける。企画から、UIデザイン、設計、実装、テスト、多言語対応、ユーザーサポートまでを1人〜数人の個人で行う全人的開発手法の確立を目指している。

使う言語はObjective-C, C++, C#, Java, PHPなど。Web関連で使うものはCakePHP, MySQL, Joomla! CMSなど。デザインはシロウトながらPhotoshopとIllustratorをなんとかがんばって使う。

場所や時間に縛られない、インターネット時代の新しい働き方、自由な生き方を模索中。海外移住、低予算&低リスク起業、キャリアデザイン、心理学などにも興味あり。

Web: awaresoft.jp/