2012-06-22 7 views
5

Volevo implementare il pulsante Mute nella mia chiamata. Sto lavorando a un'applicazione VOIP per iPhone. Ora quando arriva una chiamata e l'utente risponde, voglio visualizzare un pulsante Muto in modo che l'utente possa disattivare la chiamata o la conferenza. Ho fatto lo stesso tramite l'API PJSIP.Come implementare la funzionalità mute in una chiamata PJSIP su 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); 
} 

Il problema è che mentre questo codice funziona per la chiamata uno a uno, non funziona per gli scenari di conferenza.

Mi chiedo se potrei spegnere direttamente il microfono: potrei implementare lo stesso utilizzando iOS bypassando l'API PJSIP?

È possibile?

risposta

7

È possibile scollegare completamente il microfono dalla conferenza utilizzando pjsua_conf_disconnect e pjsua_conf_connect quando si desidera riattivare l'audio.

Ecco po 'di codice Objective-C che fa il trucco:

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

Si noti che la pjsipConfAudioID è stato recuperato quando è stata stabilita la chiamata, ancora una volta in 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; 
    ... 
} 

Speranza questo aiuta!

+0

grazie per la risposta. In questo momento, non ci sto lavorando, ma in futuro dovrò lavorare su questo. E sono sicuro che la tua risposta mi aiuterà. Grazie – knowledgeseeker