시계 음성 어시스턴트는 빠르고 효율적인 이동 중 시나리오를 지원합니다. 웨어러블 기기의 음성 상호작용은 동적입니다. 즉, 사용자는 기기를 보지 않고도 손목에 대고 말하면서 응답을 기다릴 수 있습니다.
어시스턴트 앱 작업을 통해 Android 개발자는 Wear OS 앱을 Google 어시스턴트로 확장할 수 있으므로 사용자를 "Hey Google, ExampleApp에서 달리기 시작해 줘"와 같은 음성 명령으로 앱으로 빠르게 전달할 수 있습니다.
제한사항
Wear의 어시스턴트는 미디어 및 운동 추적 활동 상호작용을 지원합니다. 미디어 앱을 어시스턴트와 통합하는 방법에 관한 안내는 Google 어시스턴트 및 미디어 앱을 참고하세요. Wear OS 앱에서는 다음과 같은 건강/피트니스 BII가 지원됩니다.
작동 방식
앱 작업은 앱 기능을 어시스턴트로 확장하여 사용자가 음성으로 앱 기능에 빠르게 액세스할 수 있도록 합니다. 사용자가 어시스턴트에 앱을 사용하겠다고 표현하면 어시스턴트는 앱의 shortcuts.xml
리소스에서 앱에 등록된 앱 작업을 찾습니다.
앱 작업은 Android 기능 요소와 함께 shortcuts.xml
에 설명되어 있습니다.
기능 요소는 앱 기능의 시맨틱 설명인 내장 인텐트(BII)를 딥 링크 템플릿과 같은 처리 명령과 페어링합니다. Google Play Console을 사용하여 앱을 업로드하면 Google에서는 shortcuts.xml
에 선언된 기능을 등록하여 사용자가 어시스턴트에서 트리거하는 데 사용할 수 있도록 합니다.
위 다이어그램은 사용자가 독립형 앱에서 운동을 일시중지하는 것을 보여줍니다. 이후 단계는 다음과 같습니다.
- 사용자가 어시스턴트에 특정 웨어러블 앱을 음성으로 요청합니다.
- 어시스턴트는 요청을 선행 학습된 모델(BII)과 일치시키고 BII에서 지원하는, 쿼리에서 발견된 모든 매개변수를 추출합니다.
- 이 예에서 어시스턴트는 쿼리를
PAUSE_EXERCISE
BII에 일치시키고 운동 이름 매개변수 'hike'를 추출합니다. - 앱은 이 BII의
shortcuts.xml
기능 처리 정의를 통해 트리거됩니다. - 앱은 처리를 실행하여 운동을 일시중지합니다.
연결
앱 작업 개발은 Android 지원 기기 생태계에서 앱의 기능에 따라 달라집니다.
테더링: 웨어러블 앱이 전체 기능을 위해 모바일 앱에 종속되는 경우 시계를 통해 어시스턴트에 보낸 사용자 쿼리는 휴대기기에서 처리됩니다. 이 시나리오가 올바르게 작동하려면 앱 작업 처리 로직을 모바일 앱에 빌드해야 합니다.
테더링되지 않음: 웨어러블 앱이 모바일 앱과 별개로 작동하는 경우 어시스턴트는 시계에서 로컬로 사용자 쿼리를 처리합니다. 이러한 요청이 제대로 처리되려면 앱 작업 기능이 웨어러블 앱에 빌드되어야 합니다.
Wear에 음성 기능 추가
다음 단계에 따라 앱 작업을 Wear OS 앱과 통합하세요.
- 음성을 사용 설정할 인앱 기능을 해당하는 BII에 일치시킵니다.
기본 활동
AndroidManifest.xml
리소스에서 Android 바로가기 지원을 선언합니다.<!-- AndroidManifest.xml --> <meta-data android:name="android.app.shortcuts" android:resource="@xml/shortcuts" />
AndroidManifest.xml에
<intent-filter>
요소를 추가합니다. 이렇게 하면 어시스턴트가 딥 링크를 사용하여 앱 콘텐츠에 연결할 수 있습니다.shortcuts.xml을 만들어 BII의 처리 세부정보를 제공합니다.
capability
바로가기 요소를 사용하여 앱에서 지원하는 BII를 어시스턴트에 선언합니다. 자세한 내용은 기능 추가를 참고하세요.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>
해당하는 경우 앱의 기능과 콘텐츠를 나타내는 인라인 인벤토리를 사용하여 사용자 음성 변형 지원을 확장합니다.
<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>
수신되는 앱 작업 처리를 실행하도록 앱의 로직을 업데이트합니다.
//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 스튜디오용 Google 어시스턴트 플러그인을 참고하세요. 앱을 테스트하고 테스트 버전을 만들면 앱 작업 검토를 요청하고 배포할 수 있습니다. 일반적인 오류를 처리하는 방법에 관한 안내는 다음 권장사항을 참고하세요.
권장사항
어시스턴트와 앱을 통합할 때 다음 권장사항에 따라 긍정적인 사용자 환경을 만드세요.
햅틱 및 오디오 확인과 함께 해당 또는 관련 확인 화면을 표시하여 사용자 요청에 응답하세요. 요청을 성공적으로 처리하거나 오류를 알립니다.
기본 품질 | 고품질 | 최고품질 |
---|---|---|
|
|
|
일반적인 오류 및 해결 방법
다음 오류 사례에는 다음과 같은 권장되는 앱 ConfirmationActivity
메시지를 사용하세요.
오류 사례 | 사용자 상호작용 예 | 앱 응답 |
---|---|---|
이미 진행 중인 활동임 |
"ExerciseName 시작" "ExerciseName 재개" |
오류 표시: 이미 진행 중인 활동임' |
시작된 활동 없음 | "ExerciseName 일시중지/중지" | 오류 표시: '시작된 활동 없음' |
활동 유형 불일치 | 진행 중인 활동과 다른 운동 유형인 'ExerciseName' 일시중지/중지' | 오류 표시: '활동 유형 불일치' |
로그인 오류 | 사용자가 앱에 로그인하지 않았을 때 '내 ExerciseName 시작' | 햅틱을 재생하여 사용자에게 알리고 로그인 화면으로 리디렉션합니다. |
권한 오류 | 사용자에게 요청한 활동을 시작할 권한이 없습니다. | 햅틱을 재생하여 사용자에게 알리고 권한 요청 화면으로 리디렉션합니다. |
센서 문제 | 사용자가 기기 설정에서 위치 서비스를 사용 중지했습니다. |
햅틱을 재생하여 사용자에게 알리고 센서 오류 화면을 표시합니다. 다음 단계(선택사항):
|