ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【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