2010-04-07

iPhoneアプリ開発: 同時に録音再生するアプリで、オーディオ出力をiPhone端末下部のスピーカに切り替える

VoIPアプリのように、マイク入力とスピーカー出力を同時に処理する必要がある場合、下記コードの(1)のように、AudioSessionCategoryをkAudioSessionCategory_PlayAndRecordに設定します。

関連する設定をもう一つ。

iPhoneの内蔵スピーカーには、次の二つが存在します:
  1. 電話として使っているときに耳にあたる箇所のスピーカー(最大出力音量小)
  2. 端末下部のスピーカー(最大出力音量大)
デフォルトでは1.のスピーカーが使用されます。

2.のスピーカを利用したい場合、下記コードの(2)の設定も必要になります。
- (void)loadView {
    // (1) settings for playing and recording audio
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionSetActive(YES);
    UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord;
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, 
                            sizeof (sessionCategory), 
                            &sessionCategory);

    // (2) settings for redirecting audio output
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
    AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
                             sizeof (audioRouteOverride),
                             &audioRouteOverride);

    ...
}

参考:オーディオセッションプログラミングガイド: 出力オーディオのリダイレクト

------
iPhoneオーディオプログラミングに関しては、次の本がオススメ。
iPhone Core Audioプログラミング
永野 哲久 / ソフトバンククリエイティブ / 売り上げランキング: 28301
おすすめ度の平均: 4.5
4 iPhoneプログラマは持っていて損のない良書
5 オーディオ系アプリ開発のバイブル
5 あまり知られたくない本です。
4 必要な事は書かれてます。
5 明快な説明と実践的なサンプルコードがすばらしい
posted with amazlet at 2011.2.18

0 件のコメント: