ใช้การป้องกันสิ่งรบกวน

เนื่องจากโทรศัพท์ของผู้ใช้จะเชื่อมต่อกับลำโพงของรถยนต์เมื่อใช้ Android Auto คุณจึงต้องใช้มาตรการป้องกันเพิ่มเติมเพื่อป้องกันไม่ให้ผู้ขับเสียสมาธิ

เมื่อพัฒนาแอปสื่อสำหรับ Android Auto ให้ใช้มาตรการป้องกันที่เฉพาะเจาะจงเพื่อ ลดการรบกวนผู้ขับ มาตรการป้องกันเหล่านี้ ได้แก่

  • ป้องกันไม่ให้แอปเล่นเสียงผ่านลำโพงรถยนต์โดยอัตโนมัติ แม้ว่าจะเป็นการปลุกที่ผู้ใช้ตั้งเวลาไว้ก็ตาม

  • การจัดการวิธีที่ Android Auto แสดงการแจ้งเตือนเมื่อแอปสลับ ระหว่างเพลงกับโฆษณา

หากต้องการดำเนินการนี้ ให้ใช้ CarConnection API เพื่อตรวจหาว่าโทรศัพท์แสดงบนหน้าจอรถยนต์หรือไม่ หากเป็นเช่นนั้น ให้ปิดใช้การปลุกหรือระบุ UI ในโทรศัพท์เพื่อจัดการการปลุก สำหรับโฆษณา ให้ตั้งค่าMETADATA_KEY_IS_ADVERTISEMENTคีย์ข้อมูลเมตาเพื่อระงับ การแจ้งเตือนที่รบกวน

ปิดเสียงปลุกในรถ

แอปสื่อของ Android Auto ต้องไม่เริ่มเล่นเสียงผ่านลำโพงของรถ เว้นแต่ผู้ใช้จะเริ่มเล่นด้วยการกดปุ่มเล่น เป็นต้น แม้แต่การปลุกที่ผู้ใช้ตั้งเวลาจากแอปสื่อของคุณก็ต้องไม่เริ่มเล่นเพลง ผ่านลำโพงของรถ

แอปของคุณสามารถใช้ CarConnection เป็นสัญญาณก่อนเล่นเสียงใดๆ เพื่อให้เป็นไปตามข้อกำหนดนี้ แอปของคุณสามารถตรวจสอบได้ว่าโทรศัพท์ ฉายภาพไปยังหน้าจอรถยนต์หรือไม่ สังเกต LiveData สำหรับประเภทการเชื่อมต่อ ยืนยันว่าค่าเท่ากับ CONNECTION_TYPE_PROJECTION

หากโทรศัพท์ของผู้ใช้กำลังฉายภาพ แอปสื่อที่รองรับการปลุกต้องดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้

  • ปิดใช้การปลุก

  • เล่นการปลุกซ้ำ STREAM_ALARM และแสดง UI บนหน้าจอโทรศัพท์ เพื่อปิดใช้การปลุก

จัดการโฆษณาสื่อ

โดยค่าเริ่มต้น 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());
}