整合流程

系統會透過以下方式選取使用中的 VIA: ManageAssistActivity 。「PackageInstaller」應用程式會觸發這個流程。 「設定」畫面的「預設應用程式」部分。

設定畫面上的預設應用程式

圖 1. 設定畫面上的預設應用程式

所選 VIA 可透過以下兩種方式公開:

  1. RolesManager」的一部分 系統服務
  2. VoiceInteractionManagerService 透過 AssistUtils 提供 內部 API。

您可以使用 RolesManager 取得候選 VIA 清單 角色名稱為「android.app.role.ASSISTANT」。

啟動字詞觸發條件

Android 提供 AlwaysOnHotwordDetector 作為硬體 DSP 的抽象層方便您輕鬆管理 將「VoiceInteractionService」與語音模型建立關聯,藉此啟用「一律開啟低功耗」模式的語音模型 以及語音辨識功能,這是最常見且廣為人知的互動流程,亦即使用者在 要求與語音應用程式 (VA) 互動,以發起新的對話。語音 透過這種方式開始的工作階段,均由 SHOW_SOURCE_ASSIST_GESTURE flag 識別。

啟動字詞觸發條件

圖 2. 啟動字詞觸發條件

圖例。系統服務會以淺藍色顯示,而 VIA 元件則以綠色顯示。

PTT 觸發

長按硬體按鈕時則適用此原則。在 AAOS 中,PTT 會由以下實體處理 CarInputService: 在預設實作中,這項服務會處理 也就是透過車輛 HAL 接收的輸入事件 互動時,會將下列邏輯套用至重要事件:

  • 會將短時間 PTT 事件 (KeyEvent.KEYCODE_VOICE_ASSIST) 導向 VoiceInteractionManagerService即可啟動新的語音工作階段。
  • 系統會先將 PTT 事件交給投影接收器 (例如 Android Auto) 或 CarPlay),接著連線至藍牙連線裝置,最後連上當地的 VIA 應用程式。

透過這個流程啟動的工作階段可從「SHOW_SOURCE_PUSH_TO_TALK」識別。

PTT 觸發

圖 3. PTT 觸發

如要將硬體語音控制按鈕與 AAOS 整合,請參閱 Automotive Key Input 整合功能。

觸控語音觸發 (或軟體按鈕)

從系統 UI 觸發語音互動可使用 AssistUtil 來進行。 這是隱藏的系統 API,只有 隨附的系統應用程式 (例如系統 UI),可實現以下目標:

  • 正在與「VoiceInteractionManagerService」互動,以便啟動語音控制工作階段。
  • 判斷目前所選的 VIA。

如要動態顯示所選 VIA 應用程式,系統 UI 可以使用 RoleManager 並追蹤「ROLE_ASSISTANT」的角色持有人變更。 您可以在 CarSystemUI (AssistantButton) 中找到如何實作 TTT 觸發條件的範例。

輕觸即可觸發

圖 4. 輕觸即可觸發

語音助理觸控朗讀 (TTR)

在 Automotive 中,發布至通知中心的通知會標示為 INBOXINBOX_IN_GROUP 通知 (例如簡訊) 加入播放動作按鈕,可讓使用者大聲朗讀通知 所選 VIA,並且選擇性地透過語音回覆。

通知

圖 5. 通知

如要進一步瞭解如何實作此流程,請參閱 帳號代碼 訊息指令

透過車輛啟動器啟動 VIA

如有任何其他應用程式,VIA 可以包含一或多個啟動器活動 資訊清單。視應用程式開發人員和原始設備製造商 (OEM) 而定 預先安裝這個應用程式,藉此決定這些活動的用途。

重要事項:在 Automotive 中的所有活動,包括系統活動 活動必須遵守使用者體驗限制。如果您想體驗 您必須在行車期間使用啟動器圖示啟用功能,只要將圖示新增至 許可清單 (如果您是原始設備製造商) 或使用 distractionOptimized 為活動加上註解 中繼資料。若需更多資訊,請參閲 駕駛人分心等級指南

DSP 和音訊 HAL

請務必參閱新版指南,瞭解持續開啟音訊功能的規範 錄製及音訊 HAL。 存取這些 API 可能會大幅影響啟動字詞的效能 方法請參閱 正在回應 啟動字詞

權限

授予系統特殊權限

由於 VIA 需要任何 原始設備製造商 (OEM) 必須在系統映像檔中預先載入 APK,然後授予這些權限 明確地進行部署詳情請見 要求 權限

方法是為專案新增權限許可清單依附元件:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

將系統權限許可清單權限檔案新增至 yourdata/etc/car 資料夾:

vendor/…/data/etc/car/Android.bp

prebuilt_etc {
    name:privapp_allowlist_com.example.myvoicecontrol",
    sub_dir: "permissions",
    src: "com.example.myvoicecontrol.xml",
    filename_from_src: true,
}

vendor/…/data/etc/car/com.example.myvoicecontrol.xml

<?xml version="1.0" encoding="utf-8"?>
<permissions>
    <privapp-permissions package="com.android.car.voicecontrol">
        <permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
    </privapp-permissions>
</permissions>

預先授予危險權限

要求 權限,VIA 須取得使用者同意,才能存取特定功能。以下介紹 權限會預先授予預設的 VoiceInteractionService (請參閱 DefaultPermissionGrantPolicy.java)。 如要進一步瞭解預設處理常式的權限,請參閱 權限 僅適用於預設處理常式。您也可以使用 default-permissions.xml 預先授予權限 設定檔如要進一步瞭解 預先授予權限的相關限制,請參閱 Android 裝置第 9 節 相容性定義說明文件 (CDD)。

重要事項:在所有情況下,只有預設的 VIA 會有 預先授予這些權限如果系統有多個預先載入的 VIA 非預設的 VIA 必須明確在 或在初次使用期間 保留所有的資料

發布 (預先安裝及部署更新)

預先安裝的 VIA 必須住在 /product/priv-apps 以下或 /vendor/priv-apps 分區和資料夾 (如要進一步瞭解分區,請參閱分區總覽以及 打造產品 分區)。

在第二種情況下,因為供應商分區可以個別更新 如此一來,此處代管的應用程式將無法存取 @hide 系統 API。 視預先安裝的應用程式的位置而定,更新作業可能會執行 做為 OTA (請參閱 OTA 更新) 或透過應用程式使用 從應用程式商店下載更新

自訂

如先前所述 汽車業專屬概念 比起任何其他板型規格,使用者介面/使用者體驗一致性和自訂功能更重要。 為了獲得最高的互通性,請使用 AAOS 強烈建議您使用 Car UI 程式庫。 這個程式庫包含可整合至車用的元件和資源 只有原始設備製造商 (OEM) 可以自訂的應用程式。如此一來,即可在 這樣就能根據各個車款的設計自訂 UI。