2012-06-22 19 views
5

Quería implementar el botón Silenciar en mi llamada. Estoy trabajando en una aplicación VOIP para iPhone. Ahora cuando llega una llamada y el usuario contesta, quiero mostrar un botón de silenciamiento para que el usuario pueda silenciar la llamada o conferencia. Hice lo mismo a través de la API PJSIP.Cómo implementar la funcionalidad de silencio en una llamada PJSIP en iOS

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

El problema es que aunque este código funciona para llamadas individuales, no funciona para escenarios de conferencia.

Me pregunto si podría apagar el micrófono directamente: ¿podría implementarlo utilizando iOS sin pasar por la API PJSIP?

¿Esto es posible?

Respuesta

7

Puede desconectar por completo el micrófono de la conferencia utilizando pjsua_conf_disconnect y pjsua_conf_connect cuando desee activar el sonido.

Aquí hay un código de Objective-C que hace el truco:

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

Tenga en cuenta que la pjsipConfAudioID se recupera cuando se establece la llamada, de nuevo en 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; 
    ... 
} 

Esperanza ¡eso ayuda!

+0

gracias por la respuesta. En este momento, no estoy trabajando en esto, pero en el futuro tengo que trabajar en esto. Y estoy seguro de que tu respuesta me ayudará. Gracias – knowledgeseeker

Cuestiones relacionadas