【iphoneアプリ】iOS 7で非推奨になった AudioSession編
今回は、Audio系で利用する「AudioSession」についてです。
iOS 7から「AudioToolbox」フレームワークの「AudioSession」クラス
が非推奨となり、
それに代わり、「AVFoundation」フレームワークの
「AVAudioSession」クラスを利用する事になりましたので記載します。
今まで「AudioToolbox」フレームワークの「AudioSession」を利用する際
以下のように記載していました。
//AudioSession利用開始 AudioSessionSetActive(YES); //音声入出力クラス利用 UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);
しかし、このままだとiOS 7のコンパイル設定しているXcodeでは、
注記扱いにされてしまいます。
その為、iOS 7対応として「AVFoundation」フレームワークの「AVAudioSession」
を利用し、以下の用に変更します。
//AVFoundationのインスタンス AVAudioSession *audioSession = [AVAudioSession sharedInstance]; //カテゴリの設定 [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; //AVFoundation利用開始 [audioSession setActive:YES error:nil];
また、「setCategory」は以下の項目の設定も可能なので、利用用途に応じて
変更してください。
//setCategory一覧 NSString *const AVAudioSessionCategoryAmbient; //別アプリでオーディオ再生中にアプリを起動しても停止しない。 NSString *const AVAudioSessionCategorySoloAmbient; //デフォルト設定 別アプリでオーディオ再生中にアプリを起動するとオーディオが停止する。 NSString *const AVAudioSessionCategoryPlayback; //音楽再生用のアプリで利用 NSString *const AVAudioSessionCategoryRecord; //入力のみで録音用に利用 NSString *const AVAudioSessionCategoryPlayAndRecord; //Voip,チャット用にマイク入力と音声出力を行う際に利用 NSString *const AVAudioSessionCategoryAudioProcessing; //再生や録音ではなくオフラインオーディオ処理を行う際に利用。 NSString *const AVAudioSessionCategoryMultiRoute; //USBオーディオインターフェースやHDMIなどの外部出力を接続したときに //ヘッドホンへ別系統の音を出力できる機能です。
あと、「setCategory」には「withOptions」が付加でき、以下のような
記述も可能です。
//AVFoundationのインスタンス AVAudioSession *audioSession = [AVAudioSession sharedInstance]; //カテゴリとオプションの設定 [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; //AVFoundation利用開始 [audioSession setActive:YES error:nil];
「withOptions」は以下の種類がありますので
設定可能なカテゴリが限られていますが、必要に応じて組み合わせて使ってみてください。
//withOptionsの一覧 AVAudioSessionCategoryOptionMixWithOthers //オーディオ再生中に別のアプリを起動した場合も中断させずに利用を可能にする。 //以下のsetCategoryのみ //AVAudioSessionCategoryPlayAndRecord //AVAudioSessionCategoryPlayback AVAudioSessionCategoryOptionDuckOthers //オーディオ再生しながら、カーナビや音声ネビゲーションアプリの利用を可能にする。 //以下のsetCategoryのみ //AVAudioSessionCategoryPlayAndRecord //AVAudioSessionCategoryPlayback AVAudioSessionCategoryOptionAllowBluetooth //Bluetooth対応機器を利用可能なデバイスとして利用可能にする。 //以下のsetCategoryのみ //AVAudioSessionCategoryPlayAndRecord //AVAudioSessionCategoryPlayback AVAudioSessionCategoryOptionDefaultToSpeaker //マイクから拾った音声がデフォルト(受話部)から出力されるのを //スピーカー部からの出力が可能にする。 //以下のsetCategoryのみ //AVAudioSessionCategoryPlayAndRecord