2012-06-22 21 views
5

Tôi muốn triển khai nút Tắt tiếng trong cuộc gọi của mình. Tôi đang làm việc trên một ứng dụng VOIP cho iPhone. Bây giờ khi một cuộc gọi đến và người dùng chọn lên, tôi muốn hiển thị một nút Tắt tiếng để người dùng có thể tắt tiếng cuộc gọi hoặc hội nghị. Tôi đã làm như vậy thông qua API PJSIP.Cách triển khai chức năng tắt tiếng trong cuộc gọi PJSIP trên 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); 
} 

Vấn đề là trong khi mã này đang hoạt động cho một cuộc gọi, nó không hoạt động cho các trường hợp hội nghị.

Tôi tự hỏi liệu tôi có thể tắt micrô trực tiếp không: tôi có thể triển khai giống như vậy bằng cách sử dụng iOS bỏ qua API PJSIP không?

Điều này có khả thi không?

Trả lời

7

Bạn hoàn toàn có thể ngắt kết nối micrô khỏi hội nghị bằng pjsua_conf_disconnect và pjsua_conf_connect khi bạn muốn bật tiếng.

Dưới đây là một số mã Objective-C mà không lừa:

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

Lưu ý rằng pjsipConfAudioID được lấy ra khi cuộc gọi được thành lập, một lần nữa trong 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; 
    ... 
} 

Hope những sự giúp đỡ đó!

+0

cảm ơn câu trả lời. Ngay bây giờ, tôi không làm việc này, nhưng trong tương lai tôi phải làm việc này. Và tôi chắc chắn câu trả lời của bạn sẽ giúp tôi. cảm ơn – knowledgeseeker