การแจ้งเตือนใน Android Automotive OS

การแจ้งเตือนจะให้ข้อมูลสั้นๆ เกี่ยวกับเหตุการณ์จากแอปของคุณในขณะที่ไม่ได้ใช้งานแก่ผู้ขับขี่ การแจ้งเตือนอาจปรากฏในศูนย์การแจ้งเตือน และการแจ้งเตือนบางอย่างอาจปรากฏเป็นการแจ้งเตือนแบบข้อความแจ้งเตือนบนจอแสดงผลด้วย หากต้องการสร้างการแจ้งเตือนสำหรับ Android Automotive OS คุณจะใช้ NotificationBuilder API เดียวกันกับที่ใช้สำหรับอุปกรณ์อื่นๆ อย่างไรก็ตาม เมธอดและคลาส API บางรายการจะได้รับการจำกัดหรือทำงานต่างจากปกติเพื่อช่วยดูแลความปลอดภัยของผู้ขับขี่และลดสิ่งรบกวน

ความแตกต่างของการแจ้งเตือนในรถยนต์

การแจ้งเตือนใน Android Automotive OS จะแตกต่างจากการแจ้งเตือนในอุปกรณ์อื่นๆ ดังนี้ เพื่อให้ได้สภาพแวดล้อมการขับขี่ที่ปลอดภัยและปราศจากการรบกวน

  • การโต้ตอบของผู้ใช้ที่ง่ายขึ้น
  • ข้อจำกัด UX ตามสถานะของไดรฟ์

การโต้ตอบของผู้ใช้ที่ง่ายขึ้น

การแจ้งเตือนในรถมีรูปแบบการโต้ตอบกับผู้ใช้ที่เรียบง่ายพร้อมฟีเจอร์ต่อไปนี้เพื่อช่วยให้ผู้ขับขี่จดจ่อกับถนนได้

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

Android Automotive OS จะเพิ่มปุ่มเล่นและปิดเสียงโดยอัตโนมัติในการแจ้งเตือนการรับส่งข้อความที่เข้ากันได้กับรถยนต์ทั้งหมด

  • เล่น: อ่านการแจ้งเตือนให้ผู้โดยสารฟังโดยใช้ผู้ช่วยดิจิทัลเริ่มต้นของผู้ใช้ เช่น Google Assistant หรือระบบการอ่านออกเสียงข้อความเริ่มต้นของรถ
  • ปิดเสียง: ป้องกันไม่ให้มีการแจ้งเตือนแบบแจ้งเตือนล่วงหน้าสำหรับข้อความในอนาคตในการสนทนาจนกว่าจะสิ้นสุดการเดินทาง การแจ้งเตือนข้อความจากการสนทนาที่ปิดเสียงไว้จะยังคงปรากฏในศูนย์การแจ้งเตือน และคนขับสามารถเลิกปิดเสียงการสนทนาจากศูนย์การแจ้งเตือนได้ด้วย

ตัวเลือกการแสดงการแจ้งเตือนแบบง่าย

RemoteViews และข้อมูลพร็อพเพอร์ตี้เนื้อหาที่กำหนดเอง นอกจากนี้ ระบบยังไม่รองรับรูปแบบการแจ้งเตือนต่อไปนี้

  • BigPictureStyle
  • BigTextStyle
  • InboxStyle

หากแอปส่งการแจ้งเตือนไปยัง Android Automotive OS โดยใช้รูปแบบการแจ้งเตือนรูปแบบใดรูปแบบหนึ่งเหล่านี้ ระบบจะแสดงเฉพาะข้อความสรุป

การจัดการช่องทางการแจ้งเตือนที่ง่ายขึ้น

ระบบปฏิบัติการ Android Automotive ไม่รองรับช่องทางการแจ้งเตือนและความสามารถของ UI ที่เกี่ยวข้อง เพื่อลดงานการจัดการที่ซับซ้อนในอุปกรณ์ยานยนต์

ข้อจำกัด UX ตามสถานะของไดรฟ์

Android Automotive OS มีเครื่องมือข้อจำกัด UX ผู้ผลิตรถยนต์สามารถใช้เครื่องมือนี้เพื่อจำกัดการแจ้งเตือนตามสถานะการขับขี่ของรถยนต์ได้ดังนี้

  • การตัดสตริงการแจ้งเตือนให้สั้นลงตามความยาวอักขระที่เจาะจง
  • การซ่อนสรุปข้อความสําหรับการแจ้งเตือน CATEGORY_MESSAGE
  • จำกัดจำนวนการแจ้งเตือนที่ศูนย์การแจ้งเตือนจะแสดงได้

ประเภททรัพยากรที่รองรับ

โดยค่าเริ่มต้น Android Automotive OS จะรองรับประเภททรัพยากรชุดย่อยแบบจำกัดซึ่งสามารถใช้สำหรับการแจ้งเตือนในอุปกรณ์อื่นๆ ชุดย่อยนี้ประกอบด้วยประเภททรัพยากรต่อไปนี้

  • เนื้อหาที่ถอนออกได้
  • ไอคอน
  • รูปภาพ

ข้อกำหนดความเข้ากันได้สำหรับการแจ้งเตือนการรับส่งข้อความ

การแจ้งเตือนการรับส่งข้อความมีข้อกำหนดพิเศษใน Android Automotive OS เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สอดคล้องกันและรบกวนน้อยที่สุด

การแจ้งเตือนการรับส่งข้อความจะใช้งานร่วมกับรถยนต์ได้หากเป็นไปตามข้อกำหนดต่อไปนี้

  • เนื้อหาดังกล่าวอยู่ในหมวดหมู่ CATEGORY_MESSAGE
  • โดยใช้รูปแบบ Notification.MessagingStyle
  • โดยจะรวมเฉพาะข้อความที่ยังไม่ได้อ่าน
  • มีเครื่องหมาย "อ่านแล้ว" Action ที่เป็นไปตามข้อกำหนดต่อไปนี้

    • การกระทำตามความหมายตั้งค่าเป็น Action.SEMANTIC_ACTION_MARK_AS_READ
    • Action บ่งบอกว่าไม่แสดงอินเทอร์เฟซผู้ใช้เมื่อเรียกใช้
  • หากการแจ้งเตือนมีการตอบกลับ Action Action จะต้องเป็นไปตามข้อกำหนดต่อไปนี้

    • การกระทำตามความหมายตั้งค่าเป็น Action.SEMANTIC_ACTION_REPLY
    • Action บ่งบอกว่าไม่แสดงอินเทอร์เฟซผู้ใช้เมื่อเรียกใช้
    • Action มี RemoteInput รายการเดียว

ศูนย์การแจ้งเตือน

การแจ้งเตือนเกือบทั้งหมดจะปรากฏในศูนย์การแจ้งเตือน แม้ว่าการแจ้งเตือนเหล่านั้นจะได้รับการเรียกให้แสดงเป็นการแจ้งเตือนล่วงหน้าด้วยก็ตาม การแจ้งเตือนจะยังคงอยู่ในศูนย์การแจ้งเตือนตลอดระยะเวลาที่ขับรถ

ผู้ขับขี่โต้ตอบกับการแจ้งเตือนได้ในศูนย์การแจ้งเตือน ผู้ขับขี่จะเข้าถึงศูนย์การแจ้งเตือนได้ 1 หรือทั้ง 2 วิธีต่อไปนี้ โดยขึ้นอยู่กับผู้ผลิตรถยนต์

  • ปัดลงจากด้านบนของหน้าจอ ซึ่งคล้ายกับลิ้นชักการแจ้งเตือนในอุปกรณ์อื่นๆ
  • การแตะปุ่มในอินเทอร์เฟซของระบบ

การแจ้งเตือนแบบกลุ่ม

การแจ้งเตือนที่เกี่ยวข้องจะจัดกลุ่มไว้ในศูนย์การแจ้งเตือนโดยอัตโนมัติ เช่นเดียวกับในลิ้นชักการแจ้งเตือนของอุปกรณ์อื่นๆ อย่างไรก็ตาม เมื่อผู้ขับขี่แตะสรุปของกลุ่มในศูนย์การแจ้งเตือน แทนที่จะเปิดPendingIntent กลุ่มจะขยายเพื่อแสดงการแจ้งเตือนทั้งหมด

การแจ้งเตือนที่ไม่ปรากฏในศูนย์การแจ้งเตือน

การแจ้งเตือนต่อไปนี้จะไม่ปรากฏในศูนย์การแจ้งเตือน

  • Media playback การแจ้งเตือน Android Automotive OS จะรวบรวมข้อมูลเกี่ยวกับการเล่นสื่อที่กำลังดำเนินอยู่และแสดงในตำแหน่งเฉพาะในอินเทอร์เฟซผู้ใช้ โปรดทราบว่าต้องเรียกใช้ setMediaSession ด้วยโทเค็นที่ไม่ใช่ค่าว่างเพื่อให้ระบบจดจำการแจ้งเตือนเป็นการเล่นสื่อ
  • การแจ้งเตือนการนำทางแบบเลี้ยวต่อเลี้ยวสำหรับ CATEGORY_NAVIGATION
  • การแจ้งเตือนบริการที่ทำงานอยู่เบื้องหน้าสำหรับแอปที่มีสิทธิ์ระดับระบบและแอปที่ลงนามด้วยคีย์แพลตฟอร์มที่มีระดับความสำคัญต่ำกว่า IMPORTANCE_DEFAULT

การแจ้งเตือนล่วงหน้า

การแจ้งเตือนล่วงหน้าจะปรากฏเป็นการ์ดการแจ้งเตือนที่ด้านบนของหน้าจอ เนื่องจากการแจ้งเตือนล่วงหน้าดึงดูดความสนใจของผู้ขับขี่ ให้เรียกใช้การแจ้งเตือนล่วงหน้าเฉพาะในกรณีที่ข้อมูลมีความสําคัญต่อการเดินทาง เกี่ยวข้องกับเวลา และนําไปใช้ได้จริง เฉพาะการแจ้งเตือนบางหมวดหมู่เท่านั้นที่เรียกให้แสดงการแจ้งเตือนล่วงหน้าได้

ผู้ผลิตรถยนต์จะเลือกได้ว่าจะให้การแจ้งเตือนล่วงหน้าปรากฏขึ้นขณะที่ศูนย์การแจ้งเตือนเปิดอยู่หรือไม่

วิธีที่แอปเรียกให้แสดงการแจ้งเตือนล่วงหน้า

แอปมีข้อกำหนดที่แตกต่างกันในการเรียกให้ระบบแสดงการแจ้งเตือนเพื่อแจ้งเตือนล่วงหน้า โดยขึ้นอยู่กับว่ามีสิทธิ์ระดับระบบหรือไม่

แอปที่มีสิทธิ์ระดับระบบและแอปที่ลงชื่อด้วยคีย์แพลตฟอร์ม
แอปสามารถเรียกให้แสดงการแจ้งเตือนล่วงหน้าได้โดยการตั้งค่าความสำคัญของแชแนลการแจ้งเตือนเป็น IMPORTANCE_HIGH ขึ้นไป
แอปอื่นๆ ทั้งหมด

แอปสามารถเรียกให้แสดงการแจ้งเตือนล่วงหน้าได้โดยการตั้งค่าความสำคัญของแชแนลการแจ้งเตือนเป็น IMPORTANCE_HIGH หรือสูงกว่า และตรวจสอบว่าการแจ้งเตือนอยู่ในหมวดหมู่ใดหมวดหมู่หนึ่งต่อไปนี้

อายุการใช้งานของการแจ้งเตือนล่วงหน้า

หลังจากแอปเรียกให้แสดงการแจ้งเตือนล่วงหน้า การแจ้งเตือนจะปรากฏขึ้นบนหน้าจอของรถทันที หากผู้ขับขี่ไม่ดำเนินการใดๆ การแจ้งเตือนเพื่อแจ้งเตือนล่วงหน้าจะปิดโดยอัตโนมัติหลังจากผ่านไป 8 วินาที ยกเว้นในกรณีต่อไปนี้

  • การแจ้งเตือนล่วงหน้าสำหรับสายเรียกเข้าบางสายจะปิดไม่ได้ และการแจ้งเตือนล่วงหน้าจะยังคงอยู่จนกว่าคนขับจะรับสายหรือสายสิ้นสุดลง การแจ้งเตือนต้องเป็นไปตามข้อกำหนดต่อไปนี้จึงจะถือว่าเป็นการแจ้งเตือนแบบ Heads-Up ที่ปิดไม่ได้สำหรับสายเรียกเข้า

  • การแจ้งเตือนล่วงหน้าจะยังคงอยู่หากแอปอัปเดตการแจ้งเตือนภายในกรอบเวลา 8 วินาที

เมื่อปิดการแจ้งเตือนแบบ Heads-Up แล้ว การแจ้งเตือนจะแสดงอยู่ในศูนย์การแจ้งเตือน เว้นแต่จะเป็นการแจ้งเตือน CATEGORY_NAVIGATION

การเปลี่ยนแปลงและข้อจํากัดของ Notification API สําหรับรถยนต์

ส่วนนี้จะสรุปความแตกต่างของคลาสแต่ละคลาสที่ Notifications API ทำงานแตกต่างกันหรือมีข้อจำกัดสำหรับ Android Automotive OS

Notification.Builder

ตารางที่ 1 และ 2 อธิบายการเปลี่ยนแปลงและข้อจํากัดของ API ในคลาส Notification.Builder

ตารางที่ 1 การเปลี่ยนแปลงเมธอดสาธารณะสําหรับ Notification.Builder

เมธอดสาธารณะ เอฟเฟ็กต์ คำอธิบาย

addAction()

ไม่มีการดำเนินการแบบมีเงื่อนไข การแจ้งเตือน Notification.MessagingStyle ต้องเพิ่มการดำเนินการที่ระบุไว้ในข้อกำหนดด้านความเข้ากันได้ การดําเนินการเพิ่มเติมที่เพิ่มจะไม่แสดงผลเป็นปุ่มการแจ้งเตือน

createBigContentView()

createContentView()

createHeadsUpContentView()

setContent()

setCustomBigContentView()

setCustomContentView()

setCustomHeadsUpContentView()

ไม่มีการดำเนินการ RemoteViews และระบบไม่รองรับมุมมองเนื้อหาที่กำหนดเอง

setBadgeIconType()

setNumber()

ไม่มีการดำเนินการ ไม่รองรับป้ายการแจ้งเตือน

setChronometerCountDown()

setUsesChronometer()

ไม่มีการดำเนินการ ไม่รองรับตัวจับเวลานับถอยหลัง
setColorized() เปลี่ยนข้อจำกัดแล้ว

แอปที่เซ็นชื่อโดยแพลตฟอร์ม: กําหนดค่าได้ อนุญาตโดยค่าเริ่มต้น

แอปที่มีสิทธิ์ระดับระบบ: กำหนดค่าโดยแพลตฟอร์ม ไม่อนุญาตโดยค่าเริ่มต้น

แอปอื่นๆ ทั้งหมด: กำหนดค่าโดยแพลตฟอร์ม ไม่อนุญาตโดยค่าเริ่มต้น

setFullScreenIntent() ลักษณะการทำงานมีการเปลี่ยนแปลง ไม่เปิด Intent โดยอัตโนมัติ
setLargeIcon() ลักษณะการทำงานมีการเปลี่ยนแปลง ไอคอนขนาดใหญ่จะแสดงทางด้านขวาของการแจ้งเตือน
setLights() ไม่มีการดำเนินการ อุปกรณ์ Android Automotive OS ไม่มีไฟบอกสถานะ LED
setOngoing() ลักษณะการทำงานมีการเปลี่ยนแปลง

ลักษณะการทํางานจะแตกต่างกันเมื่อการแจ้งเตือนทริกเกอร์การแจ้งเตือนล่วงหน้าด้วย

setOngoing() จะทําให้การแจ้งเตือนแบบ Heads-Up ไม่สามารถปิดได้ก็ต่อเมื่อการแจ้งเตือนแบบ Heads-Up เป็นการแจ้งเตือนสายเรียกเข้าเท่านั้น การแจ้งเตือนต้องมีคุณสมบัติตามsetPublicVersion() จึงจะถือว่าเป็นการแจ้งเตือนล่วงหน้าแบบปิดไม่ได้สำหรับสายเรียกเข้า

setVisibility()

ไม่มีการดำเนินการ ไม่รองรับโหมดส่วนตัว
setSettingsText() ไม่มีการดำเนินการ การแจ้งเตือนไม่รองรับสิ่งต่างๆ ที่พร้อมใช้งานซึ่งลิงก์กับการตั้งค่าแอป คนขับจะเข้าถึงการตั้งค่าแอปผ่านแอปแทน
setTicker() ไม่มีการดำเนินการ ระบบไม่รองรับข้อความทิกเกอร์

ตารางที่ 2 การเปลี่ยนแปลงคลาสที่ฝังสำหรับ Notification.Builder

ชั้นเรียนที่ซ้อนกัน เอฟเฟ็กต์ คำอธิบาย

Notification.BigPictureStyle

Notification.BigTextStyle

Notification.InboxStyle

ไม่ใช้ เฉพาะข้อความสรุปเท่านั้นที่จะแสดง ระบบไม่รองรับการแจ้งเตือนแบบละเอียดสำหรับสไตล์เหล่านี้
Notification.BubbleMetadata ไม่ใช้ ไม่รองรับฟองข้อความ
Notification.MediaStyle ซ่อนอยู่ ระบบจะซ่อนการแจ้งเตือนที่มีสไตล์นี้ Android Automotive OS จัดการการโต้ตอบกับอินเทอร์เฟซผู้ใช้สำหรับการแจ้งเตือนและการเล่นสื่อ
Notification.MessagingStyle ลักษณะการทำงานมีการเปลี่ยนแปลง

การแจ้งเตือนที่มีสไตล์นี้จะแตกต่างกันดังนี้

Notification.CarExtender

Notification.WearableExtender

ไม่ใช้ ไม่รองรับส่วนขยาย

Notification.Action.Builder

ตารางที่ 3 อธิบายการเปลี่ยนแปลงและข้อจํากัดของ API ในคลาส Notification.Action.Builder

ตารางที่ 3 การเปลี่ยนแปลงเมธอดสาธารณะสําหรับ Notification.Action.Builder

เมธอดสาธารณะ เอฟเฟ็กต์ คำอธิบาย
ตัวสร้างแบบสาธารณะ ลักษณะการทำงานมีการเปลี่ยนแปลง ระบบจะไม่สนใจไอคอนที่ระบุไว้ในตัวสร้างแบบสาธารณะ
addRemoteInput ลักษณะการทำงานมีการเปลี่ยนแปลง ผู้ช่วยดิจิทัล เช่น Google Assistant จะแทรกคำตอบสำหรับข้อความของผู้ใช้เพื่อลดสิ่งรบกวนคนขับ ผู้ใช้พิมพ์ข้อความไม่ได้
setAllowGeneratedReplies ไม่มีการดำเนินการ ไม่รองรับฟีเจอร์ช่วยตอบ