Implementar salvaguardas de distração

Como o smartphone do usuário está conectado aos alto-falantes do carro enquanto o Android Auto é usado, tome outras precauções para evitar a distração do motorista.

Ao desenvolver apps de música para o Android Auto, implemente proteções específicas para minimizar a distração do motorista. Essas proteções incluem:

  • Impedir que o app reproduza áudio automaticamente pelos alto-falantes do carro, mesmo para alarmes programados pelo usuário.

  • Gerenciar como o Android Auto mostra notificações quando o app alterna entre músicas e anúncios.

Para fazer isso, use a API CarConnection para detectar se um smartphone está projetando a visualização na tela de um carro. Se estiver, desative os alarmes ou forneça uma interface no smartphone para gerenciá-los. Para anúncios, defina a chave de metadados METADATA_KEY_IS_ADVERTISEMENT para suprimir notificações que causam distração.

Suprimir alarmes no carro

Os apps de mídia do Android Auto não devem começar a tocar áudio pelos alto-falantes do carro, a menos que o usuário inicie a reprodução, por exemplo, pressionando o botão Tocar. Mesmo um alarme do seu app de música programado pelo usuário não pode começar a tocar música pelos alto-falantes do carro.

Para atender a esse requisito, o app pode usar CarConnection como sinal antes de reproduzir qualquer áudio. O app pode verificar se o smartphone está projetando a visualização na tela de um carro. Observe o LiveData para o tipo de conexão. Confirme se o valor é igual a CONNECTION_TYPE_PROJECTION.

Caso o smartphone do usuário esteja sendo projetado na tela do carro, os apps de música que oferecem suporte a alarmes precisam realizar uma destas ações:

  • Desativar o alarme.

  • Reproduzir o alarme STREAM_ALARM e fornecer uma interface na tela do smartphone para desativar o alarme.

Processar anúncios de mídia

Por padrão, o Android Auto mostra uma notificação quando os metadados de mídia são alterados durante uma sessão de reprodução de áudio. Quando um app de música muda da reprodução de música para a exibição de um anúncio, mostrar uma notificação distrai o usuário. Para impedir que o Android Auto mostre uma notificação, defina a chave de metadados de mídia METADATA_KEY_IS_ADVERTISEMENT como METADATA_VALUE_ATTRIBUTE_PRESENT:

Kotlin

import androidx.media.utils.MediaConstants

override fun onPlayFromMediaId(mediaId: String, extras: Bundle?) {
    MediaMetadataCompat.Builder().apply {
        if (isAd(mediaId)) {
            putLong(
                MediaConstants.METADATA_KEY_IS_ADVERTISEMENT,
                MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
        }
        // ...add any other properties you normally would.
        mediaSession.setMetadata(build())
    }
}

Java

import androidx.media.utils.MediaConstants;

@Override
public void onPlayFromMediaId(String mediaId, Bundle extras) {
    MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
    if (isAd(mediaId)) {
        builder.putLong(
            MediaConstants.METADATA_KEY_IS_ADVERTISEMENT,
            MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT);
    }
    // ...add any other properties you normally would.
    mediaSession.setMetadata(builder.build());
}