本變更記錄將詳細說明 Navigation SDK for Android 各版本的新功能和錯誤修正。
2021 年 10 月 18 日 - 凍結 API 級別 23、24 和 25 的支援
為因應內部依附元件的變更,從 2022 年第三季開始,新版 Navigation 和驅動程式 SDK 將停止支援 Android API 級別 23、24 和 25 (Android 6、7.0 和 7.1)。
在 2022 年第三季開始推出的 Android 版 Navigation 和驅動程式 SDK,僅支援搭載 Android API 級別 26 以上的裝置。
使用 Android 版 Navigation 和驅動程式 SDK v4.x 以下版本建構的應用程式版本,可繼續在搭載 Android API 級別 25 以下的裝置上運作。
淘汰公告 (2021 年 6 月 21 日)
本公告說明自上述日期起,淘汰 Android 適用的 Navigation SDK 和 Android 驅動程式 SDK。我們也將這項公告以重大服務公告 (MSA) 的形式發送給受影響的客戶。
淘汰 Android 適用的 Navigation SDK 和 Android 適用的驅動程式 SDK v1.x
Nav/Driver SDK v1 已於 2018 年發布,而隨著我們的第 3 版即將發布,現在可以淘汰第 1 版,以免不支援許多主要版本。
因為不必支援這類額外版本而省下的時間,可讓我們更有效地支援最新主要版本,並開發更多客戶重視的功能。
因此,Nav/Driver SDK v1.x 現已淘汰,2022 年 6 月 21 日後不會再進行維護。
請花點時間瞭解 SDK 版本中的淘汰項目如何運作。
如需其他 Android 淘汰資訊,請參閱 Android 版 Navigation SDK 第 2 版/第 3 版版本資訊。
版本 1.51.1 (2022 年 4 月 1 日)
穩定性和錯誤修正
修正《服務條款》對話方塊中的無效超連結。
在 Android 活動遭到刪除時,部分用戶端收到服務條款對話方塊錯誤。刪除活動時,用戶端不會再發生這個對話方塊錯誤。
版本 1.51 (2022 年 1 月 18 日)
API 相關異動
將 Navigation SDK 的最低 Android API 級別提高至 23,並將目標 API 級別提高至 30。這個目標版本符合 Google Play 規定。
呈現追蹤 V 形路徑的折線 (顏色為「灰色」),表示使用者已行經路線中的該段。
版本 1.50 (2021 年 11 月 3 日)
- 版本 1.22 的 Jetified 變化版本。除了使用 AndroidX 程式庫外,沒有任何變更。
1.22 版 (2021 年 10 月 7 日)
穩定性和錯誤修正
- 修正相機在呼叫 stopNavigation 後,相機停止追蹤使用者位置的相機錯誤。
- 修正對應用程式進行背壓後顯示最近按下按鈕的相機錯誤。
- 修正潛在的記憶體流失問題。
- 修正會產生 ANR 問題的錯誤。
- 防止「服務條款」對話方塊造成當機。
淘汰項目
- 淘汰使用路徑符記的 #setDestinations,改用使用 CustomRoutesOptions 的新 API。
新功能
- 新增輔助取貨功能,在導覽頁尾使用者介面新增圖示。
- 為自訂路徑新增 2-Wheeler 支援。
版本 1.21.1 (2021 年 7 月 13 日)
穩定性和錯誤修正
- 修正與實作程式碼中規定過於嚴格的先決條件相關聯的
IllegalStateException
。 - 修正
NavigationView.onDestroy()
中的NullPointerException
。
1.21 版 (2021 年 6 月 23 日)
API 相關異動
- 無頭導覽模式現在支援加速事件監聽器。因此,在不先從 Navigation SDK 轉譯
View
或Fragment
的情況下,就可以監控速度。
穩定性和錯誤修正
- 改善應用程式首次安裝時,在夜間模式下載入地圖圖塊的穩定性。
淘汰項目
下列方法已淘汰,並改用 Navigator.setSpeedAlertOptions()
:
NavigationView.setSpeedAlertOptions()
SupportNavigationFragment.setSpeedAlertOptions()
NavigationFragment.setSpeedAlertOptions()
版本 1.20.1 (2021 年 7 月 14 日)
穩定性和錯誤修正
- 修正與實作程式碼中規定過於嚴格的先決條件相關聯的
IllegalStateException
。 - 修正
NavigationView.onDestroy()
中的NullPointerException
。
1.20 版 (2021 年 3 月 9 日)
- 已新增必要依附元件。請將下列依附元件新增至 Gradle 依附元件清單,以免執行階段停止運作:
api 'joda-time:joda-time:2.9.9'
。
穩定性和錯誤修正
- 修正使用 Joda-Time 的 Navigation SDK 使用者,會與封裝至程式庫的 jodatime 版本發生衝突。
- 修正 Navigation SDK 會在啟動導覽工作階段時,意外隱藏非擁有的消費者應用程式通知的問題。
版本 1.19 (2020 年 12 月 15 日)
API 相關異動
DriverSDK 現在一律會將流量資料傳送至 FleetEngine。在過去,這個行為是由
UpdateVehicleResponse
標記決定;現在系統會忽略該標記。FleetEngine 建構函式已變更;新增了
AuthTokenFactory
和StatusListener
的包裝函式。已在 Navigator API 中新增兩個新方法,以允許設定及移除新導覽工作階段的事件監聽器。
在 Navigator API 中新增方法,以取得進行中導覽工作階段的交易 ID。當新的導覽工作階段開始,以及當進行中的導覽工作階段中的交易 ID 有所變更時 (例如歷程區隔清單更新),則應使用這個 API。
版本 1.18 (2020 年 10 月 9 日)
已新增
setAbnormalTerminationReportingEnabled(boolean)
方法這個方法可讓使用者停用當機偵測監控功能。修正無法從
onLocationChange
事件取消註冊LocationListeners
的錯誤。已修正無法針對
io.grpc.util.SecretRoundRobinLoadBalancerProvider$Provider
執行個體化的 gRPC 當機問題。
1.17 版 (2020 年 8 月 27 日)
您現在可以將路徑權杖傳遞至 NavSDK,以擷取該路徑權杖代表的路徑。當您呼叫 Routes Preferred API 時,路徑權杖會與路徑回應相關聯。新的 API 為
Navigator#setDestination(List<Waypoint> destinations, String routeToken)
。已新增一些必要的依附元件。請將下列依附元件新增至 Gradle 依附元件清單,以免執行階段異常終止:
api 'com.google.android.datatransport:transport-api:2.2.0' api 'com.google.android.datatransport:transport-backend-cct:2.2.0' api 'com.google.android.datatransport:transport-runtime:2.2.0'
1.16 版 (2020 年 8 月 10 日)
新功能
新增
Waypoint.Builder.setVehicleStopover
API,可在路線控點位於無法停靠的地點時,啟用/停用路線中停靠站的自動重新配置功能。在
SpeedAlert
回呼中加入SpeedAlertSeverity
參數。請將這個參數與SpeedingListener
搭配使用。
穩定性和錯誤修正
由於
NullPointerExceptions
等不必要的副作用,因此已淘汰NavigationApi.cleanUp
方法,導致當機。淘汰
Waypoint.fromLatLng()
和Waypoint.fromPlaceId()
,改用Waypoint.builder()
。淘汰
NavigationTransactionRecorder
中的AddressListener
類別,因為系統未使用。
1.15 版 (2020 年 3 月 23 日)
新功能
可自訂導覽標頭的字型/顏色/圖示。
支援在 Navigation 標頭 UI 中自訂建議車道的顏色。
更新多個 API,依循新增移除模式設定回呼/事件監聽器。先前的
set*
方法已標示為已淘汰,將在日後推出的版本中移除。以下列出已淘汰的方法:SupportNavigationFragment.setOnNightModeChangedListener
SupportNavigationFragment.setOnRecenterButtonClickedListener
NavigationFragment.setOnNightModeChangedListener
NavigationFragment.setOnRecenterButtonClickedListener
NavigationView.setOnNightModeChangedListener
NavigationView.setOnRecenterButtonClickedListener
Navigator.setArrivalListener
Navigator.setRouteChangedListener
Navigator.setRemainingTimeOrDistanceChangedListener
穩定性和錯誤修正
將 navsdk 的 minSdkVersion 提升至 19。
修正在伺服器端反向地理編碼失敗時,無法遵循 lat/lng 路線點名稱的錯誤。
1.14 版 (2020 年 2 月 2 日)
新功能
(Beta 版) 營運人員可在路線規劃要求中設定路線的目標距離,藉此影響駕駛人要跟隨的路線選項。此功能仍處於 Beta 版階段,有興趣的話,請聯絡您的客戶工程代表以瞭解詳情。
將 SDK 編譯成 API 29。
穩定性和錯誤修正
修正「服務條款」對話方塊中的錯誤,該錯誤會使駕駛人必須要求使用者按下「接受」提示。
已修改 NDK 元件中的例外狀況處理行為,以免發生當機狀況。
版本 1.13 (2019 年 11 月 8 日)
新功能
現在起,駕駛可以在超過速限時收到速度快訊。您可以自訂速度快訊圖示的外觀。如《Google 地圖企業版服務條款》所述,Google 不就任何功能的品質做出任何擔保,包括速度快訊功能的準確性。速度快訊僅供參考。
新增轉送選項 (
RoutingOptions
),可讓您在路徑預覽期間顯示替代路徑。新增相機視角,顯示路線的由上往下檢視畫面,並將路線朝向方向,讓車輛一律面對前方。您可以呼叫
NavFragment.getCamera().followMyLocation(Camera.Perspective.TOP_DOWN_HEADING_UP)
來設定這個視角。已新增 API (
RoadSnappedLocationProvider
中的resetFreeNav()
)。在未啟用導航功能時,只要停止透過已註冊的事件監聽器接收位置更新,即可呼叫此 API,重設 Free Nav 服務。
穩定性和錯誤修正
- 更新《服務條款》對話方塊的內容。
版本 1.12 (2019 年 10 月 7 日)
新功能
導航時,您現在可以隱藏或隱藏單條或所有替代路線。
您現在可以在要求 (較短/最快路徑) 中指定轉送策略。
新增完全自訂「條款及細則」對話方塊的功能 (文字大小、顏色等)。
穩定性和錯誤修正
已修正
com.google.http-client
中重複的類別問題。將試用版應用程式更新為使用新版 Places SDK,以及 Jetified 試用版應用程式。
改善行程總覽時的相機影格速率。
1.11 版 (2019 年 6 月 28 日)
提升效能
setDestination
網路延遲時間已改善。
修正錯誤
修正在導覽多個路線控點時,與
onArrival
回呼不一致的問題。修正了離目前位置附近路線控點可能會提早觸發抵達的問題。
java.lang.IllegalStateException
- 對
NavigationView.onDestroy
的呼叫無法追蹤對NavigationView.onCreate
的呼叫。
- 對
其他
開放原始碼軟體授權更新。
移除路徑上的預計到達時間摘要,藉此移除多餘資料並簡化 UI。
版本 1.10.2 (2019 年 4 月 11 日)
穩定性和錯誤修正
- 修正錯誤:在 Fragment 生命週期轉換 (onCreate() 到 onDestroy()) 期間,擲回 IllegalStateException 的錯誤。
版本 1.10 (2019 年 4 月 11 日)
功能
可自訂的條款及細則對話方塊標頭:您可以使用
showTermsAndConditionsDialog
自訂條款及細則對話方塊的標題文字。路線點標記:從路線控點標記中移除英數字元。
版本 1.9 (2019 年 2 月 11 日)
功能
次要標頭:您可以使用自訂控制項功能,在導覽標頭下方新增自訂內容。請參閱
setCustomControl
方法的SECONDARY_HEADER
位置。新增依附元件:新增 Cronet 和 Glide 的依附元件。詳情請參閱「專案設定」主題中的「更新 Gradle 建構指令碼」。
已知問題
- 如果試用版應用程式因 java.lang.ClassNotFoundException: Didnt find class "com.example.navigationapidemo.SplashScreenActivity" 而當機,您必須將 Gradle Build 工具的依附元件更新至 3.3.1 以上版本。在
build.gradle
檔案中,確認buildscript
與以下範例相符:
buildscript {
repositories {
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.1'
}
}
版本 1.8.1 (2019 年 1 月 22 日)
穩定性和錯誤修正
- 已修正特定相機模式下的計程車模式異常終止問題。
- 改善多項穩定性。
1.8 版 (2018 年 12 月 21 日)
功能
計程車模式 - Beta 版:應用程式可以使用計程車專屬的車道和街道,為計程車識別的車輛提供路線和預計抵達時間 (ETA)。
目前支援的地理區域如下:
- 巴西:裡約熱內盧
- 英國:伯明罕、考文垂、倫敦都會區、曼徹斯特
- 以色列:特拉維夫
- 愛爾蘭:都柏林
- 俄羅斯:莫斯科
- 蘇格蘭:格拉斯哥、愛丁堡
- 西班牙:馬德里,巴塞隆納
穩定性和錯誤修正
- 修正記憶體流失問題
- 提高效能
1.7.3 版 (2018 年 9 月 18 日)
修正錯誤
NavigationView
現在可以直接從onStart
轉換為onStop
,這樣不會再產生IllegalStateException
。
1.7.2 版 (2018 年 8 月 16 日)
功能
- 現在,您可以在導航時顯示路線清單,顯示即將搭乘的車輛。路線清單是透過
DirectionsListView
提供。 - 您現在可以透過
getSeverity
方法使用TimeAndDistance
類別擷取流量狀態。 - 現已支援車牌限制。
修正錯誤
- 已修正《服務條款》對話方塊 (以
IllegalStateException
形式) 偶爾當機的問題。 - 已修正 NullPointerException 及「嘗試寫入欄位...對空值物件參照」之類的訊息。
- R.txt 中的資源 ID (先前都是所有 0x1) 現在有正確的值。
版本 1.6.2 (2018 年 7 月 16 日)
修正錯誤
- 已修正
AccessibilityStateUtils.getAccessibilityState()
中的 NullPointerException。
版本 1.6.0 (2018 年 5 月 10 日)
修正錯誤
- 修正導致旅程路段和替代路線上的預計到達時間摘要錯誤的錯誤。
- 修正了位置的緯度和/或經度值為
null
時,NullPointerException 的問題。 - 修正在離線狀態下接受服務條款對話方塊的錯誤,導致地圖無法載入的錯誤。
- 加入以下解決方法,說明在 Navigation SDK 中會導致 NPE 導致的 Android OS 7.0 LocationManager 錯誤。
版本 1.5.0 (2018 年 3 月 26 日)
功能
- 夜間模式:您現在可以將導航設定為使用夜間模式主題。您可以透過程式輔助方式啟用或停用夜間模式,或讓 Navigation SDK 根據時段自動切換主題。
- 機車交通方式 (Beta 版):您現在可以將交通方式設為
TWO-WHEELER
,取得機車和機車路線。這項功能目前僅適用於印度和印尼。 - 速限:您現在可以透過程式輔助方式顯示或隱藏速限圖示 (該圖示只會在有穩定速限資料可用的位置顯示)。
- 自訂地圖疊加層控制項:您可以使用自訂地圖疊加層控制項,在導航時動態調整 UI 元素的位置。
getNavigator()
呼叫現在會接受應用程式內容,以便從服務呼叫。
修正錯誤
- 我們處理了「服務條款」對話方塊中的幾個文字版面配置問題,以改善由右至左語言的顯示內容。
1.3.4 版 (2018 年 1 月 24 日)
- 修正導致
clearDestinations
有時無法清除上一個路徑的錯誤
1.3.3 版 (2017 年 12 月 18 日)
- 由於
CameraArbitrator
類別同時用於 UI 和轉譯執行緒,因此使類別符合執行緒安全。 - 如果
CompassButtonController
的事件在呼叫onDestroy()
後抵達,則不擲回 NPE。 - 為 NavigationApi 的公開方法新增空值檢查。SDK 會擲回最靠近開發人員程式碼的 NPE。
1.3.2 版 (2017 年 11 月 30 日)
- 修正網路錯誤時發生的當機問題。
1.3.1 版 (2017 年 11 月 14 日)
- 修正 Android 8.0 Oreo (API 級別 26) 以上版本中的彈出式即時路線導航通知。
- 修正在建立
NavigationView
或NavigationFragment
前要求路線未顯示的問題
1.3 版 (2017 年 11 月 7 日)
- 已將
onTrimMemory()
方法新增至NavigationView
。這個方法應由所含活動呼叫。 - 如果無法在指定的逾時期限內找到位置修正,
Navigator.setDestinations()
現在會傳回LOCATION_UNKNOWN
狀態。您可以使用RoutingOptions.locationTimeoutMs()
設定逾時。 - 現在可以使用
MarkerOptions.anchor()
設定自訂標記圖片的錨點。 NavigationMap
現在提供Projection
物件,可用於取得地圖可見的經緯度邊界,並將邊框間距納入考量- 現在可以使用
Navigator.setHeadsUpNotificationEnabled()
停用彈出式即時路線導航通知。 - 重新置中按鈕現在提供點按事件監聽器。您可以在
NavigationView
、NavigationFragment
和SupportNavigationFragment
上使用setOnRecenterButtonClickedListener()
方法進行設定。
1.2.6 版 (2017 年 10 月 25 日)
- 修正如果 OS 自動重新建立導航服務,可能發生的 NullPointerException。
- 如果以錯誤的順序呼叫特定生命週期方法 (例如對
onStart()
或onResume()
的連續呼叫),NavigationView
不會再擲回例外狀況。而是會記錄警告訊息。
版本 1.2.5 (2017 年 10 月 19 日)
- 已新增更完善的資訊方塊快取管理功能,方便您控管記憶體用量。
- 已修正在建立
NavigationView
或NavigationFragment
前呼叫Navigator.setDestinations()
時可能發生的當機問題。
版本 1.2.4 (2017 年 10 月 11 日)
- 修正在建立多個 NavigationView 時沒有 Navigator 時,可能發生的記憶體流失問題。
1.2.3 版 (2017 年 10 月 4 日)
- 修正生命週期錯誤,有時會導致我的位置標記消失。
- 修正了另一個可能遺失上車和下車事件的情況。
1.2.2 版 (2017 年 9 月 27 日)
- 改善延遲時間,可加快 API 初始化和呼叫
Navigator.setDestinations
的速度。
1.2.1 版 (2017 年 9 月 20 日)
- 已將
android:largeHeap="true"
新增至程式庫資訊清單。這項做法可減少 OutOfMemoryErrors 發生頻率,這是打造可靠的瀏覽體驗的必要措施。 - 提高記錄上車和下車事件的穩定性。
1.2 版 (2017 年 9 月 1 日)
- 如果不明裝置方向,地圖現在會以北方朝上總覽模式顯示,並顯示圓形「我的位置」標記。這在旅程開始時特別實用,透過告知使用者裝置尚未充分瞭解當下所面對的方式,協助他們熟悉自己。
- 交通事件資訊卡採用新的設計,並顯示在地圖底部 (而非先前位置)。
- 已更新位置監聽功能,確保可在 Android 8.0 Oreo (API 級別 26) 中正常運作。
- 修正在導航模式和非導航模式中,目的地標記轉譯方式不同的錯誤。
1.1.2 版 (2017 年 9 月 16 日)
- 提高記錄上車和下車事件的穩定性。
1.1.1 版 (2017 年 8 月 24 日)
- 修正在沒有網路連線的情況下重新轉送時發生的 IllegalStateException 錯誤。
- 修正地圖樣式在呼叫
Navigator.setDestinations()
前後的差異。
1.1 版 (2017 年 7 月 31 日)
- 修正錯誤:當應用程式傳送至背景時,
RoadSnappedLocationListener
有時無法正常運作。 - 修正啟動/停止導航時發生相機錯誤。
- 修正
Simulator.unsetUserLocation()
中無法正確重設位置的錯誤。
版本 1.0 (2017 年 7 月 5 日)
- 啟動 Navigation SDK。