1

voip 呼び出し用の Android アプリケーションに PJSUA2 を実装しています。アプリの要件に基づいて、通話を開始して 1 秒以内に切断し、もう一度通話を接続するなど、高速通話を試みることがあります。この間、何度か連続して通話と切断を行った後 (約 5 ~ 10 秒)、アプリがクラッシュします。java.lang.Exception: who's call?という例外が発生します。

同じシナリオ (連続通話) でトランスポートがサポートされていないという例外を与えるために使用されるため、VoIP 通話とコメント付きの TCP および TSL チャネルにのみ UDP を使用しています。トランスポートのセットアップを以下に投稿します。ご覧ください:

            /* Create transports. */
        try {

            ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_UDP,
                       sipTpConfig);
        } catch (Exception e) {
            System.out.println(e);
            Log.d("excmicbutton","1st"+e.getMessage());
        }

//      try {
//          ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TCP,
//                     sipTpConfig);
//      } catch (Exception e) {
//          System.out.println(e);
//          Log.d("excmicbutton","2nd"+e.getMessage());
//      }
//
//      try {
//          sipTpConfig.setPort(SIP_PORT +1);
//          ep.transportCreate(pjsip_transport_type_e.PJSIP_TRANSPORT_TLS,
//                     sipTpConfig);
//      } catch (Exception e) {
//          System.out.println(e);
//          Log.d("excmicbutton","3rd"+e.getMessage());
//      }

            /* Set SIP port back to default for JSON saved config */
            sipTpConfig.setPort(SIP_PORT);

        /* Create accounts. */
        for (int i = 0; i < accCfgs.size(); i++) {
            MyAccountConfig my_cfg = accCfgs.get(i);

            /* Customize account config */
            my_cfg.accCfg.getNatConfig().setIceEnabled(true);
            my_cfg.accCfg.getVideoConfig().setAutoTransmitOutgoing(true);
            my_cfg.accCfg.getVideoConfig().setAutoShowIncoming(true);

            MyAccount acc = addAcc(my_cfg.accCfg);
            if (acc == null)
            continue;
4

0 に答える 0