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