Я пытаюсь добавить PJSip к проекту, над которым я работаю. У меня есть этот метод для регистрации моей учетной записи, но ошибка «Fatal signal 11» возникает каждый раз.Регистрация учетной записи PJSip
Вот метод
public int setRegistration() {
int status = pjsuaConstants.PJ_FALSE;
/* Register to SIP server by creating SIP account. */
int[] accId = new int[1];
accId[0] = 1;
String uName = getUserName();
String passwd = getPassword();
String server = getSIPServer();
pjsua_acc_config acc_cfg = new pjsua_acc_config();
pjsua.acc_config_default(acc_cfg);
acc_cfg.setId(pjsua.pj_str_copy("sip:" + uName + "@" + server));
acc_cfg.setReg_uri(pjsua.pj_str_copy("sip:" + server));
acc_cfg.setCred_count(1);
acc_cfg.getCred_info().setRealm(pjsua.pj_str_copy(server));
acc_cfg.getCred_info().setScheme(pjsua.pj_str_copy("digest"));
acc_cfg.getCred_info().setUsername(pjsua.pj_str_copy(uName));
acc_cfg.getCred_info().setData_type(pjsip_cred_data_type.PJSIP_CRED_DATA_PLAIN_PASSWD.swigValue());
acc_cfg.getCred_info().setData(pjsua.pj_str_copy(passwd));
Log.d("status", "acc is adding..");
status = pjsua.acc_add(acc_cfg, pjsuaConstants.PJ_TRUE, accId);
Log.d("status", "acc is added");
if (status == pjsuaConstants.PJ_SUCCESS) {
status = pjsua.acc_set_online_status(accId[0], 1);
Log.d("acc_set_online_status returned stauts=", String.valueOf(status));
} else {
Log.d("Error status=", String.valueOf(status));
}
return status;
}
Я получаю ошибку на status = pjsua.acc_add(acc_cfg, pjsuaConstants.PJ_TRUE, accId);
линии. Я знаю, что имя пользователя, сервер и пароль не равны нулю. Я рассмотрел несколько вопросов, связанных с этим и не использую.
Как я могу зарегистрировать свой аккаунт?
Благодаря
***** ****** EDIT После отслеживания этого через блоги и форумы, я получил эту ошибку прошел, но получил другой. Причина возникновения этой ошибки состояла в том, что pjsua_init
никогда не был успешным. Он был успешным, потому что он дал мне эту ошибку
11-04 10:19:20.973: E/AndroidRuntime(2961): FATAL EXCEPTION: main
11-04 10:19:20.973: E/AndroidRuntime(2961): java.lang.UnsatisfiedLinkError: Native method not found: org.pjsip.pjsua.pjsuaJNI.init:(JLorg/pjsip/pjsua/pjsua_config;JLorg/pjsip/pjsua/pjsua_logging_config;JLorg/pjsip/pjsua/pjsua_media_config;)I
11-04 10:19:20.973: E/AndroidRuntime(2961): at org.pjsip.pjsua.pjsuaJNI.init(Native Method)
11-04 10:19:20.973: E/AndroidRuntime(2961): at org.pjsip.pjsua.pjsua.init(pjsua.java:812)
Я получил это предупреждение, а
No implementation found for native Lorg/pjsip/pjsua/pjsuaJNI;.init (JLorg/pjsip/pjsua/pjsua_config;JLorg/pjsip/pjsua/pjsua_logging_config;JLorg/pjsip/pjsua/pjsua_media_config;)I
Почему не это нативный метод? Я просматриваю библиотеки, которые я назвал, но кроме этого не знаю, почему это не работает.
Любая помощь по этому вопросу была бы замечательной. Благодаря
PJ Код
pjsua.java
public synchronized static int init(pjsua_config ua_cfg, pjsua_logging_config log_cfg, pjsua_media_config media_cfg) {
return pjsuaJNI.init(pjsua_config.getCPtr(ua_cfg), ua_cfg, pjsua_logging_config.getCPtr(log_cfg), log_cfg, pjsua_media_config.getCPtr(media_cfg), media_cfg);
}
pjsuaJNI.java
public final static native int init(long jarg1, pjsua_config jarg1_, long jarg2, pjsua_logging_config jarg2_, long jarg3, pjsua_media_config jarg3_);
pjsua_wrap.cpp
SWIGEXPORT jint JNICALL Java_org_pjsip_pjsua_pjsuaJNI_init(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_, jlong jarg3, jobject jarg3_) {
jint jresult = 0 ;
pjsua_config *arg1 = (pjsua_config *) 0 ;
pjsua_logging_config *arg2 = (pjsua_logging_config *) 0 ;
pjsua_media_config *arg3 = (pjsua_media_config *) 0 ;
pj_status_t result;
(void)jenv;
(void)jcls;
(void)jarg1_;
(void)jarg2_;
(void)jarg3_;
arg1 = *(pjsua_config **)&jarg1;
arg2 = *(pjsua_logging_config **)&jarg2;
arg3 = *(pjsua_media_config **)&jarg3;
result = (pj_status_t)pjsua_init((pjsua_config const *)arg1,(pjsua_logging_config const *)arg2,(pjsua_media_config const *)arg3);
jresult = (jint)result;
return jresult;
}
{"init", "(JLorg/pjsip/pjsua/pjsua_config;JLorg/pjsip/pjsua/pjsua_logging_config;JLorg/pjsip/pjsua/pjsua_media_config;)I", (void*)& Java_org_pjsip_pjsua_pjsuaJNI_init},
EDIT 2
Итак, после работы над этим я дошел до разочарования. Я не вижу, что я делаю неправильно, поэтому я поставлю весь свой процесс здесь, чтобы узнать, есть ли у кого-то предложение.
- Я начинаю получать библиотеку pjsip:
svn co http://svn.pjsip.org/repos/pjproject/trunk pjproject
- запустить `./configure prefix =/USR/местные
- делают отд & сделать
Sudo сделать установку
Затем я получаю код pjjni
svn checkout svn://svn.code.sf.net/p/pjsip-jni/code/ pjsip-jni-code
- Я следую инструкциям Makefile
- После того, как Makefile успешно работает (после некоторой очистки кода) У меня есть 2 .so-файла (libpjsua_jni.so и libpjsua_jni_x64.so)
- Создайте jni-папку с файлом Android.mk и.поэтому библиотеки
- Run NDK-сборка (How to load another .so file in your android project?)
- Добавить в ADT
- Закрыть проект. Измените собственную поддержку с Java на Android. Открытый проект (Convert existing project into Android project in Eclipse?)
- Добавим, что проект моего TestPJ проекта (
Android -> Library -> Add
) - Вызов
System.loadLibrary("pjsualib")
- имя нового lib.so ошибок приема
11-22 13:55: 44.784: W/dalvikvm (11464): Не найдено реализации для родного Lorg/pjsip/pjsua/pjsuaJNI; .swig_module_init :() V 11-22 13: 55: 48.792: W/dalvikvm (11464): Исключение Ljava/lang/UnsatisfiedLinkError; бросается при инициализации Lorg/pjsip/pjsua/pjsuaJNI; 11-22 13: 55: 51.417: E/AndroidRuntime (11464): java.lang.UnsatisfiedLinkError: родной метод не найден: org.pjsip.pjsua.pjsuaJNI.swig_module_init :() V 11-22 13: 55: 51.417 : E/AndroidRuntime (11464): at org.pjsip.pjsua.pjsuaJNI.swig_module_init (собственный метод) 11-22 13: 55: 51.417: E/AndroidRuntime (11464): at org.pjsip.pjsua.pjsuaJNI. (PjsuaJNI .java: 1450)
Любая помощь будет замечательной. Благодаря!
где ваш SIPServer, постоянный или переменный, установлен? какова ценность. где задано имя пользователя и каково текущее значение? – alinoz
Они установлены в методе saveUserInfo. Это вызвано, и значения заполняются. Я не вижу необходимости указывать информацию о моем сервере и имени пользователя – BigT
, вам не нужно давать мне информацию, но вы должны убедиться, что они не являются нулевыми, когда вы достигаете этого линий. из ошибок, которые я вижу, возможно, что эти 2 переменные равны нулю. вы можете попытаться установить там точку останова и посмотреть, какие значения хранятся в переменных SIPServer и userName. – alinoz