6

我想在我的通话中实现静音按钮。我正在为 iPhone 开发一个 VOIP 应用程序。现在,当来电且用户接听时,我想显示一个静音按钮,以便用户可以将通话或会议静音。我通过 PJSIP API 做了同样的事情。

-(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);
}

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

我想知道我是否可以直接关闭麦克风:我可以绕过 PJSIP API 使用 iOS 实现相同的功能吗?

这可能吗?

4

1 回答 1

8

当您想取消静音时,您可以使用 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);
    }
}

请注意,pjsipConfAudioID 是在建立呼叫时检索到的,再次在 Objective-C 中...

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;
    ...
}

希望有帮助!

于 2012-07-26T18:44:51.097 回答