2016-06-20 5 views
1

Я занимаюсь разработкой VoIP-приложения в Android с помощью PJSUA, здесь я хочу, чтобы отключить вызов,Как отключить PJSUA вызова андроида

Я читала документ, связанные с PJSUA и я нахожу метод, используемый для этой цели, но не смог реализовать в Android App, пожалуйста, кто может мне помочь установить заехать в режиме отключения звука

Здесь я обеспечиваю детали из PJSUA документы,

 pj_status_t pjsua_conf_adjust_rx_level (pjsua_conf_port_id slot, 
    float level) 

Регулировка уровня сигнала, которые будут получены от указанного порта (в мост), делая его громче или тише.

Параметры

  • слот: На конференции моста номер слота.
  • уровень: регулировка уровня сигнала. Значение 1.0 означает отсутствие регулировки уровня, а значение 0 означает выключение порта.

Возвращает

  • PJ_SUCCESS на успех, или соответствующий код ошибки.

Я хочу решение все равно, что удержание вызова в Android с помощью PJSUA

public void holdCall() { 
    CallOpParam prm = new CallOpParam(true); 
    try { 
     currentCall.setHold(prm); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Благодаря

ответ

1

надеюсь, у вас все хорошо. поскольку я также новичок в PJSUA в андроиде. Я прочитал гораздо больше документации для отключения вызова. но я нашел один из возможных вариантов, лучшее решение для него, который прекрасно работает в моем окружении, они приведены ниже

public void setMute(boolean mute) { 
    // return immediately if we are not changing the current state 
    CallInfo info; 
    try { 
     info = getCurrentCall().getInfo(); 
    } catch (Exception exc) { 
     return; 
    } 

    for (int i = 0; i < info.getMedia().size(); i++) { 
     Media media = getCurrentCall().getMedia(i); 
     CallMediaInfo mediaInfo = info.getMedia().get(i); 

     if (mediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_AUDIO 
       && media != null 
       && mediaInfo.getStatus() == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE) { 
      AudioMedia audioMedia = AudioMedia.typecastFromMedia(media); 

      // connect or disconnect the captured audio 
      try { 
       AudDevManager mgr = MyApp.ep.audDevManager(); 

       if (mute) { 
        mgr.getCaptureDevMedia().stopTransmit(audioMedia); 
       } else { 
        mgr.getCaptureDevMedia().startTransmit(audioMedia); 
       } 

      } catch (Exception exc) { 
      } 
     } 
    } 
} 

и для поддержки pjsip один из нас хороший человек сделал блестящую работу here. поэтому вы можете видеть код.

наслаждаться временем кода :)

+0

У вас также есть такой же ответ, но любой, как можно упомянуть ссылку для поддержки pjsip – Munir

1

меня найти решение для отключения звука и UNMUTE вызова с помощью PJSUA , чтобы узнать о том, о функции pjsua перейдите по этой ссылке enter link description here

CallInfo info; 
    try { 
     info = currentCall.getInfo(); 
    } catch (Exception e) { 
     Log.e("Exception caught while getting call info.", e.toString()); 
     return; 
    } 

    for (int i = 0; i < info.getMedia().size(); i++) { 
     Media media = currentCall.getMedia(i); 
     CallMediaInfo mediaInfo = info.getMedia().get(i); 
     if (mediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_AUDIO && media != null 
       && mediaInfo.getStatus() == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE) { 
      AudioMedia audioMedia = AudioMedia.typecastFromMedia(media); 
      try { 
       AudDevManager mgr = MyApp.ep.audDevManager(); 
       if (isMute) { 
        mgr.getCaptureDevMedia().stopTransmit(audioMedia); 
       } else { 
        mgr.getCaptureDevMedia().startTransmit(audioMedia); 
       } 
      } catch (Exception e) { 
       Log.e("Exception caught while connecting audio media to sound device.", e.toString()); 
      } 
     } 
1

Я также разрабатываю приложение pjsua. Я настраиваю mute на уровень ОС, и он работает хорошо.

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE); 
audioManager.setMicrophoneMute(true); 

Btw, поворачиваясь динамик - точно так же:

audioManager.setSpeakerphoneOn(true); 

Даже я рекомендую включить громкоговоритель выключить и отключенные немой перед каждым вызовом, так как некоторые другие приложения дозвона не выключать их после окончания вызова.