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