適用於 Wear OS 的 Google 助理

透過智慧手錶語音助理,您可以隨時隨地快速有效處理大小事。穿戴式裝置上的語音互動屬於動態功能,也就是說,使用者可以直接對手錶說話,不必看著裝置等待回應。

有了 Google 助理應用程式動作,Android 開發人員就能將 Wear OS 應用程式擴充至 Google 助理,讓使用者透過語音指令快速操作應用程式,例如:「Ok Google,開始<範例應用程式> 上的跑步運動。」

限制

Wear 裝置上的 Google 助理支援媒體和健身追蹤活動的互動功能。如要瞭解如何整合媒體應用程式與 Google 助理,請參閱「Google 助理和媒體應用程式」。Wear OS 應用程式支援下列健康與健身內建意圖 (BII):

運作方式

應用程式動作會將應用程式功能延伸至 Google 助理,讓使用者可透過語音指令快速存取應用程式功能。使用者向 Google 助理表明想使用應用程式時,Google 助理會在應用程式的 shortcuts.xml 資源中,尋找應用程式註冊的應用程式動作。

shortcuts.xml 中會描述應用程式動作,並附上 Android 功能元素。功能元素會與內建意圖 (BII) 配對。內建意圖就是應用程式功能的語意說明,包含執行要求說明,例如深層連結範本。您使用 Google Play 管理中心上傳應用程式時,Google 會註冊 shortcuts.xml 中宣告的功能,讓使用者能從 Google 助理觸發這些功能。

應用程式動作流程

上圖顯示使用者在獨立應用程式中暫停運動,這個流程的步驟如下:

  1. 使用者針對特定穿戴式應用程式,向 Google 助理提出語音要求。
  2. Google 助理比對要求內容和預先訓練模型 (BII),在查詢中擷取 BII 支援的參數。
  3. 在此範例中,Google 助理會比對查詢 PAUSE_EXERCISE BII,並擷取運動名稱參數「hike」。
  4. 系統運用 shortcuts.xml 功能對這個 BII 的執行要求定義,觸發應用程式。
  5. 應用程式處理執行要求,暫停運動。

連線能力

根據應用程式在 Android 裝置生態系統中的功能,應用程式動作的開發作業會有所不同。

  • 共用網路:如果穿戴式應用程式必須搭配行動應用程式才能提供完整功能,則使用者透過手錶向 Google 助理發出的查詢會在行動裝置上執行。應用程式動作執行要求邏輯必須內建於行動應用程式,此情境才能正常運作。

  • 非共用網路:如果穿戴式應用程式不必仰賴行動應用程式就能運作,Google 助理會在手錶上執行使用者查詢。穿戴式應用程式必須內建應用程式動作功能,才能正確執行這些要求。

新增 Wear 語音功能

如要整合應用程式動作與 Wear OS 應用程式,請按照以下步驟操作:

  1. 比對要啟用語音控制的應用程式內功能和相對應的 BII
  2. 在主要活動 AndroidManifest.xml 資源中,宣告 Android 快速指令支援功能。

    <!-- AndroidManifest.xml -->
    <meta-data
        android:name="android.app.shortcuts"
        android:resource="@xml/shortcuts" />
    
  3. <intent-filter> 元素新增至 AndroidManifest.xml,讓 Google 助理使用深層連結連線到應用程式內容。

  4. 建立 shortcuts.xml,提供 BII 的執行要求詳細資料。您可以使用 capability 快速指令元素,向 Google 助理宣告應用程式支援的 BII。詳情請參閱「新增功能」。

  5. shortcuts.xml 中,為所選的 BII 導入功能。以下範例會示範 START_EXERCISE BII 的功能:

    <?xml version="1.0" encoding="utf-8"?>
    <!-- This is a sample shortcuts.xml -->
    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
      <capability android:name="actions.intent.START_EXERCISE">
        <intent
          android:action="android.intent.action.VIEW"
          android:targetPackage="YOUR_UNIQUE_APPLICATION_ID"
          android:targetClass="YOUR_TARGET_CLASS">
          <!-- Eg. name = "Running" -->
          <parameter
            android:name="exercise.name"
            android:key="name"/>
          <!-- Eg. duration = "PT1H" -->
          <parameter
            android:name="exercise.duration"
            android:key="duration"/>
        </intent>
      </capability>
    </shortcuts>
    
  6. 在適用情況下,請使用內嵌目錄擴充使用者語音變化支援功能,這類目錄可呈現應用程式中的功能和內容。

    <capability android:name="actions.intent.START_EXERCISE">
      <intent
        android:targetPackage="com.example.myapp"
        android:targetClass="com.example.myapp.ExerciseActivity">
        <parameter android:name="exercise.name" android:key="exercise" />
      </intent>
    </capability>
    
    <shortcut android:shortcutId="CARDIO_RUN">
      <capability-binding android:key="actions.intent.START_EXERCISE">
        <parameter-binding
          android:key="exercise.name"
          android:value="@array/run_names" />
        </capability-bindig>
    </shortcut>
    
  7. 更新應用程式邏輯,方便處理收到的應用程式動作執行要求。

    //FitMainActivity.kt
    
    private fun handleIntent(data: Uri?) {
        var actionHandled = true
        val startExercise = intent?.extras?.getString(START_EXERCISE)
    
        if (startExercise != null){
            val type = FitActivity.Type.find(startExercise)
            val arguments = Bundle().apply {
                putSerializable(FitTrackingFragment.PARAM_TYPE, type)
            }
            updateView(FitTrackingFragment::class.java, arguments)
        }
        else{
            showDefaultView()
            actionHandled = false
        }
        notifyActionSuccess(actionHandled)
    }
    

預覽、測試及發布應用程式

應用程式動作會提供審查及測試應用程式的工具,詳情請參閱「適用於 Android Studio 的 Google 助理外掛程式」。測試應用程式並建立測試版本後,您可以提出應用程式動作審查要求並進行部署。請參閱下列最佳做法,瞭解如何處理常見錯誤。

最佳做法

請按照以下建議的最佳做法,在整合應用程式與 Google 助理時提供良好的使用者體驗。

如要回應使用者要求,無論是在成功執行要求或提供錯誤訊息快訊時,都請顯示相應或相關的確認畫面,並搭配觸覺和音效回饋。

基本品質 良好品質 最佳畫質
  • 建立意圖,從活動啟動 ConfirmationActivity
  • 建立意圖,從活動啟動 ConfirmationActivity
  • 如要表示目前狀態,可以發出提示音「並」提供觸覺回饋。
  • 建立意圖,從活動啟動 ConfirmationActivity
  • 文字轉語音 (TTS) 和觸覺回饋,指出發生錯誤或成功。

常見錯誤和解決方法

若是以下錯誤情況,請使用下方建議的應用程式 ConfirmationActivity 訊息功能。

錯誤案例 使用者互動範例 應用程式回應
已在進行活動 「開始 <運動名稱>
「繼續 <運動名稱>
顯示錯誤訊息「已在進行活動」。
尚未開始活動 「暫停/停止 <運動名稱> 顯示錯誤訊息「尚未開始活動」。
活動類型不相符 「暫停/停止 <運動名稱>」,但提及的運動類型與正在進行的活動不同。 顯示錯誤訊息「活動類型不相符」。
登入錯誤 「開始 <運動名稱>」,但使用者未登入應用程式。 提供觸覺回饋提醒使用者,並重新導向至登入畫面。
權限錯誤 使用者不具備所需權限,無法開始進行要求的活動。 提供觸覺回饋提醒使用者,並重新導向至權限要求畫面。
感應器問題 使用者在裝置設定關閉了定位服務。 提供觸覺回饋提醒使用者,並顯示感應器錯誤畫面。後續步驟 (選用):
  • 在不啟用感應器追蹤功能的情況下開始活動,並通知使用者。
  • 要求取得使用者確認,在不啟用感應器追蹤功能的情況下開始活動。