2012-06-22 115 views
5

我想在我的调用中实现静音按钮。我正在为iPhone的VOIP应用程序工作。现在,当来电和用户接听时,我想要显示静音按钮,以便用户可以将通话或会议静音。我通过PJSIP API做了同样的事情。如何在iOS上的PJSIP调用中实现静音功能

-(int) mutethecall 
{ 
    pj_status_t status = pjsua_conf_adjust_rx_level (0,0); 
    status = pjsua_conf_adjust_tx_level (0,0); 
    return (PJ_SUCCESS == status); 
} 
-(int) unmutethecall 
{ 
    pj_status_t status = pjsua_conf_adjust_rx_level (0,1); 
    status = pjsua_conf_adjust_tx_level (0,1); 
    return (PJ_SUCCESS == status); 
} 

问题是,虽然此代码适用于一对一呼叫,但它不适用于会议场景。

我在想我是否可以直接关闭麦克风:我是否可以使用iOS旁路PJSIP API来实现相同的功能?

这可能吗?

回答

7

当您想取消静音时,您可以使用pjsua_conf_disconnect和pjsua_conf_connect完全断开麦克风与会议的连接。

下面是一些Objective-C代码,做的伎俩:

+(void)muteMicrophone 
{ 
    @try { 
     if(pjsipConfAudioId != 0) { 
      NSLog(@"WC_SIPServer microphone disconnected from call"); 
      pjsua_conf_disconnect(0, pjsipConfAudioId); 
     } 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Unable to mute microphone: %@", exception); 
    } 
} 

+(void)unmuteMicrophone 
{ 
    @try { 
     if(pjsipConfAudioId != 0) { 
      NSLog(@"WC_SIPServer microphone reconnected to call"); 
      pjsua_conf_connect(0,pjsipConfAudioId); 
     } 
    } 
    @catch (NSException *exception) { 
     NSLog(@"Unable to un-mute microphone: %@", exception); 
    } 
} 

注意建立了呼叫时,在Objective-C的pjsipConfAudioID被检索再次...

static void on_call_state(pjsua_call_id call_id, pjsip_event *e) 
{ 
    pjsua_call_info ci; 
    PJ_UNUSED_ARG(e); 
    pjsua_call_get_info(call_id, &ci); 
    pjsipConfAudioId = ci.conf_slot; 
    ... 
} 

希望这有帮助!

+0

感谢您的回复。现在,我不在这方面工作,但将来我不得不在这方面努力。我相信你的答案会帮助我。谢谢 – knowledgeseeker