כשמשתמשים ב-Android Auto, הטלפון של המשתמש מחובר לרמקולים של המכונית, ולכן צריך לנקוט אמצעי זהירות נוספים כדי למנוע הסחת דעת של הנהג.
כשמפתחים אפליקציות מדיה ל-Android Auto, חשוב להטמיע אמצעי הגנה ספציפיים כדי לצמצם את הסחות הדעת של הנהגים. אמצעי ההגנה האלה כוללים:
האפליקציה שלך לא משמיעה אודיו באופן אוטומטי דרך הרמקולים של הרכב, גם לא עבור אזעקות שהמשתמשים הגדירו.
ניהול האופן שבו Android Auto מציג התראות כשהאפליקציה עוברת בין מוזיקה למודעות.
כדי לעשות את זה, משתמשים ב-API של CarConnection כדי לזהות אם הטלפון מוקרן למסך של רכב. אם כן, צריך להשבית את האזעקות או לספק ממשק משתמש בטלפון לניהול שלהן.
לגבי מודעות, מגדירים את מפתח המטא-נתונים 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:
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());
}