實作預防分心駕駛的保護措施

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