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 的演講[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”

一切都是因為 h4 的會末分享,形式類似 Lightning talk,大約五分鐘的一周進展總結,聚會夥伴合資購買了一臺新的 Vivitek QUMI Q5。由於聚會的場地限制,為了接上投影機一直移動實在不太方便,所以大家開始設想無線投影的方法。

其實 QUMI Q5 內建無線投影功能,使用了奇揚網科MirrorOp 技術,很遺憾隨著投影機贈送的軟體只支援 Windows,而我們的朋友大部份使用 Linux 或 Mac. Windows 是少數。 至於行動版,iOS sender 需要 jailbreak, Android MirrorOp Sender 則需要 root,可用性極低。而且 Q5 的無線網路只支援 AP Mode,投影的人必須接上 Q5 的網路才能投影,有些需要網路才能展示的分享就無法連上網路了。

IMG_1309 IMG_1312

希望能夠有一個簡單的解決方案,可以把一些現成的 Android dongle 或 Chromecast dongle 轉成無線投影裝置。這樣就不需使用 PC 專門來做投影功能。

IMG_4017IMG_4026

研究了幾個現有的無線投影技術 –

  1. Apple AirPlay
  2. Miracast / WiDi
  3. Chromecast

分別討論每一種協定的實作方式,跟可行性。結論,目前 Chromecast 大概是跨平臺最方便的無線投影機制,但目前還沒有 WebRTC 的投影協定文件。

話說上週四參加聚會時,Yuren Ju 高興的分享 Android 計畫中帶的 Droid 字型,他說這個字型比其他字型所呈現的字體在他的螢幕上都頗清晰,於是他在每一台機器上都裝了這個字型。

是阿,富比士雜誌甚至報導了一則關於這個由 Google 與 Ascender 公司字型的故事 Android’s Very Own Font,訪問了 Ascender 的首席設計師 Steve Matteson 關於這個長達兩年幾乎跟 Android 開發計畫一樣久的客製化字型開發專案。

正當我想要把字型到處裝來試試的時候,檢查了一下授權,雖說 Android 中所有的軟體包含字型應該都是 Apache 2.0 授權,包含在釋出的軟體開發工具 (SDK)原始檔案中都有文字檔說明版權宣告。不過社群中發現一個疑慮,在 Droid 字型的資訊欄位中,有一項授權條款是這樣寫的

This font software is the valuable property of Ascender Corporation and/or its suppliers and its use by you is covered under the terms of a license agreement. This font software is licensed to you by Ascender Corporation for your personal or business use on up to five personal computers. You may not use this font software on more than five personal computers unless you have obtained a license from Ascender to do so. Except as specifically permitted by the license, you may not copy this font software. If you have any questions, please review the license agreement you received with this font software, and/or contact Ascender Corporation. Contact Information: Ascender Corporation Web http://www.ascendercorp.com/

於是這產生了授權問題,依照上述條款,你只能把字型裝在五台電腦上,超過需要另外要求授權,且關於細節的授權條款並不清楚。

所幸,兩週以前 Google 總算做了一個修正,將字型中的版權聲明也改為 Licensed under the Apache License, Version 2.0,加上原始碼字型檔案同目錄中的 README.txt 也同樣明確聲明為 Apache 2.0 授權。

如此證明已 Apache 2.0 授權散布使用此字型是沒有法律疑慮的。目前社群中 ArchLinuxGentoo 都已經有相關的安裝套件。版權確定沒問題了,就可以安心的把字型丟到我的 Nokia E70 上了,嘿嘿。

其實大部分的英文字型,我習慣使用也很清晰的 Bitstream VeraDejaVu 字型。至於搭配 Terminator 使用的寫程式/系統管理小字型,則是點陣字型 Terminus 最有效率。中文的部份,近來已經改用文泉驛點陣宋體CJKUnifonts。若想看看更多中文字體,可以參考 Ubuntu China 的 Wiki 網站。

前一陣子提到 SymbianSigned 的簽章服務暫停服務了好一陣子,原因是有大量的中國用戶透過工具軟體自動連線到 SymbianSigned 上申請金鑰,因此連線量與盜版行為大增。到了前幾周,在 SymbianSigned 調整的簽署的流程與模式後,網站的服務狀態才穩定下來。不過前一陣子系統暫停服務與各種註冊限制,已經嚴重的影響了一般軟體開發者的進度。更別網站暫停服務的挫折激怒了大量的終端使用者。

這其實是一個長期存在的問題,大部分的使用者再買了所謂 Smart Phone 後,總會新奇的想裝上各種軟體,無論是免費、中文化或被破解的軟體。這也就是使用者挑選較為昂貴的 Smart Phone 而非便宜的 Feature Phone 的原因,他們享受使用額外功能的樂趣。

然而,在 Symbian 平台上 (Nokia S60 系列手機為主流),安裝軟體往往不是一件容易的事情。因為平台的安全限制,來自 SymbianSigned 正面的說法是保護使用者,避免使用者無意中安裝了惡意軟體,且保護了開發者的著作財產權。實質的效果是,商業軟體開發者則必須負擔申請憑證的費用,等待壅長的送測時間。更別提其他的自由軟體/免費軟體開發者,他們根本無力負擔簽章的費用,而申請免費簽證的程序又過於複雜,於是成本便被轉嫁到使用者身上。使用者痛苦的跟著各種論壇上殘缺不全的指引,試著自己申請開發者憑證,以便可以簽署專供自己手機使用的免費軟體。

整個生態系統花費了大量的資源支持這種流程,完全是因為

This is approach is in line with agreed mobile industry recommendations.
Source:Open Signed Online vs Developer Certificate Q&A

行動通訊產業不願見到使用者有權自行安裝軟體到設備上,即使是使用者自己出錢買下。根據 OMTP Recommendations Papers ,這是業者的臠。

關於 Symbian Signed 的目前狀態,不彷參考 Nokia 高級技術專家路戈寧的說明 (簡報)。現在的簽署規則是除非你購買了 Publisher ID ,否則只能作 Open Signed Online ,且軟體 UID (Symbian 每一軟體有獨一的 UID) 只能在 Test Range 內,這代表只有測試版可以被簽署。因此你還是無法直接簽署使用 FreeWare,並自由的安裝在自己手機上。儘管說 60% 的 Symbian APIs 不需要簽章就可以用,但是幾乎不會有軟體只用這 60% 內的 APIs 阿。

自然使用者不會為此坐以待斃,中國的幾個主要手機論壇,都開始有人申請 Publish ID,並免費發送給論壇註冊會員,其中一個網站 OPDA 已經為此送出簽證給超過十萬台 Nokia S60 手機!而且申請人數持續上升中。另外有一群人則試著破解 ROM image 中的 swipolicy.ini,藉此允許安裝未簽署的軟體並提高使用者的的執行權限(Tutorial: Bypass Symbian Signed & Install UnSigned SISX/J2ME Midlets on Nokia S60 v3 with Full System Permissions)。

當使用者發現他們付出了更多費用,卻無法獲得預期的好處時,下次換機是否會直接換為 Windows Mobile, iPhoneAndroid 等相對開放的平台呢?或者 Android 與 iPhone 的強勢賣方力量會改變傳統的電信市場?

拭目以待。