2011-04-27 58 views
3

我正在嘗試在Android 2.3.3上使用JAIN-SIP(J-SIP)庫。 (http://jsip.java.net/) 因此我使用了SIP-Stack附帶的一個非常基本的SIP示例應用程序。 這個例子在Android設備上完美運行< = Android 2.2。Android 2.3使用外部JAIN-SIP(J-SIP)堆棧|類路徑

問題在於,Android 2.3.3帶來了一個SIP-Strack及其系統庫, 這是JAIN-SIP堆棧的稍微修改版本。 因此,在Android 2.3.3設備上,加載了內部SIP堆棧(因爲包名/庫名相同)而不是APK附帶的JAIN-SIP,並且應用程序因「功能未找到」異常而崩潰(歸因於在這個內部的Android 2.3.3 SIP-Stack中不存在某些函數的事實)。

我想知道的是,我如何「優先」我的APK附帶的JAIN-SIP堆棧,並忽略Android系統SIP堆棧。

一個解決方案是使用內部SIP-Stack directyl,因爲沒有人知道它是否未在下一個Android版本中進行進一步修改,所以強烈建議不要這樣做。

我想到的另一個解決方案是更改「我的」JAIN-SIP堆棧的包名稱,使其不與內部SIP堆棧混淆。

manifest.xml中的uses-library聲明不起作用,因爲它僅適用於內部SDK-libs/SDK-Addons。

還有什麼想法?

+0

能否請你幫我明白你是如何做到這一點,我怎麼能帶來同樣的東西放在我的Froyo棧? – Sen 2011-06-30 06:21:01

+0

我使用了Eclipse IDE的重構功能。 Just Refactor->重命名SIP-API和SIP-RI的基礎包。 之後,您必須在整個API和RI中搜索「gov.nist」。 有〜5個字符串,硬編碼的軟件包名稱是Eclipse未檢測到的。 最後,在* .core.PackageNames.java中修復常量並完成。 BTW:在Android 2.2或更低版本上,J-SIP(JAIN-SIP)API和RI即用即用。 – 2011-07-01 07:58:13

+0

我試圖下載J-SIP,但它導致我像一個svn頁面。我從哪裏可以獲得源代碼? – Sen 2011-07-01 09:52:30

回答

2

我應用了我提出的解決方案,並通過Eclipse重構函數重命名了JSIP堆棧的包,並獲得了JSIp堆棧在Android 2.3.3仿真器和設備上的工作。 樣本中和類「SipStackImpl.java」中都有包路徑字符串,應該手動將其重命名(查找/替換)到新的新包路徑。

我用JSIP堆棧中的shootist和shootme樣本測試了它。

它也在模擬器中的Android 2.2上運行。

如果有人能想出更好的解決方案,我會贊成它。

+1

對不起,現在已經準備就緒,請看http://www.telestax.com/jain-sip-stack-for-android/,它允許你在Android中集成最新的JAIN SIP而不會發生衝突。該帖子以聊天消息應用程序爲例 – jeand 2014-09-30 12:24:51

+1

感謝您長期跟蹤@jeand – 2014-10-01 07:53:43

4

我們正在考慮發運罐子,該罐子允許將JSIP堆棧嵌入到任何Android設備中,方法是使用後轉換工具重命名所有javax類,然後將jar與常規jsip罐一起發佈。 見https://groups.google.com/d/topic/mobicents-public/UD7ZTX74Yrk/discussion

+0

Thx jeand,好主意。 在我看來,這是谷歌應該把它包括在平臺上之前完成的東西:) 同樣適用於殘缺的BouncyCastle庫,其中包括... – 2012-12-20 10:04:18

+0

對不起,現在已經準備就緒,但現在已經準備就緒,請參閱我們的帖子在http://www.telestax.com/jain-sip-stack-for-android/,它允許你在Android中集成最新的JAIN SIP而不會發生衝突。這篇文章以聊天消息應用程序爲例 – jeand 2014-09-30 12:23:42