深度解析世界迷霧的記錄模式

Ollix
世界迷霧
Published in
Oct 29, 2019

世界迷霧目前有 iOS 跟 Android 版本,由於這兩個作業系統本質上的差異,也造成了世界迷霧在這兩個系統中有著不完全相同的操作邏輯,這篇文章將深度解析記錄模式所有不為人知的秘密。

啟閉記錄模式

不管在哪個平台,世界迷霧要打開或關閉記錄模式的方法都一樣,只要點一下導覽列中間那顆紅色按鈕即可。

原始定位數據

關於定位這件事,許多人定不到位或 GPS 訊號不好就會怪 APP,但實際上定位機制完全是由系統在控制的,APP 能做的僅僅是跟系統說我需要定位資訊,然後等系統蒐集好數據後再一一回傳給所有提出定位需求的 APP。

也就是說,每個 APP 在同一時間都是得到一模一樣的定位資訊,APP 在得到這些定位資訊後才能執行後續動作,像迷霧就會根據系統回報的座標準確度來決定是否要採用這個座標,因為如果準確度過低硬要記錄的話,結局就是記錄出來的路徑極可能會慘不忍睹。

也因為 APP 什麼實權也沒有,所以一旦系統出錯隨便跟 APP 亂報,APP 也完全無從查證,只能無條件相信系統回傳的原始數據。不過除非是硬體故障,否則通常定位異常的話只需要重新開機就能恢復正常了。

當系統回傳的座標準確度過低時,就不會採用以確保迷霧地圖的品質。

GPS 定位

要獲得高精確度的定位座標,主要還是靠 GPS 晶片去接收在天上的衛星訊號,雖然現在的手機都有輔助定位的技術,但得到的定位準確度仍遠遠不如 GPS 訊號。因此,請儘量將手機放在能看得到天空的位置,像是不要把手機放在包包深處、搭交通工具時要把手機放在窗邊等等,另外 GPS 訊號非常容易被金屬屏蔽,因此也要避免使用金屬的保護殼或含有金屬成份的汽車隔熱紙。

輔助定位

雖然單靠輔助定位不太容易獲得有用的定位座標,但有輔助定位的幫助仍能幫助手機更快的取得更準確的定位資訊。要使用輔助定位很簡單,只要你打開 WiFi、藍芽、或行動網路,手機就會自動使用這些功能來輔助定位,即使你只打開了 WiFi 卻沒有連到任何一個 WiFi 熱點,手機仍能根據接收到的 WiFi 基地台資訊來輔助定位。

換句話說,輔助定位非必需,如果出國在完全沒有網路的環境下,手機仍然可以只用 GPS 晶片來定位(飛航模式下也行),但沒有輔助定位的幫助,就更需要將手機放在能接收天上衛星訊號的位置。如果是到距離上次定位很遠的地方,那下一次定位時可能需要在定點等個數分鐘的時間才能定得到位。

定位條件

要能使用定位功能,就得滿足系統的定位條件才行,這部份在兩個系統就有非常大的差異,以下分別說明。

iOS 的定位條件

在 iOS,只有少數幾種特殊需求的 APP 才能在背景運作,像是播音樂和定位等等,否則 APP 一進到背景就會被 iOS 給凍結住,什麼事也不能做。

只有開啟迷霧的記錄模式時,才會使用定位,但 iOS 的定位又有兩種授權模式,如果是授權「使用 App 期間」,那迷霧就只有打開時才能使用定位,進入背景或關螢幕都無法獲得定位數據。一定要授權「永遠」才能讓迷霧持續在背景記錄軌跡。

在背景記錄時,如果手動將迷霧從多工列關閉,也會視同關閉記錄模式。試想一下,如果一個使用者已經關閉的 APP 卻還能在使用者不知情的狀況下偷偷運作,這不是很恐怖嗎?所以蘋果為了安全考量是不允許的。

Android 的定位條件

安卓的設計跟 iOS 有蠻大的差異,除了只有一種定位授權,還一定要使用安卓所謂的「前景服務」才能讓迷霧持續在背景記錄軌跡,也就是強制規定 APP 必須在系統的狀態列提示使用者有服務正在運行。因此,使用者也可以根據狀態列上是否有迷霧的圖示來判斷記錄模式是否開啟。

因為定位是透過獨立的「前景服務」來運作,所以在安卓即使把迷霧從多工列給關閉也是可以繼續記錄的,若要關閉記錄模式的話一樣是打開迷霧地圖的介面來操作。

安卓還有一個跟 iOS 的不同點,就是若開啟安卓的「節約耗電量」模式是會強制關閉定位的,所有 APP 在此模式下都無法收到定位數據,請特別注意!

在安卓的狀態列只要看到世界迷霧的圖示就表示記錄模式有打開

自動重啟

不管在哪個平台,正在運行的 APP 都有最高優先權,因此若這個 APP 需要的資源不夠的話,系統就會開始強制關閉在背景執行的 APP 以釋放更多資源,這通常會發生在使用相機、臉書或遊戲類的 APP。

而使用定位服務的 APP 即使在背景運行,也會比其他凍結在背景的 APP 擁有更高優先權,這表示若迷霧在背景被系統關閉了,其他所有凍結在背景的 APP 也無一倖免。此外,當 App Store 或 Google Play 更新 APP 到新版本時,也會強制關閉 APP。

好消息是 iOS 和 Android 都提供了自動重啟迷霧繼續記錄的可能,但觸發條件有些不同,且自動重啟的機制完全是由系統在控制的,因此 APP 並沒有辦法保證一定會重啟成功。

在 iOS,若迷霧在開啟記錄模式時被系統強制關閉了,就會發出訊息通知使用者,桌面的迷霧圖示也會出現紅色圓圈寫數字1,當 iOS 偵測到手機有長距離移動時(通常約 1~2 公里),就會自動重啟迷霧紀錄,此時迷霧圖示的數字1也會跟著消失。

在安卓發生被關閉的情況時,通常在數秒或數分鐘內就會自動重啟,不需要其他條件,所以當迷霧有新版本釋出且 Google Play 自動更新完,使用者完全不需要手動去重新打開 APP,比 iOS 人性化許多。

飛航軌跡

想記錄飛機軌跡是比較難掌控的,因為除了要把手機放在靠窗的位置,也要剛好坐在遠離機翼的座位,根據開發者搭飛機的經驗,感覺似乎機翼上的渦輪引擎會對 GPS 信號造成干擾,每次只要坐在機翼附近,連專門的 GPS 記錄器都抓不到訊號。另外新型飛機如 787 已經會完全阻隔 GPS 訊號,所以如果真的很想要飛機軌跡,就只能靠 flightradar24 或 FlightAware 這類提供航跡的網站,相關說明可參考:用 FlightAware 補飛機路徑的方法

總結

相信沒有人會看完上面寫的一大堆文字,所以這裡直接列出記錄模式在 iOS 和 Android 不同的行為,若還有其他疑問歡迎在下面留言🙂

--

--