設定即時中斷
即時中斷功能會提醒使用者路線上的中斷情形,並允許使用者回報及驗證遇到的中斷情形。例如車禍、交通壅塞、警察和測速照相機位置、施工、車道封閉,以及特定天氣狀況。本頁面說明即時中斷功能和設定選項,包括使用自訂導覽使用者介面的應用程式注意事項。
即時中斷功能
Navigation SDK 包含下列即時中斷功能,可做為核心導航體驗的一部分:這些功能預設為啟用,且可供設定。以下各節將進一步說明這些功能和可用的設定選項。
路線沿途的互動式中斷通知
應用程式顯示路線時 (無論是路線總覽或導航期間),路線上出現的任何中斷情形都會以標註形式顯示。附註會顯示圖示,指出中斷類型。

您可以使用 setTrafficPromptsEnabled
控制路線沿途的干擾標註顯示方式,這項設定也會控制使用者接近干擾時自動顯示的快訊。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
使用者輕觸標註時顯示中斷詳細資料
使用者輕觸標註即可顯示資訊卡,查看更多中斷資訊,包括中斷類型、上次回報時間,以及在某些情況下,可選擇是否要投票表決中斷情形是否仍然存在。資訊卡有兩種,顯示哪一種取決於使用者是否處於導航狀態,且每種資訊卡的設定選項各不相同。
在開始導航前,路徑總覽會顯示資訊卡
使用者在開始導航前輕觸路線總覽中的標註時,系統會顯示資訊卡,提供更多中斷資訊。

您可以透過 setTrafficIncidentCardsEnabled
,控管使用者是否能輕觸路線總覽中的中斷通知,進一步顯示資訊。
// Using the SupportNavigationFragment mNavFragment.setTrafficIncidentCardsEnabled(true); // Using the NavigationView navigationView.setTrafficIncidentCardsEnabled(true);
導航期間的標註資訊卡
如果導航期間路線上出現中斷標註,使用者可以輕觸標註來顯示資訊卡,當中會提供中斷的詳細資訊,包括中斷類型和最近一次回報時間,以及用來投票表決中斷是否仍然存在的按鈕。使用者提交的票數會由 Google 處理,並可能顯示在地圖上,供其他 Google 地圖和 Navigation SDK 使用者查看,也會用於判斷是否繼續顯示中斷情形。

您可以使用 setTrafficPromptsEnabled
控制導航期間的干擾標註顯示和輕觸功能,這項屬性也會控制路線沿途的標註顯示,以及使用者接近干擾時的自動警示顯示。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
在導航期間,系統會自動發出中斷警報,並提供投票功能
在導覽期間,如果使用者接近路線上的中斷點,系統會顯示提示,提供中斷點的相關資訊,以及用於投票表決中斷點是否仍然存在。Google 會處理使用者提交的票選結果,並可能在 Google 地圖和 Navigation SDK 中向其他使用者顯示,以及用來判斷是否要繼續顯示中斷資訊。

您可以使用 setTrafficPromptsEnabled
設定在導覽期間顯示的快訊提示,這項設定也會控管路線沿途的標註顯示方式。
// Using the SupportNavigationFragment mNavFragment.setTrafficPromptsEnabled(true); // Using the NavigationView navigationView.setTrafficPromptsEnabled(true);
在導航期間回報中斷情形
在導航模式啟用期間,導航使用者介面會顯示按鈕,方便使用者回報路線上的新狀況。使用者輕觸按鈕後,系統會顯示可回報的干擾類型選單。Google 會處理使用者提交的檢舉內容,並可能在地圖上顯示,供其他 Google 地圖和 Navigation SDK 使用者查看。


顯示或隱藏標準報表按鈕
您可以使用 setReportIncidentButtonEnabled
在導覽期間設定標準報表按鈕的顯示狀態。
// Enables the incident reporting button to show in situations where incident // reporting is possible. // Using the SupportNavigationFragment mNavFragment.setReportIncidentButtonEnabled(true); // Using the NavigationView navigationView.setReportIncidentButtonEnabled(true);
新增自訂檢舉按鈕
您可以將自訂中斷回報按鈕新增至導覽 UI,取代標準中斷回報按鈕。使用者點選自訂按鈕時,您可以呼叫 showReportIncidentsPanel
方法,觸發顯示檢舉選單。新增自訂檢舉按鈕前,請先呼叫 isIncidentReportingAvailable
,確認應用程式處於有效導覽狀態,且使用者位於已啟用檢舉功能的國家/地區。如果任一條件不成立,系統就不會顯示回報選單。
Button customReportIncidentButton = findViewById(R.id.custom_reporting_button); // Check if reporting is available before displaying your button customReportIncidentButton.setVisibility( navigationView.isReportingAvailable ? View.VISIBLE : View.GONE); // Trigger the reporting flow if the button is clicked customReportIncidentButton.setOnClickListener(v -> navigationView.showReportIncidentsPanel());
使用自訂導覽 UI
如果 Navigation SDK 的實作項目包含自訂 UI 元素,您必須考量即時中斷元素,以免發生衝突。
檢舉按鈕位置
根據預設,中斷回報按鈕會顯示在地圖的底部/尾端角落,如果書寫方向為從左至右,按鈕會顯示在右側;如果書寫方向為從右至左,按鈕會顯示在左側。如要移動檢舉按鈕,為自訂 UI 元素騰出空間,請新增BOTTOM_END_BELOW
或 FOOTER
自訂控制項,將按鈕在畫面上的位置往上推。在自訂控制項中放置自己的自訂 UI,也能確保 Navigation SDK 顯示的任何提示,都會正確疊加在顯示的自訂 UI 元素上。如果無法使用自訂控制項,請使用 Prompt Visibility API 管理潛在的 UI 衝突。
提示瀏覽權限 API (實驗性)
Prompt Visibility API 可讓您新增監聽器,在 Navigation SDK UI 元素即將顯示前和移除後立即接收回呼,避免 Navigation SDK 產生的 UI 元素與您自己的自訂 UI 元素發生衝突。您可以接收即時中斷元素的回呼,包括資訊卡、提示和中斷回報選單,以及 Navigation SDK 產生的其他通知。// Sample listener val listener: PromptVisibilityChangedListener = { isVisible -> if (isVisible) { customFab.visibility = false customFooter.visibility = false moveSomeOtherThingsAround() } else { customFab.visibility = true customFooter.visibility = true moveSomeThingsBackToWhereTheyWereBefore() } } // Inside onCreate() navigationView.addPromptVisibilityChangedListener(listener) // Inside onDestroy() navigationView.removePromptVisibilityChangedListener(listener)