本文說明如何運用最佳做法,盡量減少使用 Navigation SDK 建構的行動導航應用程式耗電量。同時說明採用這些做法時應考量的取捨。具體來說,本文涵蓋下列主題:
- 耗電量高的來源,依耗電量從高到低排序。
- 策略:依重要性排序,從影格率開始,說明如何盡量減少耗電量。
- 使用者策略:教導應用程式使用者如何在導航時管理裝置使用情形。
為什麼要最佳化導覽應用程式?
視情況而定,應用程式使用者可能會長時間執行導航指引。舉例來說,司機和外送人員可能需要長時間工作,在不熟悉的區域完成指派的工作。在這種情況下,他們會非常依賴應用程式內的即時路線指引。這會導致一些常見問題:
- 電池耗電量和充電器可用性。大量使用導航功能可能會導致裝置電池耗電速度比預期更快。許多使用者可以在車輛中為裝置充電,但兩輪車駕駛人無法這麼做。
- 裝置因過熱而降低效能。即使持續為裝置充電,使用者也可能會遇到問題。長時間耗用大量電力可能會導致裝置過熱,進而造成熱節流,導致效能下降。
導航應用程式會使用耗電量大的功能,例如螢幕、GPS 和與基地台的無線電通訊,因此最佳做法是盡量減少行動應用程式的耗電量。此外,您也應考量目標對象的耗電量需求,以便在效能和耗電量之間做出適當取捨。
哪些項目最耗電?
本節會將與高耗電量相關聯的應用程式內活動分為兩類:
- 畫面轉譯
- 最新位置
畫面轉譯
在行動導航應用程式中,螢幕算繪通常會導致耗電量最高。裝置每次在螢幕上繪製地圖和其他 UI 元素時,都會用到 GPU 和 CPU 處理程序。同樣地,如果使用者長時間讓該畫面保持開啟狀態,也會消耗更多電量。
如果駕駛人或乘客需要查看地圖才能導航,且長時間持續使用應用程式,耗電量自然會比較高。在這種情況下,應用程式也會以較高的速率在畫面上算繪,因為地圖會即時更新。在某些情況下,畫面可能會幾乎持續重新繪製,尤其是使用者不停地從一個地點開車到另一個地點時。
最新位置
除了畫面算繪之外,還有兩項導覽活動會耗用裝置電力:
- 無線電基地台和 GPS 用量
- 位置資訊更新和分享,例如提供預計抵達時間,或回報車隊中車輛的位置。
GPS 和手機無線電通訊都仰賴耗電的啟動作業:GPS 必須找到衛星,手機無線電則必須與基地台協商並建立連線。因此,即使為了盡量減少啟動成本,行動無線電仍會保持運作 20 到 30 秒,但這些服務在導覽期間基本上會持續運作。作業系統會控管這些設定,您無法在應用程式中輕鬆設定。
位置資訊更新的耗電量會因無法預測的因素而異。舉例來說,裝置與行動網路基地台之間的距離會決定耗電量,因為裝置會使用導覽所需的最低訊號,避免切換基地台。因此,在連線品質不佳的區域導航時,裝置會比靠近基地台時消耗更多電力。此外,部分應用程式可能會與中央車隊管理服務分享位置資訊更新,因此需要與伺服器通訊才能完成這項作業。
最佳化應用程式的耗電量
導航應用程式的耗電量最佳化挑戰在於,這類應用程式高度依賴耗電資源,因此在不限制螢幕使用等情況下,您可採取的影響減輕措施有限。本節列出可採取的應用程式最佳化方法,並依影響程度排序。
變更影格率
螢幕會以特定頻率更新顯示內容,這個頻率稱為畫面更新率,通常以每秒影格數 (FPS) 表示。由於螢幕算繪會大量使用 CPU 和 GPU 處理程序,因此您可以降低影格速率來節省電力。
降低影格率時,地圖算繪和互動式手勢 (例如平移、縮放或旋轉) 可能會變得不流暢。如要兼顧省電效率和流暢的使用者體驗,您可以維持低基準影格速率,並在使用者互動時動態提升影格速率。
如要進一步瞭解如何修改影格率,請參閱 Android 媒體開發人員中心開發人員說明文件中的「影格率」一節。
自動調整影格速率
從 7.8.0 版開始,Navigation SDK 會在導航期間自動調整地圖的影格率,以提升效能並減少電池耗電量。裝置進入省電模式後,地圖的影格速率會降至 10 FPS,導航結束或省電模式停用時,則會重設為 60 FPS。
不使用地圖導航
您無法控制使用者如何設定裝置螢幕亮度或螢幕保持開啟的時間長度,但可以提供不含地圖的導航指引選項。這樣一來,使用者就能選擇該選項來節省電力。舉例來說,如果司機經常在同一社區工作,可能就不需要經常使用地圖導航。如要啟用無地圖導航功能,請在 Navigation SDK 中設定目的地並開始導引,但不要顯示地圖。
如要隱藏導覽 UI,請勿新增 NavigationView 或 SupportNavigationFragment,或移除新增這些項目的程式碼 (如果已新增)。下列程式碼是從 Navigation SDK Android 試用版應用程式修改而來,並顯示如何使用註解移除新增導覽 UI 的程式碼:
//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
Navigation SDK 會持續更新道路上對應的位置、預計到達時間和剩餘旅程距離,而應用程式仍可訂閱 SDK 產生的所有事件,這不適合所有應用情境,如果駕駛人需要查看地圖並依循視覺指引,這也不是好建議。以下螢幕截圖並排比較了導航期間切換地圖檢視畫面。
|
|
使用深色地圖樣式
建議將地圖樣式設為深色主題,減少在螢幕上算繪地圖所需的能源。
Navigation SDK 會使用 Google Maps SDK for Android 算繪地圖,其中包含可設定應用程式中任何非導航地圖檢視區塊樣式的選項。導航檢視區塊也支援強制使用深色模式。由於螢幕類型不同,這項設定對每部裝置的影響可能不盡相同,但有時可節省電力。最近的研究發現,在某些螢幕上,深色模式可節省的電量取決於螢幕的初始亮度。舉例來說,如果螢幕亮度已調整為最大值的 30% 至 50%,深色模式節省的電量會比螢幕亮度調到最高時少。使用應用程式的深色模式時,請務必考慮這點,因為省電量取決於使用者的螢幕亮度設定。
如要進一步瞭解如何修改 Navigation UI,請參閱「修改導覽 UI」。
如要為地圖建立深色樣式,請使用 MapStyleOptions 物件和 JSON 樣式,代表您選擇的深色地圖樣式。您可以使用 https://mapstyle.withgoogle.com/ 的舊版樣式編輯器建立舊版 JSON 樣式。
變更 GPS 位置資訊更新頻率
考量裝置傳送位置資訊更新時的耗電量時,請著重於位置資訊更新的頻率,而非傳輸的資料量。
您無法在 Navigation SDK 中直接控管這項設定,但如果 Android 應用程式會獨立要求位置資訊,建議您參考 Android 開發人員文件中的「針對電池用量最佳化位置資訊」一文。使用非 GPS 定位來源 (行動網路和 Wi-Fi) 時,也適用相同建議。
向使用者說明
應用程式使用者可能想瞭解如何節省電力。如要協助使用者減少應用程式耗電量,請建議他們採取下列做法:
- 鎖定手機
- 將導航應用程式放到背景
- 盡可能在沒有地圖的情況下使用導航
- 降低螢幕亮度,方法包括為 OLED 和 AMOLED 螢幕啟用深色模式,或啟用自動調整亮度功能
- 讓裝置保持涼爽
- 連線至車內 Wi-Fi (如有)
測量耗電量
你可以使用專業級工具測量耗電量,但這類工具通常難以取得或價格高昂。應用程式和 IDE 分析工具 (例如 Android Studio 中的 Power Profiler 和 XCode Organizer 中的「Battery Usage」窗格) 會測量耗電量,但很難移除背景程序的效果,或設定效能基準來進行測量。在某些情況下,裝置限制可能會導致無法存取必要資料。
您可以使用特殊用途的電力監控硬體,並修改電池連接設定,市面上也有相關的商業產品和服務可供使用。請注意,以這種方式修改裝置可能會導致裝置保固失效。