アプリケーションで pjsip を使用しています。登録時にタイムアウトを60秒に設定しました。60 秒ごとにアカウントが再登録されますが、私の場合は再登録されません。誰かが理由を知っている場合は教えてください (私は pjsip account add メソッドを呼び出すために必要なフィールドを設定しました。何か見落としがある場合は教えてください)。
setRegistration(String sipUser, String password,String sipServer) {
int status = pjsuaConstants.PJ_FALSE;
/* Register to SIP server by creating SIP account. */
{
int[] accId = new int[1];
accId[0] = 1;
pjsua_acc_config cfg = new pjsua_acc_config();
pjsua.acc_config_default(cfg);
csipsimple_acc_config css_cfg = new csipsimple_acc_config();
pjsua.csipsimple_acc_config_default(css_cfg);
cfg.setPriority(100);
cfg.setId(pjsua.pj_str_copy("sip:" + sipUser + "@" + sipServer));
cfg.setReg_uri(pjsua.pj_str_copy("sip:" + sipServer
+ ";transport=udp;lr"));
cfg.setReg_timeout(60);
cfg.setCred_count(1);
cfg.setPublish_enabled(0);
cfg.setReg_delay_before_refresh(-1);
cfg.setUse_timer(pjsua_sip_timer_use.PJSUA_SIP_TIMER_OPTIONAL);
pjsip_cred_info cred_info = cfg.getCred_info();
cred_info.setRealm(pjsua.pj_str_copy(sipServer));
cred_info.setScheme(pjsua.pj_str_copy("Digest"));
cred_info.setUsername(pjsua.pj_str_copy(sipUser));
cred_info
.setData_type(pjsip_cred_data_type.PJSIP_CRED_DATA_PLAIN_PASSWD
.swigValue());
cred_info.setData(pjsua.pj_str_copy(password));
cfg.setKa_interval(0);
pjsua.csipsimple_set_acc_user_data(cfg, css_cfg);
Log.i("status", "acc is adding....");
status = pjsua.acc_add(cfg, pjsuaConstants.PJ_FALSE, accId);
Log.i("status", "acc is added");
if (status == pjsuaConstants.PJ_SUCCESS) {
status = pjsua.acc_set_online_status(accId[0], 1);
Log.i("Setting online status to online", "---online--" + status);
} else {
Log.i("Not success", "---un success--" + status);
}
}
return status == pjsuaConstants.PJ_SUCCESS;
}
ログ
05-03 12:17:58.820: I/libpjsip(1003): 12:17:58.826 pjsua_acc.c
登録成功、ステータス = 200 (OK)、60 秒後に再登録されます
05-03 12:17:58.820: D/libpjsip(1003): 12:17:58.827 pjsua_acc.c ....Keep-alive timer started for acc 1, destination:4.53.123.201:5060, interval:40s