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/