Karena ponsel pengguna terhubung ke speaker mobil saat menggunakan Android Auto, Anda harus mengambil tindakan pencegahan tambahan untuk meminimalkan gangguan bagi pengemudi.
Saat mengembangkan aplikasi media Android Auto, terapkan pengamanan khusus untuk meminimalkan gangguan pengemudi. Pengamanan ini mencakup:
Mencegah aplikasi Anda memutar audio secara otomatis melalui speaker mobil, bahkan untuk alarm yang dijadwalkan pengguna.
Mengelola cara Android Auto menampilkan notifikasi saat aplikasi Anda beralih antara musik dan iklan.
Untuk melakukannya, gunakan CarConnection
API untuk mendeteksi apakah ponsel memproyeksikan ke layar mobil. Jika ya, nonaktifkan alarm atau sediakan UI di ponsel untuk mengelolanya.
Untuk iklan, tetapkan kunci metadata METADATA_KEY_IS_ADVERTISEMENT
untuk menekan notifikasi yang mengganggu.
Menahan alarm di mobil
Aplikasi media Android Auto tidak boleh memulai pemutaran audio melalui speaker mobil kecuali jika pengguna memulai pemutaran dengan, misalnya, menekan tombol Putar. Bahkan alarm yang dijadwalkan pengguna dari aplikasi media pun tidak boleh mulai memutar musik melalui speaker mobil.
Untuk memenuhi persyaratan ini, aplikasi Anda dapat menggunakan CarConnection
sebagai sinyal sebelum memutar audio apa pun. Aplikasi Anda dapat memeriksa apakah ponsel
memproyeksikan ke layar mobil. Amati LiveData
untuk jenis koneksi.
Konfirmasi bahwa nilainya sama dengan CONNECTION_TYPE_PROJECTION
.
Jika ponsel pengguna sedang memproyeksikan, aplikasi media yang mendukung alarm harus melakukan salah satu tindakan berikut:
Menonaktifkan alarm.
Memutar ulang alarm
STREAM_ALARM
dan menyediakan UI pada layar ponsel untuk menonaktifkan alarm.
Menangani iklan media
Secara default, Android Auto menampilkan notifikasi saat metadata media berubah
selama sesi pemutaran audio. Saat aplikasi media beralih dari memutar musik
ke menjalankan iklan, menampilkan notifikasi akan mengganggu pengguna. Untuk
mencegah Android Auto menampilkan notifikasi, tetapkan kunci metadata media
METADATA_KEY_IS_ADVERTISEMENT
ke 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());
}