از آنجایی که تلفن کاربر هنگام استفاده از Android Auto به بلندگوهای خودرو متصل است، باید اقدامات احتیاطی بیشتری برای جلوگیری از حواس پرتی راننده انجام دهید.
وقتی برنامههای رسانهای Android Auto را توسعه میدهید، برای به حداقل رساندن حواسپرتی راننده، محافظهای خاصی را اعمال کنید. این حفاظت ها عبارتند از:
جلوگیری از پخش خودکار صدا از طریق بلندگوهای خودرو، حتی برای آلارمهای زمانبندی شده توسط برنامه، برنامه شما.
مدیریت نحوه نمایش اعلانها هنگام تغییر برنامه بین موسیقی و تبلیغات، Android Auto.
برای دستیابی به این هدف، از CarConnection
API استفاده کنید تا تشخیص دهید که آیا گوشی به صفحه ماشین میتابد یا خیر. اگر چنین شد، آلارمها را غیرفعال کنید یا یک رابط کاربری تلفنی برای مدیریت آنها ارائه دهید. برای تبلیغات، کلید فراداده METADATA_KEY_IS_ADVERTISEMENT
را برای سرکوب اعلانهای حواسپرتی تنظیم کنید.
آلارم های خودرو را خاموش کنید
برنامههای رسانه Android Auto نباید پخش صدا را از طریق بلندگوهای خودرو شروع کنند، مگر اینکه کاربر پخش را مثلاً با فشار دادن دکمه پخش شروع کند. حتی یک هشدار برنامه ریزی شده توسط کاربر از برنامه رسانه شما نباید شروع به پخش موسیقی از طریق بلندگوهای خودرو کند.
برای برآورده کردن این الزام، برنامه شما میتواند از CarConnection
به عنوان سیگنال قبل از پخش هر صوتی استفاده کند. برنامه شما میتواند بررسی کند که آیا تلفن به صفحه ماشین میتابد یا خیر. LiveData
برای نوع اتصال مشاهده کنید. تأیید کنید که مقدار برابر با CONNECTION_TYPE_PROJECTION
است.
اگر تلفن کاربر در حال پخش است، برنامه های رسانه ای که از زنگ هشدار پشتیبانی می کنند باید یکی از این اقدامات را انجام دهند:
زنگ هشدار را غیرفعال کنید.
زنگ
STREAM_ALARM
را مجدداً پخش کنید و یک رابط کاربری بر روی صفحه تلفن برای غیرفعال کردن زنگ هشدار ارائه دهید.
رسیدگی به تبلیغات رسانه ای
بهطور پیشفرض، Android Auto هنگامی که فراداده رسانه در طول جلسه پخش صدا تغییر میکند، اعلانی را نشان میدهد. هنگامی که یک برنامه رسانه از پخش موسیقی به اجرای یک تبلیغ تغییر می کند، نمایش اعلان حواس کاربر را پرت می کند. برای جلوگیری از نمایش اعلان Android Auto، کلید فراداده رسانه METADATA_KEY_IS_ADVERTISEMENT
روی METADATA_VALUE_ATTRIBUTE_PRESENT
تنظیم کنید:
کاتلین
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())
}
}
جاوا
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());
}