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 ajudar a evitar a distração do motorista.

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

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

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

Para isso, use a API CarConnection e detecte se um smartphone está projetando em uma tela de carro. Se isso acontecer, 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 como "suppress" para evitar notificações que distraem.

Suprimir alarmes no carro

Os apps de música 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. Nem mesmo um alarme do seu app de música programado pelo usuário 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.

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

Processar anúncios de mídia

Por padrão, o Android Auto exibe 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 pode causar distração. 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());
}