天天看點

imsdroid 學習(初認識)

  由于工作的需要,麥洛最近都在研究語音通話的技術。工作中,一個同僚無意發現了開源項目idoubs。idoubs是imsdroid的IOS版本。

  從google以及baidu來看,除了官網

http://code.google.com/p/imsdroid/

介紹外,有關imsdroid或idoubs貌似的文章并不是很多。但從官網的介紹可以知道這個項目确實非常強大。于是趕緊check下來學習。注意check out時要使用http://imsdroid.googlecode.com/svn/這個位址,不要使用trunk目錄,作者已經将項目放在了svn這個目錄下了。

  check下來的源碼結構:

  

imsdroid 學習(初認識)

  imsdroid或idoubs項目是基于doubango,關于這個項目可以到它的官網

http://doubango.org/

上看看介紹。

  麥洛與iphone的同僚試用了一下這個安裝包,看一下通話效果。不知道是不是網絡原因還是伺服器原因,語音通話是可以的,很清晰,有一點回音,但視訊卻是很難連接配接成功,或者傳播的圖像隻有一台手機看得到,而另一台則看不到。從源碼上看,它還支援高清(1080p),以及多種編碼格式。而麥洛感興趣的正是它豐富的編碼格式以及網絡傳輸的實作技術。

  由于介紹imsdroid使用的資料實在是少之又少。學習它的原理,隻能從看代碼開始。

  從編譯項目開始。使用2.0目錄下的imsdroid,在eclipse中建立一個android項目,可以命名為imsdroid2.0,将branches下的imsdroid下的res,src下的(不包含src)目錄以及manifest檔案都copy到建立的imsdroid2.0項目中來。這時候編譯imsdroid2.0是會出錯的。因為有很多類找不到。原因是由于imsdroid項目基于android-ngn-stack這個庫的,作者将其放在了branches下的android-ngn-stack,這個主要是封裝了底層的實作,使用jni來調用c庫。

  是以使用同樣的方法,在eclipse中使用将android-ngn-stack這個庫建立為android項目,并把它作為一個庫。

  方法是:右擊android-ngn-stack 選擇 properties 在彈出的視窗中把 is library 勾選上,如:

imsdroid 學習(初認識)

  然後就在imsdroid2.0中引用這個庫就行了,引用的方法也是一樣的,隻是在打開的properties視窗中點選add...按鈕,将android-ngn-stack添加進來就行了。這時候,imsdroid2.0就可以編譯成功了。

  編譯成功後就可以在手機安裝試用了麼?no!

  這裡還有一個問題,就是android-ngn-stack是封裝了jni,但真正的實作是c庫,是以必須有一個libxxx.so檔案才行。那這個檔案在哪裡呢?答案看下圖:

imsdroid 學習(初認識)

  将native-debug/libs目錄copy到我們的imsdroid2.0項目中來,就可以了。

  最後,對于doubango這個開源項目

http://code.google.com/p/doubango/

 同樣的,要check out 這個項目, 隻要

http://doubango.googlecode.com/svn/

 就行了,trunk目錄下是空的。

  麥洛也是剛開始學習這個開源項目,如果出現問題也是很正常的。可以給麥洛留言,大家一起學習。

  本文是原創博文,如果轉載請注明來源,謝謝!

繼續閱讀