- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将 PJSip 添加到我正在处理的项目中。我有这种方法来注册我的帐户,但每次都会出现“致命信号 11”错误。
这是方法
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);
行收到错误。我知道用户名、服务器和密码不为空。我已经查看了多个与此相关的问题,但没有用。
如何注册我的帐户?
谢谢
*****编辑******通过博客和论坛追踪后,我通过了这个错误,但又收到了另一个错误。发生此错误的原因是 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},
编辑 2
因此,在完成此工作后,我感到很沮丧。我没有看到我做错了什么,所以我会把我的整个过程放在这里看看是否有人有建议。
svn co http://svn.pjsip.org/repos/pjproject/trunk pjproject
sudo 进行安装
然后我得到 pjjni 代码 svn checkout svn://svn.code.sf.net/p/pjsip-jni/code/pjsip-jni-code
Android -> Library -> Add
)System.loadLibrary("pjsualib")
-- 新库的名称.so接收错误
11-22 13:55:44.784: W/dalvikvm(11464): 未找到原生 Lorg/pjsip/pjsua/pjsuaJNI 的实现;.swig_module_init:()V11-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: 找不到 native 方法: org.pjsip.pjsua.pjsuaJNI.swig_module_init:()V11-22 13:55:51.417:E/AndroidRuntime(11464):在 org.pjsip.pjsua.pjsuaJNI.swig_module_init( native 方法)11-22 13:55:51.417: E/AndroidRuntime(11464): 在 org.pjsip.pjsua.pjsuaJNI.(pjsuaJNI.java:1450)
任何帮助都会很棒。谢谢!
最佳答案
可以找到探索来自 Java 和 C 的 JNI 调用的项目示例 here .
问题中提到的错误(java.lang.UnsatisfiedLinkError: Native method not found: org.pjsip.pjsua.pjsuaJNI)是指以下问题之一:
- 错误的 native 方法名称或/及其参数/返回值。如果您有权访问库的 native 代码,则可以修复它。根据错误消息和 JNI 考虑, native 方法必须具有名称 Java_org_pjsip_pjsua_pjsuaJNI_init(JNIEnv *env, jobject obj, ..),其中 env 是指向 JVM 接口(interface)的指针,obj 是“this”指针,其余参数可以从包 org.pjsip.pjsua 的 pjsuaJNI 类的 java init 方法。简单参数类型必须是 jint、jstring 等。返回值也必须正确。修复所有这些允许使用 pjsuaJNI 类中的此方法。更多详细信息可以从 Oracle 文档中找到 Oracle Documentation to Java 6 JNI (如果您使用的是 Android 4.4,则为 Java 7)。
- 错误的 java 方法名/签名/类名或包名。这种情况几乎与第一种情况相反。同样,根据提到的错误名称,方法必须是“init”,类名 pjsuaJNI 和包 org.pjsip.pjsua。如果其中至少一个是错误的,则会发生上述异常。签名或参数也必须正确。在这个错误的边界上,它可以被认为是方法的参数(另外在原生 JNIEnv* 和 jobject 中出现)。因此也必须在必要时进行检查和修复。
在从 native 代码调用 java 签名的情况下,可以将其视为参数为字符串的 java 方法的表示,并且可以使用应用于 java *.class 文件的 javap -s *.class 命令查看。在问题的最后一个警告中可以看到该方法的签名。
同样要使用方法 pjsip 库必须加载 System.loadLibrary()在 Java 类的一些静态部分。
不幸的是,这个问题发生在运行时(如果它发生在编译期间就好了)。
关于android - PJSip 账号注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305777/
我无法理解 hl7 中关键概念之间的差异。 有人可以解释一下以下内容的差异吗: 什么是访问?访问次数通常位于哪里?什么是遭遇数?遭遇号码通常位于哪里?hl7中的遭遇等级和访问等级有什么区别?帐号是多少
Steam平台限时半价购买《绝地求生》账号 进入活动先登陆 然后加入购物车下单就行了 经常洗我绝地求生的可以去买一个 挺划算的 活动地址:http://t.cn/RBgS3tN 手机扫码
我正在开发一个可以调用互联网电话的 Android 应用程序。我让一切正常,从 SIP 服务器注册和调用电话,更新实时状态等。但是我用于应用程序的 SIP 帐户已在代码中设置。这不是我想要的。 在an
Substrate Collectables Workshop在某些时候建议开发者链为 Alice 提供预注资金的帐户。 Let's go into the Transfer app, and mak
我正在尝试向我的应用程序添加登录系统,使用 meteor accounts-facebook 效果很好,但我不知道为什么使用 accounts-password 似乎不起作用。这是出现的消息。 **C
废话不多说了,直接给大家贴实现此功能的正则表达式代码了,具体代码如下所示: ?
我是一名优秀的程序员,十分优秀!