Nội dung cập nhật về API định tuyến âm thanh trong Android 14 dành cho ứng dụng VoIP

Android 14 ra mắt các bản cập nhật API, đi kèm với những thay đổi về trải nghiệm người dùng đối với hành vi định tuyến âm thanh cho thiết bị Bluetooth Âm thanh năng lượng thấp (LEA), bao gồm cả thiết bị trợ thính. Những thay đổi này đã ảnh hưởng đến cách các ứng dụng VoIP quản lý việc lựa chọn đầu ra âm thanh. Tài liệu này cung cấp thông tin cần thiết để nhà phát triển điều chỉnh ứng dụng VoIP cho phù hợp với những thay đổi này và đảm bảo trải nghiệm liền mạch cho người dùng.

Thay đổi về hành vi trong Android 14

  • Định tuyến thiết bị LEA: Theo mặc định, các thiết bị LEA hiện được bật trên điện thoại Pixel và AOSP. Tuy nhiên, để chủ động nhận dạng và chọn thiết bị LEA làm đầu ra âm thanh, ứng dụng phải sử dụng các API mới được giới thiệu trong API cấp 31.
  • Định tuyến thiết bị trợ thính: Trước đây, âm thanh sẽ luôn mặc định là thiết bị trợ thính, ngay cả khi người dùng đã chọn rõ ràng tai nghe. Trong Android 14, thiết bị trợ thính hiện được trình bày dưới dạng một trong các tuỳ chọn đầu ra âm thanh có sẵn, đòi hỏi người dùng phải lựa chọn rõ ràng.

Lý do thay đổi

  • Trước Android 12, không có API nào để sử dụng rõ ràng thiết bị trợ thính cho các cuộc gọi, dẫn đến việc âm thanh luôn mặc định là thiết bị trợ thính khi được kết nối.
  • Điều này khiến người dùng khó chuyển từ thiết bị trợ thính sang tai nghe khi không ngắt kết nối thiết bị trợ thính.
  • Vấn đề tương tự cũng được áp dụng cho tai nghe Bluetooth Âm thanh năng lượng thấp.

Để giải quyết những thách thức này, Android 14 đã đưa ra các thay đổi để cung cấp cho ứng dụng VoIP nhiều quyền kiểm soát hơn đối với việc định tuyến âm thanh và đảm bảo hành vi nhất quán trên các phụ kiện Bluetooth.

Các thay đổi quan trọng trong Android 14

  • API chung để lựa chọn tuyến đường: Android 12 đã ra mắt AudioManager.setCommunicationDevice để cho phép các ứng dụng chỉ định tuyến âm thanh, bao gồm cả thiết bị trợ thính và thiết bị LEA. Tuy nhiên, trong Android 12 và 13, thiết bị trợ thính không hiển thị dưới dạng thiết bị, điều này làm hạn chế tính hữu ích của API này.
  • Chế độ hiển thị cho thiết bị trợ thính: Trong Android 14, thiết bị trợ thính hiện sẽ xuất hiện dưới dạng thiết bị, cho phép các ứng dụng cung cấp các thành phần trên giao diện người dùng để người dùng chọn đầu ra âm thanh mà họ muốn.
  • Ngừng cung cấp API: Một số API liên quan đến tính năng định tuyến âm thanh không còn được dùng trong Android 14. Nhà phát triển phải chuyển sang các API mới được giới thiệu trong API cấp 31 để quản lý lựa chọn đầu ra âm thanh một cách hiệu quả.

Hành động bắt buộc của nhà phát triển

  • Nên dùng: Di chuyển sang Thư viện Jetpack viễn thông. Nếu có thể, hãy di chuyển ứng dụng VoIP sang thư viện Telecom Jetpack để quản lý việc định tuyến âm thanh một cách đơn giản.
  • Sử dụng setCommunicationDevice() hoặc các API mới nhất (liệt kê bên dưới) nếu không thể di chuyển.

Các API không dùng nữa và API thay thế

Không dùng nữa trên Android 14 API mới
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()

Nền tảng:
CallEventCallback.onAvailableCallEndpointsChanged()
CallEventCallback.onCallEndpointChanged()
CallEventCallback.onMuteStateChanged()
Connection.onCallAudioStateChanged()
Connection.requestBluetoothAudio() Jetpack:
CallControlScope#requestEndpointChange()

Nền tảng:
CallControl#requestCallEndpointChange()
Connection.setAudioRoute()