2012-06-22 117 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