A seleção do VIA ativo é feita pelo
ManageAssistActivity
em CarSettings. Esse fluxo é acionado pelo app PackageInstaller
, como parte
da seção "Aplicativos padrão" da tela "Configurações".
Figura 1. Apps padrão na tela "Configurações"
O VIA selecionado é exposto ao sistema de duas maneiras:
- Como parte do
RolesManager
serviço do sistema - Pelo
VoiceInteractionManagerService
peloAssistUtils
API interna.
É possível acessar uma lista de VIAs candidatos usando RolesManager
.
com o nome do papel android.app.role.ASSISTANT
.
Acionamento de hotword
O Android oferece alwaysOnHotwordDetector.
como uma abstração sobre a DSP do hardware. Isso oferece uma maneira conveniente de
associar um VoiceInteractionService
a um modelo de voz para que a energia esteja sempre ativada;
reconhecimento de voz. Esse é o fluxo de interação mais comum e conhecido, em que o usuário
solicitações para interagir com um aplicativo de voz (VA, na sigla em inglês) para iniciar uma conversa; Voz
sessões iniciadas dessa forma são identificadas com SHOW_SOURCE_ASSIST_GESTURE flag
.
Figura 2. Acionamento de hotword
Legenda Os serviços do sistema aparecem em azul claro, e os componentes VIA em verde.
Acionamento de PTT
Isso se aplica ao pressionamento longo ou curto de um botão físico. No AAOS, o PTT é gerenciado pela CarInputService. Em uma implementação padrão, esse serviço lida com eventos de entrada recebidos pela HAL do veículo e, no caso específico de detecção ela aplica a seguinte lógica aos eventos principais:
- Eventos PTT curtos (
KeyEvent.KEYCODE_VOICE_ASSIST
) são direcionados paraVoiceInteractionManagerService
para iniciar uma nova sessão de voz. - Eventos PTT longos são primeiro entregues a receptores de projeção (por exemplo, Android Auto ou CarPlay), para dispositivos conectados por Bluetooth e, por fim, para a rede local app.
As sessões iniciadas com esse fluxo são identificadas com SHOW_SOURCE_PUSH_TO_TALK
.
Figura 3. Acionamento de PTT
Para integrar um botão de controle de voz de hardware ao AAOS, consulte a integração Entrada de tecla automotiva.
Acionamento do recurso "Toque para falar" (ou botão de software)
Para acionar a interação por voz na interface do sistema, use o AssistUtil. Esta é uma API de sistema oculta que só pode ser usada por um pacote de apps do sistema, como a IU do sistema, que permite:
- Interagindo com
VoiceInteractionManagerService
para iniciar sessões de controle de voz. - Determine qual é o VIA selecionado.
Para apresentar dinamicamente o app VIA selecionado, a interface do sistema pode usar
RoleManager
e seguir as alterações no detentor da função para ROLE_ASSISTANT
.
Um exemplo de como implementar o acionamento de TTT pode ser encontrado em CarSystemUI, AssistantButton
.
Figura 4. Acionamento do recurso "Toque para falar"
Toque para ler (TTR, na sigla em inglês) do Assistente de voz
No Automotive, as notificações postadas na Central de notificações identificadas como NotificaçõesINBOX
ou INBOX_IN_GROUP
(por exemplo, mensagens SMS)
incluir um botão de ação "Reproduzir", que permite que o usuário tenha as notificações lidas em voz alta
pelo VIA selecionado e, opcionalmente, para responder por voz.
Figura 5. Notificações
Para mais informações sobre como implementar esse fluxo, consulte Identificador comandos de mensagens de texto.
Iniciar VIA no acesso rápido do carro
Como qualquer outro app, os VIAs podem incluir uma ou mais atividades da tela de início o manifesto. Cabe ao desenvolvedor do app e ao OEM aceitarem pré-instalar este aplicativo para decidir o que essas atividades fariam.
Importante: No Automotive, todas as atividades, incluindo
atividades, estão sujeitos a restrições de UX ao dirigir. Se a experiência que você quer
para ativar a partir de um ícone do inicializador deve estar disponível enquanto dirige, adicione-o ao
adicionar à lista de permissões (se for um OEM) ou anotar a atividade com distractionOptimized
.
metadados. Para mais informações, consulte
Diretrizes para distração do motorista.
DSP e HAL de áudio
Não deixe de conferir as diretrizes atualizadas sobre áudio sempre ativado simultâneo HAL de gravação e áudio na captura simultânea. O acesso a essas APIs pode ter um impacto significativo no desempenho da hotword. detecção, conforme explicado em Em resposta a hotwords.
Permissões
Conceder permissões com privilégios do sistema
Considerando que a permissão privilegiada não pode ser concedida pelo usuário, se um VIA precisar eles, os OEMs precisam pré-carregar o APK nas imagens do sistema e conceder essas permissões. explicitamente nos builds. Consulte Solicitar do Google Cloud.
Para isso, adicione ao projeto uma dependência da lista de permissões de privilégios:
Android.bp
android_app { ... required: ["privapp_allowlist_com.example.myvoicecontrol"], ... }
Adicione o arquivo de permissão da lista de permissões de privilégios do sistema ao yourdata/etc/car
pasta:
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>
Pré-concessões de permissões perigosas
Conforme indicado no
Solicitar
permissões, o VIA exige o consentimento do usuário para acessar determinadas funcionalidades. Alguns desses
são concedidas previamente para o VoiceInteractionService
padrão. Consulte
DefaultPermissionGrantPolicy.java
).
Para mais informações sobre permissões para gerenciadores padrão, consulte
Permissões
usada apenas em gerenciadores padrão. Também é possível conceder permissões previamente usando o default-permissions.xml
de configuração do Terraform. Para detalhes sobre
restrições relacionadas à pré-concessão de permissões, consulte a Seção 9 no do Android
Documento de definição de compatibilidade (CDD, na sigla em inglês).
Importante: Em todos os casos, apenas o VIA padrão teria essas permissões são pré-concedidas. Se o sistema tiver mais de um VIA pré-carregado, o VIA não padrão deve solicitar explicitamente as permissões ao usuário como parte do durante a configuração ou durante o primeiro uso.
Distribuição (pré-instalar e implantar atualizações)
Os VIAs pré-instalados precisam estar abaixo de /product/priv-apps
ou
/vendor/priv-apps
partições e pastas. Saiba mais sobre partições em Visão geral de partições e
Criar produto
partições diferentes).
No segundo caso, já que a partição do fornecedor pode ser atualizada separadamente do sistema, os aplicativos hospedados aqui não poderão acessar as APIs do sistema @hide. Dependendo da localização dos apps pré-instalados, as atualizações podem ser realizadas como um OTA (consulte atualizações por OTA) ou pelo app atualizações de uma app store.
Personalização
Como mencionado no Conceitos específicos para o setor automotivo, A consistência e a personalização da interface/UX são mais importantes no setor automotivo do que em qualquer outro formato. Para máxima interoperabilidade, o uso do AAOS A biblioteca Car UI é altamente recomendada. Essa biblioteca inclui componentes e recursos que podem ser integrados a aplicativos apps projetados para serem personalizados por OEMs. Dessa forma, é possível criar um único APK em um para que a interface possa ser personalizada de acordo com o design de cada modelo de carro.