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

เนื่องจากโทรศัพท์ของผู้ใช้เชื่อมต่อกับลำโพงของรถเมื่อใช้ 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());
}