21

私が設定したとき:

[[AVAudioSession sharedInstance] setCategory:
    AVAudioSessionCategoryPlayAndRecord error:NULL];

…録音と再生は問題なく動作しますが、録音と PlayAndRecord を設定せずに同じサウンドを再生する場合に比べて、再生音量だけが約 60% 低くなります。

録音セッションを開始するには、大音量のピークを取得する必要があります (ユーザーがマイクを吹き込んだかどうかを確認するため)。しかし、AVAudio..PlayandRecord の設定がないと、その間は音を再生できません。それが、このコマンドを実装した理由です。

ヘルプはありますか?

Thxクリス

4

7 に答える 7

26

同じ問題を抱えているすべての人のために、出力をスピーカーにリダイレクトします。

[[AVAudioSession sharedInstance] setCategory:
    AVAudioSessionCategoryPlayAndRecord error:NULL];
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,
    sizeof(audioRouteOverride), &audioRouteOverride);

それはうまくいきます。

于 2010-02-11T19:20:12.500 に答える
14

私は( iOSドキュメントのリスト7-9を参照)、オーディオルートのオーバーライドに関する上記の提案された解決策は、イヤホンを接続して取り外した後、機能しなくなることを発見しました。

したがって、オーディオルートの変更を現在のオーディオセッション(iOSドキュメントのリスト7-10 )で永続的にしたい場合は、代わりに次を使用してデフォルトのオーディオルートを設定できます。

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
//Set the general audio session category
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayAndRecord error: &setCategoryErr];

//Make the default sound route for the session be to use the speaker
UInt32 doChangeDefaultRoute = 1;
AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute);

//Activate the customized audio session
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];

もちろん、AudioToolboxフレームワークをリンクし、を使用してインポートしてください。

#import <AudioToolbox/AudioServices.h>
于 2011-11-27T20:24:53.490 に答える
3

import ステートメントを忘れないでください。おそらく、より経験豊富なプログラマーにとっては明らかです...

#import <AudioToolbox/AudioServices.h>
于 2010-08-11T09:55:00.853 に答える
0

また、[フレームワーク]->[追加]->[既存のフレームワーク]を右クリックして、AudioToolboxおよびAVFoundationフレームワークをプロジェクトに追加する必要があります。

そうしないと、リンカーエラーが発生する可能性があります: "_ AudioSessionSetProperty"、参照元:-[OpenBook startRecording] inOpenBook.o

于 2011-06-04T17:49:13.690 に答える