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_ALARMe 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());
}