2017-11-10 13 views
0

私のアプリに「webRTC」ポッドがあります。私はビデオを開く前にヘッドホンを差し込み、ヘッドフォンには音がなく、スピーカーから音が出ます。しかし、ビデオを開いた後にヘッドホンを差し込むと、ヘッドフォンから音が出ます。私はネットで長い時間を探しています。しかし、使用しないでください。ビデオを開くとヘッドフォンに音が出ません

BOOL success = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord mode:AVAudioSessionModeVideoChat options:AVAudioSessionCategoryOptionDefaultToSpeaker error:&error]; 

答えて

1

はあなたが以下のようになります。私はこのようなコーディングしようとすると、それは動作しません、

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; 

そして:助けるか、どのようにthis.Thisを達成するためにいくつかのアイデアを与えることをしてみてくださいすることは私のコードですデフォルトとしてoverrideSpeakerを使用します。 あなたは単にoverrideOutputAudioPortで再生する必要があります。 私が直面しているスピーカーとセカンダリースピーカーを使用している間、いくつかの重要なポイントがあります。

  1. あなたはスピーカーユーザー

    [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker エラー:nilを]からオーディオをルーティングします。

    セカンダリースピーカーまたは外部周辺機器を使用する場合は、

    [AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone 誤差:ゼロ]。

  2. シグナリングプロセスが動作している間(オファーと応答の作成/受諾) デフォルトのスピーカールートはAVAudioSessionPortOverrideNoneにする必要があります。自動的にAVAudioSessionPortOverrideNoneに変更されます。
  3. アプリケーション内でoverrideOutputAudioPortメソッドを使用してオーディオルートを変更できます。

    ご希望の場合はお手数ですが、

+0

本当にありがとうございました。私は間違いを犯したと思います。これは私のコードを次のように変更したときに機能します: ' - (void)enableSpeaker { [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecordモード:AVAudioSessionModeVideoChatのオプション:AVAudioSessionCategoryOptionDefaultToSpeakerエラー:なし]; _isSpeakerEnabled = YES; } ' – weizhao

関連する問題