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”