La selección del VIA activo se realiza
ManageAssistActivity
en CarSettings. La app PackageInstaller
activa este flujo como parte
de la sección Apps predeterminadas de la pantalla Configuración.
Figura 1: Apps predeterminadas en la pantalla Configuración
El VIA seleccionado se expone al sistema de dos maneras:
- Como parte de
RolesManager
servicio de sistema - Desde la
VoiceInteractionManagerService
hasta laAssistUtils
API interna.
Puedes obtener una lista de las VIA de los candidatos mediante RolesManager
.
con el nombre de rol android.app.role.ASSISTANT
.
Activación de palabra clave
Android proporciona alwaysOnHotwordDetector
como una abstracción sobre
la DSP de hardware. Esto proporciona una forma conveniente de
Asocia un VoiceInteractionService
a un modelo de voz para el modo siempre activo de bajo consumo
reconocimiento de voz. Este es el flujo de interacción más común y conocido, en el que el usuario
solicitudes para interactuar con una aplicación de voz (VA) y así iniciar una nueva conversación. Voz
las sesiones que se inician de esta manera se identifican con SHOW_SOURCE_ASSIST_GESTURE flag
.
Figura 2: Activación de palabra clave
Leyenda. Los servicios del sistema aparecen en celeste, los componentes VIA en verde.
Activación de PTT
Esto se aplica a la pulsación prolongada o corta de un botón de hardware. En AAOS, las PTT son manejadas por CarInputService En una implementación predeterminada, este servicio controla eventos de entrada recibidos a través de la HAL del vehículo y, en el caso particular de los mensajes de voz interacción, aplica la siguiente lógica a los eventos clave:
- Los eventos PTT cortos (
KeyEvent.KEYCODE_VOICE_ASSIST
) se dirigen aVoiceInteractionManagerService
para iniciar una nueva sesión de voz. - Los eventos PTT largos se envían directamente a los receptores de proyección (por ejemplo, Android Auto o CarPlay), luego a dispositivos conectados por Bluetooth y, por último, al VIA local .
Las sesiones que se inician a usar este flujo se identifican con SHOW_SOURCE_PUSH_TO_TALK
.
Figura 3: Activación de PTT
Para integrar un botón de control por voz de hardware en AAOS, consulta la integración de Automotive Key Input.
Activación de Presionar para hablar (o botón de software)
La activación de la interacción de voz desde la IU del sistema se realiza mediante AssistUtil. Esta es una API de sistema oculta que solo la pueden usar apps del sistema agrupadas, como la IU del sistema que permite lo siguiente:
- Interactúando con
VoiceInteractionManagerService
para iniciar sesiones de control por voz. - Determine cuál es el VIA seleccionado actualmente.
Para presentar dinámicamente la app seleccionada mediante el VIA, la IU del sistema puede usar
RoleManager
y seguir los cambios en el titular del rol de ROLE_ASSISTANT
.
Puedes encontrar un ejemplo de cómo implementar la activación de TTT en CarSystemUI, AssistantButton
.
Figura 4: Activación de Presionar para hablar
Función Presionar para leer (TTR) del asistente de voz
En Automotive, las notificaciones publicadas en el Centro de notificaciones identificadas como Notificaciones deINBOX
o INBOX_IN_GROUP
(por ejemplo, mensajes SMS)
Incluir un botón de acción de Reproducir, que permite al usuario hacer que se lean las notificaciones en voz alta
por el VIA seleccionado y, opcionalmente, responder por voz.
Figura 5: Notificaciones
Para obtener más información sobre cómo implementar este flujo, consulta Identificador comandos de mensajería.
Iniciar VIA desde el selector de autos
Como cualquier otra aplicación, las VIA pueden incluir una o más actividades de selector en su manifiesto. Depende del desarrollador de la app y del OEM aceptar las preinstalar esta app para decidir qué harían estas actividades.
Importante. En la industria automotriz, todas las actividades, incluido el sistema
están sujetos a restricciones de UX mientras se conduce. Si la experiencia que quieres
para habilitar desde un ícono de selector deben estar disponibles mientras conduces, o bien, agrégalo al
lista de entidades permitidas (si eres un OEM) o anota la actividad con distractionOptimized
metadatos. Para obtener más información, consulta
Lineamientos sobre distracción del conductor.
DSP y HAL de audio
Asegúrate de revisar los lineamientos actualizados sobre el audio siempre activo y simultáneo. grabación y la HAL de audio en Captura simultánea. El acceso a estas APIs puede tener un impacto significativo en el rendimiento de la palabra clave detección, como se explica en Respondieron a palabras clave.
Permisos
Otorga permisos con privilegios del sistema
Dado que el usuario no puede otorgar permisos con privilegios, si un VIA necesita alguno de los OEM, deben precargar sus APK en las imágenes del sistema y otorgar esos permisos de forma explícita en sus compilaciones. Consulta Solicitar permisos.
Para ello, agrega una dependencia de lista de privilegios permitidas a tu proyecto:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Agrega el archivo de permisos de la lista de entidades permitidas con privilegios del sistema a yourdata/etc/car
carpeta:
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>
Otorgamientos previos de permisos peligrosos
Como se indica en
Solicitar
permisos, el VIA requiere el consentimiento del usuario para acceder a ciertas funcionalidades. Algunos de estos
los permisos se otorgan de forma previa al VoiceInteractionService
predeterminado (consulta
DefaultPermissionGrantPolicy.java
).
Para obtener más información sobre los permisos para los controladores predeterminados, consulta
Permisos
solo se usan en controladores predeterminados. También es posible otorgar previamente permisos con default-permissions.xml
.
de Terraform. Para obtener detalles
restricciones con respecto a la concesión previa de permisos, consulta el Artículo 9 en el Centro de ayuda de Android
Documento de definición de compatibilidad (CDD).
Importante. En todos los casos, solo el VIA predeterminado tendría se otorgan estos permisos de forma previa. Si el sistema tiene precargado más de un VIA, el VIA no predeterminado debe solicitar explícitamente permisos al usuario como parte del su configuración o durante el primer uso.
Distribución (preinstalación y actualizaciones)
Los VIA preinstalados deben ser inferiores a /product/priv-apps
o
Particiones y carpetas de /vendor/priv-apps
(obtén más información sobre particiones en la Descripción general de las particiones y
Crear producto
particiones).
En el segundo caso, dado que la partición del proveedor podría actualizarse por separado desde el sistema, las apps alojadas aquí no podrán acceder a las APIs del sistema @hide. Según la ubicación de las apps preinstaladas, es posible que se realicen actualizaciones como OTA (consulta Actualizaciones OTA) o a través de la app actualizaciones de una tienda de aplicaciones.
Personalización
Como se menciona en Conceptos específicos de la industria automotriz, La coherencia y la personalización de la IU/UX son más importantes en la industria automotriz que en cualquier otro factor de forma. Para obtener la máxima interoperabilidad, el uso del AAOS Se recomienda la biblioteca de IU del vehículo. Esta biblioteca incluye componentes y recursos que se pueden integrar en la industria automotriz apps diseñadas para ser personalizadas por OEM. De esta manera, se puede compilar un solo APK de manera tal que la IU pueda personalizarse según el diseño de cada modelo de automóvil.