2012-06-22 3 views
5

Je voulais mettre en œuvre le bouton Muet dans mon appel. Je travaille sur une application VOIP pour iPhone. Maintenant, quand un appel arrive et que l'utilisateur décroche, je veux afficher un bouton Muet pour que l'utilisateur puisse mettre l'appel ou la conférence en sourdine. J'ai fait de même avec l'API PJSIP.Comment implémenter la fonctionnalité mute dans un appel PJSIP sur 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); 
} 

Le problème est que, bien que ce code fonctionne pour un appel à un, il ne fonctionne pas pour les scénarios de conférence.

Je me demande si je pourrais éteindre le micro directement: pourrais-je l'implémenter en utilisant iOS en contournant l'API PJSIP?

Est-ce possible?

Répondre

7

Vous pouvez complètement déconnecter le microphone de la conférence en utilisant pjsua_conf_disconnect et pjsua_conf_connect lorsque vous souhaitez le désactiver.

est ici un code Objective-C qui fait l'affaire:

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

Notez que le pjsipConfAudioID a été récupéré lorsque l'appel a été établi, à nouveau 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; 
    ... 
} 

Espoir qui aide!

+0

merci pour la réponse. À l'heure actuelle, je ne travaille pas sur ce sujet, mais à l'avenir, je dois y travailler. Et je suis sûr que votre réponse m'aidera. Merci – knowledgeseeker

Questions connexes