การอัปเดต API การกำหนดเส้นทางเสียงใน Android 14 สำหรับแอป VoIP

Android 14 ได้เปิดตัวการอัปเดต API พร้อมกับการเปลี่ยนแปลงประสบการณ์ของผู้ใช้ในการกำหนดเส้นทางเสียงสำหรับอุปกรณ์ Bluetooth LE Audio (LEA) รวมถึงเครื่องช่วยฟัง การเปลี่ยนแปลงเหล่านี้ส่งผลต่อวิธีที่แอป VoIP จัดการการเลือกเอาต์พุตเสียง เอกสารนี้ให้ข้อมูลที่จำเป็นสำหรับนักพัฒนาแอปในการปรับแอป VoIP ให้เข้ากับการเปลี่ยนแปลงเหล่านี้และมอบประสบการณ์การใช้งานที่ราบรื่น

การเปลี่ยนแปลงลักษณะการทํางานใน Android 14

  • การกำหนดเส้นทางอุปกรณ์ LEA: ตอนนี้อุปกรณ์ LEA จะเปิดใช้โดยค่าเริ่มต้นในโทรศัพท์ Pixel และ AOSP อย่างไรก็ตาม หากต้องการจดจำและเลือกอุปกรณ์ LEA เป็นเอาต์พุตเสียงอยู่เสมอ แอปต้องใช้ API ใหม่ที่เปิดตัวใน API ระดับ 31
  • การกำหนดเส้นทางของอุปกรณ์ช่วยฟัง: ก่อนหน้านี้ เสียงจะส่งไปยังอุปกรณ์ช่วยฟังโดยค่าเริ่มต้นเสมอ แม้ว่าผู้ใช้จะเลือกหูฟังอย่างชัดเจนก็ตาม ใน Android 14 ตอนนี้เครื่องช่วยฟังจะแสดงเป็นหนึ่งในตัวเลือกเอาต์พุตเสียงที่พร้อมใช้งาน ซึ่งผู้ใช้ต้องเลือกอย่างชัดเจน

เหตุผลของการเปลี่ยนแปลง

  • ก่อนที่จะมี Android 12 ยังไม่มี API ให้ใช้เครื่องช่วยฟังอย่างชัดเจนสำหรับการโทร ซึ่งส่งผลให้เสียงเริ่มต้นเป็นเครื่องช่วยฟังเสมอเมื่อเชื่อมต่ออยู่
  • ซึ่งทำให้ผู้ใช้เปลี่ยนจากเครื่องช่วยฟังเป็นหูฟังโทรศัพท์ได้ยากโดยไม่ต้องถอดเครื่องช่วยฟังออก
  • ปัญหาเดียวกันกับชุดหูฟัง Bluetooth LE Audio

เพื่อแก้ไขปัญหาเหล่านี้ Android 14 ได้เปิดตัวการเปลี่ยนแปลงเพื่อให้แอป VoIP ควบคุมการกำหนดเส้นทางเสียงได้มากขึ้นและเพื่อให้อุปกรณ์เสริมบลูทูธทำงานได้อย่างสอดคล้องกัน

การเปลี่ยนแปลงที่สำคัญใน Android 14

  • API ทั่วไปสำหรับการเลือกเส้นทาง: Android 12 ได้เปิดตัว AudioManager.setCommunicationDevice เพื่ออนุญาตให้แอประบุเส้นทางเสียง ซึ่งรวมถึงเครื่องช่วยฟังและอุปกรณ์ LEA อย่างไรก็ตาม ใน Android 12 และ 13 เครื่องช่วยฟังจะไม่แสดงเป็นอุปกรณ์ ซึ่งทำให้ API นี้มีประโยชน์น้อยลง
  • ระดับการมองเห็นเครื่องช่วยฟัง: ใน Android 14 ตอนนี้เครื่องช่วยฟังจะแสดงเป็นอุปกรณ์ ซึ่งช่วยให้แอปแสดงองค์ประกอบ UI เพื่อให้ผู้ใช้เลือกเอาต์พุตเสียงที่ต้องการได้
  • การเลิกใช้งาน API: ระบบได้เลิกใช้งาน API หลายรายการที่เกี่ยวข้องกับการกำหนดเส้นทางเสียงใน Android 14 แล้ว นักพัฒนาแอปต้องย้ายข้อมูลไปยัง API ใหม่ที่เปิดตัวใน API ระดับ 31 เพื่อจัดการการเลือกเอาต์พุตเสียงอย่างมีประสิทธิภาพ

การดำเนินการที่จำเป็นสำหรับนักพัฒนาแอป

  • แนะนำอย่างยิ่ง: ย้ายข้อมูลไปยังคลัง Telecom Jetpack หากเป็นไปได้ ให้ย้ายข้อมูลแอป VoIP ไปยังคลัง Telecom Jetpack เพื่อการจัดการการกำหนดเส้นทางเสียงที่มีประสิทธิภาพยิ่งขึ้น
  • ใช้ setCommunicationDevice() หรือ API เวอร์ชันล่าสุด (แสดงอยู่ด้านล่าง) หากย้ายข้อมูลไม่ได้

API ที่เลิกใช้งานแล้วและ API ที่ใช้แทน

เลิกใช้งานใน Android 14 API ใหม่
AudioManager.isBluetoothScoOn() AudioManager.getCommunicationDevice()
AudioManager.isSpeakerphoneOn()
AudioManager.setSpeakerphoneOn() AudioManager.setCommunicationDevice()
AudioManager.startBluetoothSco()
AudioManager.stopBluetoothSco() AudioManager.clearCommunicationDevice()
Connection.getCallAudioState() Jetpack:
CallControlScope.getAvailableEndpoints()
CallControlScope.getCurrentCallEndpoint()
CallControlScope#isMuted()

แพลตฟอร์ม:
CallEventCallback.onAvailableCallEndpointsChanged()
CallEventCallback.onCallEndpointChanged()
CallEventCallback.onMuteStateChanged()
Connection.onCallAudioStateChanged()
Connection.requestBluetoothAudio() Jetpack:
CallControlScope#requestEndpointChange()

แพลตฟอร์ม:
CallControl#requestCallEndpointChange()
Connection.setAudioRoute()