[應用] SIP Voip 在 Android 系統的開發
大約二十年前,VoIP 網路電話技術如火如荼地發展,隨著 Ethernet 網路越來越成熟,網路品質也越來越穩定,辦公室的桌上話機逐漸被網路電話所取代,當時的思科 (Cisco) 就是網路界的霸主。當時我們開發網路話機是以 embedded system 為架構 的設計,如圖四所示,搭配 CTI 伺服器組成一套辦公室的電話系統解決方案。 近年來,隨著智慧型手機逐漸普及化,無線網路 (WiFi) 和行動數據的頻寬與通訊品質大幅提升,出現了許多軟體電話 (Soft Phone) 的 APP 。其實,這些軟體電話也是網路電話的一種,從過去的桌上型網路電話,進化成行動型網路電話。軟體電話也存在很久了,過去主要安裝在 PC 上,但因為使用者操作起來並不像網路話機的方便,早些年這種安裝在 PC 上的軟體電話多半不流行。拜智慧型手機的快速發展之賜,軟體電話找到發展的空間,像 LINE 、微信...等社群軟體都內建網路或視訊電話。本文最後有桌上型的網路電路與手機上的軟體網路電話之影片操作。 最近我開始研究 Android 系統與程式開發,並且打算把過去在 embedded system 的網路電話代碼移植到手機系統上。過去開發網路電話的程式代碼都是以 C/C++ 語言為主,然而 Android APP 卻多以 Java 語法為主,在本人的 「 Android NDK 開發的初體驗 」一文中,我找到如何將 C/C++ 程式碼移植到 Android 系統的方法。一般 Android 開發以 Java 為主,只需安裝 JDK 編譯環境,但為了整合 C/C++ 的代碼,我們 也 必須安裝 NDK 的編譯環境。下圖一所示是 JDK 與 NDK 在系統開發的架構圖,Java 與 C/C++ 之間存在一個溝通的介面,稱為 JNI (Java Native Interface)。 為何使用 NDK?在 [1] 有段文章提到,「如果應用領域是系統底層的硬件管理,圖像處理或者遊戲開發,這些更加注重實時性和程序效率的應用,將會考慮使用 Native 編程 」。...