Flujos de integración

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.

Apps predeterminadas en la pantalla Configuración

Figura 1: Apps predeterminadas en la pantalla Configuración

El VIA seleccionado se expone al sistema de dos maneras:

  1. Como parte de RolesManager servicio de sistema
  2. Desde la VoiceInteractionManagerService hasta la AssistUtils 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.

Activación de palabra clave

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 a VoiceInteractionManagerService 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.

Activación de PTT

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.

Activación de Presionar para hablar

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 de INBOX 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.

Notificaciones

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.