【问题标题】:Native incoming call is killing my VOIP app's access to audio本机来电正在扼杀我的 VOIP 应用程序对音频的访问
【发布时间】:2016-05-25 07:41:20
【问题描述】:

我正在开发一个允许人们拨打 VOIP 电话的 VOIP 应用程序。每当用户在 VOIP 通话中并在手机上收到本地通话时,VOIP 应用程序的音频就会停止工作。

我读到必须重新初始化 AudioSession,我正在使用这段代码这样做,但这不起作用。有什么建议吗?

self.callCenter = [[CTCallCenter alloc] init];
[self handleCall];

- (void)handleCall
{
    AVAudioSession *session = [AVAudioSession sharedInstance];

    self.callCenter.callEventHandler = ^(CTCall *call){

    if ([call.callState isEqualToString: CTCallStateConnected])
    {
    }
    else if ([call.callState isEqualToString: CTCallStateDialing])
    {
    }
    else if ([call.callState isEqualToString: CTCallStateDisconnected])
    {
      NSLog(@"Call ended");
       dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
         [session setActive:YES error:nil];
       });
    }
    else if ([call.callState isEqualToString: CTCallStateIncoming])
    {
      NSLog(@"Call received");
    }
  };
}

【问题讨论】:

    标签: ios objective-c iphone voip


    【解决方案1】:

    我曾使用 SIP 库开发 VoIP 应用程序。如果您也使用相同的库,并且如果您的 VoIP 呼叫已经存在,则在获得本地呼叫时,本地呼叫会终止您的 VoIP 呼叫音频会话。因此,在获得本地呼叫时,只需将您的 SIP 库“静音”,在结束本地呼叫后,只需“取消静音”即可。

        pjsua_conf_adjust_rx_level(0 /* pjsua_conf_port_id slot*/, 0.0f); //for mute the audio
    
        pjsua_conf_adjust_rx_level(0 /* pjsua_conf_port_id slot*/, 1.0f); //for unmute the audio.
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 1970-01-01
      相关资源
      最近更新 更多