Android GNSS Measurements API

之前介紹過 Google 在 Android 7 (Nougat) 中推出 GNSS measurements API ,由於這個功能受限於硬體韌體設計,暫時只有某些晶片才能支援,包含了 Exynos、Qualcomm、Broadcom BCM4774、Intel WCS2x00 等。預計今年之後會出現越來越多支持 GNSS Measurements API 的手機。

開發者網站提供一個參考列表,包含市面上幾個旗艦手機的對於 Pseudo-range and pseudo-range rate、Navigation messages、Accumulated delta range or carrier、Hardware (HW) clock 等支援現況,也提供了範例程式給開發者參考。

歐洲的全球衛星定位系統 Galileo ,也辦了兩次黑客松,參與者 Lukasz Kosma Bonenberg 博士分享一些應用發想,像是 Differential GNSS/RTK、窮人的衛星訊號干擾偵測、窮人的地震感應器、或是用 GNSS Shadowing 改善都市叢林的定位。他也將相關的程式碼發布到 github 上。

依照最近的實驗研究,智慧手機的天線與接受器設計明顯比不上專業的量測儀器,即使有良好的衛星訊號,量測結果仍有一個數量級的差距。但是與過往只有五公尺到十公尺的精確度,已經可以作到公尺等級的精確度。如果硬體設計上可以解決 duty cycling 的侷限,便有機會透過手機做出精度到公分級的低成本 RTK 測量儀器,適合一些不介意耗電速度的使用場景。

L5, Safety of Life 訊號

另外一個值得一提的是,由於近幾年 GPS、Galiao、QZSS 等支援 L5/E5 10Mhz 訊號的衛星總數到達了三十顆,相較於 L1 1Mhz 的定位訊號,10Mhz 在都市叢林中造成的多重路徑傳播影響較小。GPS L5 訊號是一個刻意保留的頻道,更不容易受到干擾。結合 L1,L2 雙頻定位可以作到更高的定位精度。

IIlustration: Broadcom

 

L5 從 Block IIF satellites 之後的新型衛星開始送訊號,第一台是 2009 上線的USA-203。之前支援 L5 的衛星數量不夠多,其覆蓋率未到大眾可用的商業規模。早些時候只有一些專業的量測工具提供 L5 訊號支援,但是 Broadcom 率先針對智慧型手機推出支援 L5 訊號 BCM47755 晶片,受惠於足夠的衛星訊號,可以大幅改善智慧手機的定位精度。預期其他的競爭對手的產品應該可以逐步趕上,希望在 2018 年看到更多支援此功能的的手機硬體產品。

Google’s I/O 2016 宣佈將支援 Raw GNSS measurements APIs[1],Java API[2] 在 android-7.0.0_r1 中已發布。其實 HAL[3] 很早就實踐了相關功能,只是一直沒有回傳到上層應用程式。目前這些 API 已經可以在運行 Android 7 的 Nexus 手機[4]上使用。

透過 GnssMeasurement[2] 可以得到相當多原始資料,包含 multipath indicating、RF carrier phase、carrier-to-noise density、pseudorange、pseudorange rate、accumulated delta range 等等資料。也因此有機會利用外部資料配合 RTK 工具[6][7],以智慧手機來做高精確度定位 (Precise Point Positioning, PPP) [5]。

不過根據 Simon Banville 在 Samsung Galaxy S7 的測試,目前的問題是手機必須在大約 12.5 分的 Cold Start 期間,才能收集 continuous carrier-phase tracking。經過冷啟動後,就會進入 duty cycling 模式,也就是 200ms 收集資料、800ms 省電休眠,如此就會錯過相關原始資料。目前還沒有 API 可以關閉 duty cycling 模式。

[1] Raw GNSS measurements in Android | Rex’s blah blah blah – http://blog.nutsfactory.net/2016/06/09/raw-gnss-measurements-in-android/
[2] GnssMeasurement | Android Developers – https://developer.android.com/reference/android/location/GnssMeasurement.html
[3] Implementation of GNSS Measurements support. – https://android.googlesource.com/platform/hardware/qcom/gps/+/af0c0cc82699ddd8d50bf8a2fa60c4bc923a4ebe
[4] Miquel Garcia – First look at Android N GNSS raw measurements – ROKUBUN – http://rokubun.cat/2016/06/30/android-n-preview-gnss-measurements/
[5] Simon Banville – PPP with Smartphones: Are We There Yet? – BlackDot GNSS – http://www.blackdotgnss.com/2016/09/20/ppp-with-smartphones-are-we-there-yet/
[6] GNSS-Lab Tool (gLAB) | gAGE : Research Group of Astronomy and Geomatics – http://gage.upc.es/gLAB
[7] RTKLIB: An Open Source Program Package for GNSS Positioning – http://www.rtklib.com/

Google’s I/O 2016 的演講[1]提到會支援 Raw GNSS measurements,開放開發者取得 pseudoranges, dopplers and carrier phase 等資料。

過去,這些資料是在 GPS basdband processing 就已經計算處理好,對於一般軟體開發者而言通常直接使用 LocationManager 取得最終的定位資料,而非衛星訊號數值等資料。

對於需要做 GPS 效能調校的硬體、韌體工程師,通常透過 Android HAL API 測試 GPS 訊號。在 Android 中最低階的協議是透過 NMEA sentence 協議取得衛星訊號數值,但是這其實還不夠低階到包含如 pseudoranges 等資料[5][6]。這些 raw data 資料只來自使用該晶片商獨家的 binary protocol,而沒有標準的 API 可用。

Google I/O 的講者 Steve Malkos 的演講 (37分30秒)[7] 其實只提到會拿到原始 GNSS 測量資料。但是他還沒有分享具體的設計會長什麼樣子,另外最大的改變是 GPS, Wi-Fi, Cell 等 Connectivity API 會被從較高階 API 移到底層的 Sensor Hub (low power domain),這樣可以更省電且有效的計算位址資料。

查了一下 android-n-preview-3 的 codebase,目前 libhardware 的 HAL Interface[2][3] 還沒有改變,上層的 Location API[4] 也還沒有跟著新的設計異動。

繼續期待。

[1]: http://gpsworld.com/google-opens-up-gnss-pseudoranges/ “Google opens up GNSS pseudoranges : GPS World”
[2]: https://android.googlesource.com/platform/hardware/libhardware/+/android-n-preview-3/include/hardware/gps.h “include/hardware/gps.h – platform/hardware/libhardware – Git at Google”
[3]: https://android.googlesource.com/platform/hardware/libhardware/+/android-n-preview-3/include/hardware/sensors.h “include/hardware/sensors.h – platform/hardware/libhardware – Git at Google”
[4]: https://developer.android.com/reference/android/location/GpsSatellite.html
[5]: https://en.wikipedia.org/wiki/Pseudorange
[6]: https://en.wikipedia.org/wiki/Doppler_effect “Doppler effect – Wikipedia, the free encyclopedia”
[7]: https://www.youtube.com/watch?time_continue=2251&v=OEvycEMoLUg “Making Android sensors and location work for you – Google I/O 2016 – YouTube”

大約是 2008 年的時候,為了 OpenStreetMap 活動,跟著 KaLUG 團購,一起買了 HOLUX M-241,當時大部分行動裝置並沒有內建 GPS,只有某些高單價的 PDA 有全球定位系統功能。相對 M-241 在當時的市場性價比很高,使用 MTK 技術,很驚訝居然到目前為止仍持續銷售

實際使用上經歷一些技術問題

  1. 使用的 MTK 協定有相容問題,當初使用 mtkbabel 無法匯出,必須給點小 patch. 但是已經比其他的 logger 來的容易使用。
  2. 紀錄的軌跡有嚴重的漂移問題,增加了一些後製處理的困擾。
  3. 電池插槽容易鬆脫重置,造成裝置一直關機或重開,非常惱人。

後來又陸續買了 Garmin Dakota 20, Nokion AW100, 智慧型手機 iOS, Android 等等包含 GPS 功能的裝置來紀錄軌跡。
這篇文章分享一些個人對於衛星定位系統的理解,希望可以幫助其他朋友採購的作為參考依據。

評估要件

這幾年的 GPS 裝置的入手價格越來越低,參與 OpenSteetMap 的門檻也越來越低。有些朋友想購買新的 GPS 裝置,來紀錄踏查軌跡,到底購買的時候要考量哪些產品條件?

以下是我認為構成一個好產品的評估要件

  • 準確性 (Accuracy)
  • 用電量 (Power consumertion)
  • 操作界面 (User interface design)
  • 防水性 (Water proof)
  • 耐用性 (Durability)

這些條件取決於產品定位與設計。當然,準確性是最主要的評估要件,而硬體本身就是最大的侷限,從技術面來分析,大約可以分成下面幾項

  • 接收晶片 (Receiver chip)
  • 無線接收 (RF design)
  • 軟體/韌體設計 (Firmware)
  • 輔助儀器 (Sensors)

以下逐一討論。

接收晶片 (receiver chip)

從過去 GPS Receiver Chip 通常是一棵獨立的元件,到現在行動裝置流行的市場,衛星定位系統已經逐漸變成整合進 SoC 的基本功能。衛星定位系統 (Satellite navigation) 遠在約 20,000km 以外的衛星軌道,定位訊號廣播穿送到地表後,強度約在 -125dBm to -130dBm.

在接收到衛星傳送的導航資訊之後,接收器會得到以下的資訊

  • 衛星星曆 (Almanac) ,可用以計算所有的衛星大略位置,至少六天更新一次。
  • 星曆表 (Ephemeris), 計算衛星位置,通常每兩小時更新一次。
  • 時間與時鐘誤差資訊。
  • 衛星健康狀態資訊。
  • 電離層資訊。

在訊號抵達地表成功判讀前,有許多原因會造成誤差,其中天氣與量測環境是最容易影響收訊的因子

  • 大氣效應 (Atmospheric Effects),訊號穿越時會受到干擾延遲,理論上 70 ns 的大氣延遲將產生約 10 公尺的殘餘誤差 (Residual error)。
  • 氣候造成濕度提高、能見度下降。也會影響訊號延遲與強度。
  • 多重路徑誤差 (Multipath effects)
  • 星曆表 (Ephemeris) 與時間誤差

這些 RF 誤差需要再處理,像是常見的因為建築物或地面造成訊號反射誤差,可以用 Narrow Correlator Spacing 來處理,大氣效應產生的電離層誤差也可以透過韌體來做修正。

然評估晶片效能,優先考慮的是靈敏度 (Sensitivity),感度越高,越能處理微弱的訊號,在室內或遮蔽時有顯著的差異,另外新型晶片設計也可以抑制多重路徑誤差,提高準確度。

衛星系統會發出數種無線電訊號頻道,這些頻道各帶有不同的資訊。要完成定位功能,只需要 L1, L2 頻道。L1 頻道中帶有捕獲碼 aka (C/A, Coarse/Acquisition Code) 與測距碼 (P碼),若支援 L2 頻道之資料,則可計算電離層全電子含量(Total Electron Content, TEC) 所造成的延遲,或是使用於 OPUSGPS post-processing service 系統提高定位準確度。

但受到美國軍方管制,一般民用定位系統只支援 L1 (1575.42Mhz±5MHz, GLONASS 1602±8MHz)。但即便無法對 L2 解碼,民間定位系統仍可以分析載波 (carrier wave) 的方式進行即時動態測量 (Real Time Kinematic correction),估算大氣效應誤差。因應民用需求,2005 年後,新的 Block-IIR-M GPS 衛星會送出 Civilian L2 (L2C) 訊號,但要到 2016 年後 Next Generation Operational Control System (OCX) 才正式啟用。

上述系統談的是美國 NAVSTAR Global Positioning System (GPS),在 2013 年四月前,全球定位系統只支援 NAVSTAR,但現在市場已經有 Russian 的 GLONASS 系統可用。另外在 2020 年還有中國的北斗衛星導航系統、歐洲的 Galileo 系統。現在新款的晶片也可以支援 Multi-GNSS,市面上的手持產品有 Garmin eTrex 等,至於手機產品如 Qualcomm Snapdragon 400 等也同時支援 GPS 與 GLONASS.

更新頻率 (Update rate /Fix Rate),這是指從感應晶片傳來的定位頻率有多高, 通常是一秒 1 點到 10 點間 (1-10 Hz),例如 M-241 可程式化成 1 到 5Hz. 一般登山步行一秒一點很夠用,但是如果你用來紀錄賽車或無人飛行器軌跡,就會發現精度不足囉。

另外一個值得考慮的是晶片可以支援的處理頻道數量,理論上只要三個衛星就可以計算出平面定位,取得四顆衛星能取得 3D 定位。也就是說,裝置最低需要同時處理四個 L1 頻道訊號。但是在成功取得定位前,裝置必須搜索所有可能訊號,以找出最接近的衛星,在首次定位前,同時間能夠處理的衛星訊號數越多,首次定位也就越快、越省電,定位之後也能有效率的鎖定衛星訊號。以前只有美國系統,加上地表角度,天空最多同時可以看到一打以內的衛星,所以大概只需要十二組頻道。但是若加上俄國等系統,你也就需要更多的「處理頻道」。

簡而言之,處理頻道的益處是減短定位時間、減少因遮蔽失去訊號的機會、提高省電。但必須認識的是,處理頻道是很容易誤解的銷售詞彙,各家廠商定義不同。要注意產品規格上說的處理頻道是支援 L1, L2, 那些衛星系統、哪些輔助定位系統。千萬小心那些灌水的數字。

無線接收 (RF design)

除了晶片性能外,另外一個嚴重影響接收能力的是無線射頻接收設計,衛星訊號在抵達晶片前,會通過天線射頻前端模組等,然後才會轉成中頻進到數位處理的階段。

由於全球定位系統的頻譜位於 VHF 頻段,與 ANT、電信網路、藍牙或無線網路不同,使用獨立的接收天線,在小型的裝置上常見使用平板天線 (patch antenna),專業一點的手持裝置則可能選用四臂螺旋式天線 (Quadrifilar Helix Antenna),看起來像是傳統黑金剛的大型天線,收訊效能比平板天線好。

不同的天線設計造成優劣有別的增益效果,不過技術演進使晶片感度大幅提昇,處理訊號反射誤差等等能力提高,在開闊環境效能可能十分接近,但是若是大樓林立的都市環境或樹林中,才會看出明顯差異。有些手持式衛星定位系統甚至保留外接接頭,可以外接主動式天線來提高收訊效果。例如裝於汽車上,為了避免車廂金屬屏蔽,可以拉線到車輛外面,但必須注意天線的線路會因為長度增加增加衰減。

通過天線進入射頻前端模組時又可再分成以下幾個元件來評估。

  • 低噪音放大器 (Low Noise Amplifier)
  • 濾波器 (Filters)
  • Down Convertor.
  • 時脈 (Clock)
  • RF Circuit Layout.

通過天線,進入 RF Front end 後會依序進入上述元件進行訊號增強、過濾、轉換,但這些元件皆已經高度模組化,使用者很難從外觀去判斷性能差異或是進行客觀的評估,畢竟缺乏測試設備,也難以獨立的對每個元件進行測試,但是只要其中一個元件設計失誤,就會影響使用效能。特別是整合到電路板上後造成的訊號干擾問題,在在考驗製造商的工藝技術。

前提是製造商願意重視數位定位的性能。由於目前在智慧型手機,許多使用者的用途都是在室內打卡、查詢附近路徑,大部分的時候只要壟統的位置資訊即可滿足,更重要的是電話通信的訊號必須良好。也因此衛星定位的天線的優先值總是被排到最後,而且依照市場需求,外型是消費者採購的優先考量,為了配合機構設計,天線可能會移到勉強可用的位置。也因此,有些手機必須手持螢幕朝向臉部才能夠成功定位。

甚至有些產品是沒有經過嚴謹測試就上市了。像是 2012 年推出的 ASUS Eee Pad Transformer Prime,大膽採用金屬外殼,結果導致 GPS 功能無法接收訊號失效

金屬會屏蔽電波訊號,請不要再弄清楚手機天線位置前隨便安裝金屬製造的外框阿。

軟體/韌體設計 (Firmware)

談完了基頻處理的硬體,接下來來談談韌體。全球定位系統有許多可以縮短定位時間或提高定位精準的技術,這些技術並非全部在韌體中,也可能以軟體導航實作,許多技術也需要依賴硬體的資訊才能完成。以下逐一討論

Assisted-GPS

Assisted-GPS 或 A-GPS 是第一個最容易讓人混淆的的名詞了,最基本的概念是不從衛星抓取衛星星曆 (Almanac) 與星曆表 (Ephemeris),而是透過 IP 網路或離線取得可用的星曆資料,甚至透過其他技術預先取得大致位置,再利用此粗估位置推算可見衛星,避免緩慢的猜測行為,如此就可加速第一次定位的時間。

若沒有預先快取的星曆資料,就必須等待定位時透過衛星訊號下載,如此會增長第一次定位時間。若關機一段時間,星曆資料已經過期,也必須重新下載 (cold start)。

容易令人混淆的是在電信網路協定中,除了使用 TCP/IP 最多採行的 OMA 協定 “Secure User Plane Location” (SUPL) aka Mobile Station Based 外,還有另外一種 Mobile Station Assisted, Control Plane Protocol 則是透過基地台計算行動電話位址,然後將位址資訊傳送回手機。這兩種技術是完全相反的。

除了透過電信網路的協定外,另外一種作法是網路輔助定位 (network-assisted positioning)。在 Android 的 GPS HAL 中,你也可以發現有 XTRA 支援的 API,可以透過網際網路下載星曆資料,然後再透過其他的 Geolocation 系統透過 WiFi ESSID 或 Cell ID 取得約略位址,餵回給 GPS 以加速定位速度。然而 XTRA 是 Qualcomm 的技術,其他晶片廠商各有不同的作法,如 MTK 則叫做 EPO (Extended Prediction Orbit)。在有線上資源的加持下,手機在首次定位的速度常常贏過手持式 GPS 裝置。像是 Garmin 的裝置,若你拜訪另外一個國家,它常常會只利用上次使用的快取搜尋衛星,導致非常第一次定位非常久。

協定與方式不同,但是都是透過線上網路取得星曆與粗略位置。也有產品是使用離線星曆的方式,像是我手上持有的 Nikon AW100 三防相機,就支援離線 aGPS,Nikon 的星曆只有七天,每七日得重新下載進 SD Card,並從相機選單中更新資料至衛星定位模組。

全球衛星導航增強系統 (GNSS Augmentation System)

全球衛星導航增強系統 (GNSS Augmentation System) 是利用差分全球定位系統 (Differential GPS, DGPS) 技術,簡單講是在地面設立數個參考基站,由於基站位置是固定的,因此可以透過差分改正(Deviation Correction) 推算大氣延遲、時鐘漂移 (clock drift)。這種增強系統又分為衛星式系統 (satellite-based augmentation system, SBAS) 與陸地系統 (Ground-based augmentation system, GBAS).

衛星式系統又稱為 WADGPS, wide-area DGPS,是將陸地基站的資訊再透過衛星廣播出去。其中比較知名的是歐洲 European Geostationary Navigation Overlay Service (EGNOS)、日本的 Multi-functional Satellite Augmentation System (MSAS)、美國的 Wide Area Augmentation System (WAAS),像 WAAS 為例子,可以定位到平面 1 公尺、垂直 1.5 公尺 的精確度。

由於使用的頻段一致,可以以韌體實作不需要額外的無線接收硬體,不少產品支援 WADGPS。至於陸地系統 (Ground-based augmentation system, GBAS) 使用的頻譜不同,一般民用消費性產品並不支援。

慣性導航系統 (Inertial navigation system)

另外一個有顯著差別的是慣性導航系統 (Inertial navigation system),由於定位時時常會通過林木遮蔽處或隧道等環境,此時會遺失衛星訊號,部份系統的作法是在重新取得定位前,不予紀錄。但是也有作法是利用利用輔助感應器 (Sensors) 的情報來做航位推算 (Dead Reckoning, deduced reckoning)

一般在定位系統或智慧型手機上常可看到以下感應器

這些感應器可以提供高度、方向、加速度、角速度、速度等移動資訊,透過這些資訊即可以慣性推算運動的位置。當然準確度是很可疑的,但是可以作為暫時遺失訊號的備用機制,彌補無法錄記軌跡的問題。部份民用衛星定位系統支援慣性導航功能。

其他注意事項

市面上的產品大致可以分為三類

  • 記錄器 (Logger) / 手錶 (GPS Watch)
  • 智慧型手機 (Smart Phone)
  • 衛星導航系統 (Handheld GPS)

若要購買專門的器材,第一優先依照使用需求購買,市面產品多樣,有適合方便跑步紀錄的手錶、自行車等專用產品,產品大小對於運動類型有很大的影響,某些自行車專用可以順便紀錄踏頻、輪圈,都已經整合妥當,使用起來也比較方便。特別注意某些舊款產品能收的處理頻道較少、或是沒有數位羅盤功能,這都會造成定位較慢或不容易使用。像是 HOLUX M-241 就沒有數位羅盤,功能中的行進方向是透過軌跡計算出運動方向。

如果會進行兩天以上深山的行程,可能會進入濃霧、大雨的惡劣氣候中,而且無法當天撤退,筆者建議購買防水的手持式衛星導航系統,最好是附有四臂螺旋式天線的產品。因為在山中,必須用到衛星定位系統就是視線不良,無法透過地圖判讀與目標定位的時候。特別是天候狀況不佳、攸關性命時,更不想依賴可能進水損壞或只有特定角度收的到訊號的裝置。

若是輕鬆且避開惡劣天候的行程,手機可以取代大部分的 GPS 功能,而且性能強大,撥看地圖效率遠比傳統手持定位系統好。無論是 MTK 平台或是 Qualcomm,衛星定位功能皆已整合,Qualcomm 平台宣稱可以精準至 2 公尺 (應搭配 WADGPS) 精確度與省電比起兩三年前大幅提昇許多。但是購買時,仍須注意產品的無線接收設計,如果以性能為優先考量,就別考慮好看的金屬外殼機種吧。

使用上必須注意的是手機有數種定位方式,可以透過網路 (WiFi, Cell Id) 或是 GPS 訊號,但由於 GPS 訊號往往定位較慢且耗電,許多開發者會使用預設的網路定位方式,這會造成切換電信基地台或收到其他無線網路基地台時,產生漂移的問題,也因此我們會看到迷路的悲劇。若要導航使用,建議使用專門的軟體,像是 OruxMaps,功能強大也可以預載離線地圖,以免沒有網路可存取線上圖資系統。

除了參考本文寫的各項要點外,在購買的時候,規格上常常會寫一些令人困惑的精確度,例如 Garmin Dakota 20

<10公尺,95%、RMS、Typical,無S/A干擾下,單機定位

這是指,這個測量有 95% 的信心度,RMS 指大約有 63%-69% 是在十公尺之內的精確度。無 S/A 干擾指無美國的誤差干擾 Selective availability,這項干擾措施已經於 2000 年 5 月停止,單機定位指沒有利用 DGPS 的定位增強系統定位。這個測試應該是在開闊區域進行,若進入如在深谷中,由於收到訊號的角度太窄,更容易產生計算誤差,要小心地形所造成的誤差,不能只看表面規格。很遺憾,市場上沒有手機在規格上標明衛星定位精確度。

另外則是紀錄軌跡的精度功能,其實一般通用的 GPX (GPS Exchange Format) 檔案格式可以包含精度情報,例如定位的類型 (fix) 是 2d, 3d 還是 DGPS, 收到幾顆衛星 (SAT), 精度因子 (Dilution of precision, DOP) 等。定位時可能產生的錯誤太多,就算可以收到數顆衛星資訊,推算過程中必定產生誤差,精度因子是透過衛星的位置算出可能的錯誤範圍,藉此可以得知該軌跡點的可信賴度。

仍而一般戶外休閒用手持衛星追蹤裝置並未提供此資訊,另外在手機,如果直接使用標準程式界面,精確度也會被轉換成以公尺為距離的誤差。能夠取出完整資訊的只有 NMEA 格式,但 NMEA 需要再次被處理過才好分享給其他軟體使用。

無論是使用手機或專門導航系統,記得要多帶電池。多日行程也請攜帶紙本地圖與指北針。電子產品有可能失效,而多個小事故累積起來往往會產生悲劇。

Ref

圖片來源:  English Russia – Smile to QuickBird

今日看到報導說俄國的一家 ISP Интерсвязь (wikipedia) 在車里雅賓斯克弄了一個公關活動 Chelyabinsk smiles to the world,這家公司找了一群人,穿著黃色雨衣,算好為 Google Maps 拍空照圖的 QuickBird (捷鳥衛星)經過路徑與時間,在廣場上排成一個笑臉讓衛星拍下來,雖說只在 Google Maps 出現一段很短的時間,但是還是非常有趣阿。

想到本週末,有今年的「驕傲向前行」台灣同志遊行,暨去年玩了一次「彩虹地景」,今年遊行又要再玩一次「飛躍彩虹大道」的遊戲。看了看衛星預定航行的路徑時間,可惜 QuickBird 不會經過台北市阿。

(就算有經過,可能也會因為夾在高樓間的馬路跟天氣拍不清楚,唉唉)

使用 Fring 已經一年多,從老早只支援 Skype 且未支援中文 (Unicode) 與 E70 畫面開蓋反應異常。到現在已經支援 Skype, MSN Messenger, ICQ, SIP, Google Talk, Twitter, Yahoo 與 AIM!現在甚至可以互傳檔案。

Fring 一直是我手機中必裝的軟體。基本上 Fring 提供了跨平台的即時通訊網路語音通話功能,跨平台指的是 Fring 目前提供 Symbian 8/9, Windows Mobile, Symbian UIQ 與 iPhone 等平台的軟體功能,同時也支援不同的即時通訊協定。於是,只要你安裝設定了 Fring ,就可以使用手機透過 3G/GPRS 或無線網路使用不同的協定。所以可以拿著手機上 MSN, Skype,並且可以作語音通話!

我最常用的功能就是在家開著 Fring, 連上 MSN/Skype 與人通話,音質可以接受,而且完全不需費用。或者差旅的時候於機場或飯店,作為長途通訊的替代用品。日常的時候,也可以透過 3G/GPRS 上網,隨時保持連線狀態,讓人可以透過 IM 聯絡到你。即使沒有租用吃到飽費率,你也可以設定 Fring 僅使用無線網路,不用擔心誤用所造成的費用問題。

若你還不知道 Fring, 不妨聽聽 Roy Timor-Rousso (VP Product Marketing of Fring) 的介紹

What is fring?

印象以來, Fring 一直是一家技術能力非常強的公司。記得去年年中透過友人介紹,認識 Fring 的 Boaz Zilberman (Chief Architect),透過電子郵件聊了一下關於無線網路使用的問題,認為若是支援 WISPr,使 Fring 可以自動登入不同的無線網路熱點,對於時常外出又想使用的便宜 VoIP 服務的人應該相當方便。今年初在台北與 Boaz 會面時,Fring 就已經在 Symbian, SymbianUIQ 與 Windows Moblie 平台上實做了 WISPr 協定!

最近 Fring 又有了大動作,他們開放了 fringAPI, 頗令人興奮!基本概念是 Fring 提供目前已有的軟體架構給第三方開發者,只要你懂 XML,就可以使用 FringAPI 所提供的架構來寫軟體。

基本的概念是你可以用 XML 刻出一個軟體介面,只要使用者訂閱了你的服務 (add-ons),就會出現在 Fring 的選單列。所有使用者在介面上所觸發的行為,都會傳到 Fring Interface Server (FIS),然後再即時傳到你的 Add-ons Server。於是,你可以只懂著處理 XML 刻出來的使用者介面與傳輸過來的 XML 訊息,就可以將軟體移植到 Fring 目前已支援的平台,而不用弄髒自己的雙手去玩各種手機平台。目前 Fring API 提供了一組簡明的 PHP 範例,可於開發網站下載。

Introducing: The fring API

Fring API 才剛開放沒多久,還沒有太多可以參考的程式範例。不過相較於 Widsets 受限於 J2ME 的開發環境,Fring 顯然更好的 Native Application 優勢,可以存取更多系統資源,如 GPS 等。可惜的是目前的 API 稍嫌不足,如檔案交換、相機取用等,似乎都尚未開放。另外一個值得考慮的議題是,Fring 是否會開放出社交資料,讓第三方開發者應用。若是缺乏了行動社交網路功能,那麼 Fring API 可能也將只是另外一個 Mobile RSS Reader。

若是 Fring 可以開放社交資料 (你的好友列表),那麼是否有機會連結 Open Social、或者開發出類似 Palringo 的有趣應用呢? 可惜 FringAPI 目前只能在 Symbian S60 9.2 上測試開發,我的 E70 是 Symbian S60 9.1,還無法拿來玩。

關於 Fring 的公司背景與服務與 API 介紹,可參考 Ayelet Noff專訪