通知功能可在應用程式處於閒置狀態時,為駕駛人提供簡短且即時的應用程式事件相關資訊。通知可以顯示在通知中心,部分通知也可以顯示在螢幕上做為抬頭通知。如要為 Android Automotive OS 建立通知,請使用為其他裝置建立通知時採用的相同 NotificationBuilder
API。不過,為了確保駕駛人的安全並盡量減少干擾,部分 API 方法和類別會受到限制,行為也會不同。
車輛專用通知功能的差異
為了建立免受干擾的安全行車環境,Android Automotive OS 的通知與其他裝置上的通知具有以下差異:
- 簡化的使用者互動程序
- 根據行駛狀態限制使用者體驗
簡化的使用者互動程序
為確保駕駛人能專心注意路況,車輛專用通知具備簡化的使用者互動模型,特色如下:
- 沒有複雜的控制項
- 通知不允許使用複雜的控制項,例如輕觸來展開通知、長按通知以使用其他選項,或是使用基於滑動長度手勢的控制項。
- 通知音效
- 通知只會在觸發抬頭通知時播放音效。
Android Automotive OS 會自動在所有與汽車相容的訊息通知中,加入「播放」按鈕和「靜音」按鈕。
- 播放:運用使用者的預設數位助理 (例如 Google 助理) 或車輛的預設文字轉語音系統,為駕駛人讀出通知。
靜音:在剩餘的行駛時間內,禁止抬頭通知顯示對話中的任何後續訊息。來自設為靜音的對話的訊息通知仍會顯示在通知中心,而駕駛人也可以透過通知中心將對話取消靜音。
- 簡化的通知顯示選項
系統不支援
RemoteViews
和自訂內容檢視畫面。此外,系統也不支援下列通知樣式:BigPictureStyle
BigTextStyle
InboxStyle
如果應用程式使用上述其中一種通知樣式將通知傳送至 Android Automotive OS,則只會顯示摘要文字。
- 簡化的通知管道管理方式
為減少 Automotive 裝置上大量繁複的管理工作,Android Automotive OS 不支援通知管道和相關的 UI 功能提示。
根據行駛狀態限制使用者體驗
Android Automotive OS 提供使用者體驗限制引擎。汽車製造商可利用這個引擎,根據車輛的行車狀態透過下列方式限制通知:
- 依據特定字元長度截斷通知字串
- 隱藏
CATEGORY_MESSAGE
通知的訊息摘要 - 限制通知中心可顯示的通知數量
支援的資源類型
根據預設,Android Automotive OS 僅支援部分可用於在其他裝置上接收通知的資源類型,其中包括下列資源類型:
- 可繪項目
- 圖示
- 圖片
訊息通知的相容性需求
為了提供一致且最少干擾的使用者體驗,Android Automotive OS 的訊息通知設有特殊需求。
訊息通知必須符合下列需求,才能視為與汽車相容:
- 屬於
CATEGORY_MESSAGE
類別。 - 使用
Notification.MessagingStyle
樣式。 - 其中僅包含未讀訊息。
具有標示為已讀的
Action
,且符合下列需求條件:- 語意動作須設為
Action.SEMANTIC_ACTION_MARK_AS_READ
。 Action
須指明通知在觸發時不會顯示任何使用者介面。
- 語意動作須設為
如果通知含有回覆
Action
,則Action
須符合下列需求:- 語意動作須設為
Action.SEMANTIC_ACTION_REPLY
。 Action
須指明通知在觸發時不會顯示任何使用者介面。Action
須包含單一RemoteInput
。
- 語意動作須設為
通知中心
即使有些通知同時會以抬頭通知的形式觸發,幾乎所有通知仍會顯示在通知中心。在行車期間,通知會保留在通知中心。
駕駛人可在通知中心與通知互動。 視汽車製造商而定,駕駛人可透過下列一或兩種方式存取通知中心:
- 從螢幕頂端向下滑動,類似於其他裝置的通知導覽匣。
- 輕觸系統介面中的按鈕。
已分組的通知
通知中心內的相關通知會自動分組歸類,就像在其他裝置的通知匣中一樣。不過,當駕駛人在通知中心輕觸特定群組的摘要時,系統不會啟動 PendingIntent
,而是展開群組來顯示該群組的全部通知。
通知中心沒有顯示的通知
通知中心不會顯示下列通知:
Media playback
通知。播放中媒體的相關資訊會由 Android Automotive OS 收集,並會顯示在使用者介面的專屬位置。請注意,必須使用非空值權杖呼叫setMediaSession
,系統才會將通知視為媒體播放。CATEGORY_NAVIGATION
專用的即時路線導航通知。- 前景服務通知,適用於具備系統特殊權限的應用程式,以及使用重要性等級低於
IMPORTANCE_DEFAULT
的平台金鑰簽署的應用程式。
抬頭通知
抬頭通知會以通知資訊卡的形式顯示在螢幕頂端。由於抬頭通知會引起駕駛人注意,因此應用程式應該只在資訊對行駛至關重要、具時效性,且可做為行動的依據時,才觸發抬頭通知。只有特定類別的通知能夠觸發抬頭通知。
汽車製造商可決定是否允許在通知中心開啟時顯示抬頭通知。
應用程式如何觸發抬頭通知
視應用程式是否擁有系統特殊權限而定,觸發抬頭通知的需求條件各有不同。
- 具有系統特殊權限的應用程式,以及使用平台金鑰簽署的應用程式
- 應用程式可將通知管道重要性設為
IMPORTANCE_HIGH
以上等級,藉此觸發抬頭通知。 - 所有其他應用程式
應用程式可將通知管道重要性設為
IMPORTANCE_HIGH
以上等級,並確保通知屬於下列其中一個類別,藉此觸發抬頭通知:
抬頭通知的運作流程
應用程式觸發抬頭通知後,通知會立即顯示在車輛的螢幕上。如果駕駛人未採取任何行動,抬頭通知會在八秒後自動關閉,但下列情況除外:
某些來電的抬頭通知無法關閉,且抬頭通知會持續顯示,直到駕駛人接聽來電或通話終止。通知必須符合下列條件,系統才會認定為不可關閉的來電專用抬頭通知:
- 屬於
CATEGORY_CALL
- 設定全螢幕意圖
- 使用
setOngoing()
方法標示為持續執行
- 屬於
如果應用程式在八秒的時間範圍內更新通知,系統就會持續顯示抬頭通知。
除 CATEGORY_NAVIGATION
通知外,抬頭通知關閉後,皆會顯示在通知中心內。
車輛專用的通知 API 異動和限制
本節將彙整各個類別的差異,這些類別在通知 API 的行為表現上有所不同,或是針對 Android Automotive OS 設有限制。
Notification.Builder
表 1 和表 2 說明 Notification.Builder
類別中的 API 異動和限制。
表 1. Notification.Builder
的公用方法異動
公用方法 | 效果 | 說明 | ||
---|---|---|---|---|
|
條件式免人工管理 | Notification.MessagingStyle 通知必須新增相容性需求中指定的動作。系統不會將任何其他新增的動作轉譯為通知按鈕。 |
||
|
免人工管理 | 不支援 RemoteViews 和自訂內容檢視畫面。 |
||
|
免人工管理 | 不支援通知標記。 | ||
| 免人工管理 | 不支援倒數計時器。 | ||
setColorized() |
限制條件已變更 |
平台簽署的應用程式:可設定;預設為允許。 具有系統特殊權限的應用程式:由平台設定;預設為不允許。 所有其他應用程式:由平台設定;預設為不允許。 |
||
setFullScreenIntent() |
行為已變更 | 不會自動啟動意圖。 | ||
setLargeIcon() |
行為已變更 | 大型圖示會顯示在通知的右側。 | ||
setLights() |
免人工管理 | Android Automotive OS 裝置沒有 LED 指示燈。 | ||
setOngoing() |
行為已變更 |
如果通知也觸發抬頭通知,則行為會有所不同。 只有在抬頭通知是針對來電的情況下, |
免人工管理 | 不支援私人模式。 |
setSettingsText() |
免人工管理 | 通知不支援連結至應用程式設定的預設用途,而是由駕駛人透過應用程式存取應用程式設定。 | ||
setTicker() |
免人工管理 | 不支援資訊列文字。 |
表 2. Notification.Builder
的巢狀類別異動
巢狀類別 | 效果 | 說明 |
---|---|---|
|
未使用 | 只會顯示摘要文字。系統不支援這些樣式的詳細通知。 |
Notification.BubbleMetadata |
未使用 | 不支援對話框。 |
Notification.MediaStyle |
已隱藏 | 系統會隱藏這個樣式的通知。Android Automotive OS 會管理與媒體通知和播放相關的使用者介面互動。 |
Notification.MessagingStyle |
行為已變更 |
使用這種樣式的通知具有下列差異:
|
|
未使用 | 不支援擴展器。 |
Notification.Action.Builder
表 3 說明 Notification.Action.Builder
類別中的 API 異動和限制。
表 3. Notification.Action.Builder
的公用方法異動
公用方法 | 效果 | 說明 |
---|---|---|
公用建構函式 | 行為已變更 | 系統會忽略公用建構函式中指定的圖示。 |
addRemoteInput |
行為已變更 | 為了將駕駛人分心等級降到最低,數位助理 (例如 Google 助理) 會替使用者在訊息中插入回應,使用者則無法輸入訊息。 |
setAllowGeneratedReplies |
免人工管理 | 不支援智慧回覆。 |