Ho integrato pjsua2 nella mia applicazione Android. L'applicazione si arresta in modo anomalo quando invio un SMS. Non si blocca ogni volta, sta accadendo casualmente. (una volta ogni 10 messaggi).Chiamare pjlib da thread sconosciuto/esterno. È necessario "" registrare thread esterni con pj_thread_register()
mycode è:
public void sendInstantMessage(String number, String msgBody) {
String buddy_uri = "<sip:" + number + "@" + mPref.getString(PREF_SIPSERVER, "") + ">";
Log.e(TAG, "sendInstantMessage ==== "+buddy_uri);
BuddyConfig bCfg = new BuddyConfig();
bCfg.setUri(buddy_uri);
bCfg.setSubscribe(false);
MyBuddy im = new MyBuddy(bCfg);
SendInstantMessageParam prm = new SendInstantMessageParam();
prm.setContent(msgBody);
prm.setContentType("text/plain; charset=utf-8");
try {
im.create(account, bCfg);
boolean valid1 = im.isValid();
Log.e(TAG, "valid1 ======= "+valid1);
im.sendInstantMessage(prm);
} catch (Exception e) {
Log.e(TAG, "sendInstantMessage ==== "+e);
e.printStackTrace();
return;
}
}
Secondo logcat, devo chiamare pj_thread_register(). Ma ho avuto un metodo libRegisterThread() in finale, così ho usato come qui di seguito
MyApp.ep.libRegisterThread("SipApi");
Ecco il logcat:
../src/pj/os_core_unix.c:692: pj_thread_this: assertion "!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions."" failed
Ho dovuto spostare 'myBuddy.delete();' nella clausola 'finally' perché quando si è usciti dall'eccezione l'oggetto non è stato cancellato. –