Aktualizacje interfejsu API do routingu dźwięku w Androidzie 14 na potrzeby aplikacji VoIP

W Androidzie 14 wprowadzono aktualizacje interfejsów API, które wprowadziły zmiany w zachowaniu routingu dźwięku na urządzeniach z Bluetooth LE Audio (LEA), w tym w urządzeniach do wspomagania słuchu. Wpłynęły one na sposób, w jaki aplikacje VoIP zarządzają wyborem wyjścia audio. Ten dokument zawiera istotne informacje, które pomogą deweloperom dostosować aplikacje VoIP do tych zmian i zapewnić użytkownikom płynne działanie.

Zmiana zachowania w Androidzie 14

  • Przekierowanie na urządzenie LEA: urządzenia LEA są teraz domyślnie włączone na telefonach Pixel i w AOSP. Aby jednak aktywnie rozpoznawać i wybierać urządzenia z usługą LEA jako wyjście audio, aplikacje muszą używać nowych interfejsów API wprowadzonych na poziomie API 31.
  • Przesyłanie dźwięku do aparatu słuchowego: wcześniej dźwięk zawsze był przesyłany do aparatu słuchowego, nawet jeśli użytkownik wybrał słuchawkę. W Androidzie 14 aparaty wspomagające słuch są wyświetlane jako jedna z dostępnych opcji wyjścia audio, wymagająca wyraźnego wybrania przez użytkownika.

uzasadnienie zmiany;

  • Przed Androidem 12 nie było interfejsu API do obsługi aparatów słuchowych na potrzeby połączeń, co powodowało, że po połączeniu dźwięk zawsze był odtwarzany przez aparat słuchowy.
  • Utrudniało to użytkownikom przełączanie się z aparatów słuchowych na słuchawki bezprzewodowe bez odłączania aparatów.
  • Ten sam problem dotyczył zestawów słuchawkowych Bluetooth LE Audio.

Aby sprostać tym wyzwaniom, w Androidzie 14 wprowadziliśmy zmiany zapewniające aplikacjom VoIP większą kontrolę nad kierowaniem dźwięku i spójne działanie akcesoriów Bluetooth.

Najważniejsze zmiany w Androidzie 14

  • Ogólne interfejsy API do wyboru trasy: Android 12 wprowadził AudioManager.setCommunicationDevice, aby umożliwić aplikacjom określanie tras audio, w tym urządzeń wspomagających słuch i urządzeń do komunikacji wspomagającej. Jednak w Androidzie 12 i 13 aparaty słuchowe nie były widoczne jako urządzenia, co ograniczało przydatność tego interfejsu API.
  • Widoczność aparatów słuchowych: w Androidzie 14 aparaty słuchowe są widoczne jako urządzenia, co umożliwia aplikacjom wyświetlanie elementów interfejsu, dzięki którym użytkownicy mogą wybrać preferowane wyjście audio.
  • Wycofanie interfejsów API: kilka interfejsów API związanych z kierowaniem dźwięku zostało wycofanych w Androidzie 14. Aby skutecznie zarządzać wyborem wyjścia audio, deweloperzy muszą przejść na nowe interfejsy API wprowadzone w interfejsie API na poziomie 31.

Wymagane działania dewelopera

  • Zalecane: zmigruj do biblioteki Jetpack firmy Telecom. Jeśli to możliwe, przenieś aplikację VoIP do biblioteki Jetpacka, aby usprawnić zarządzanie przekierowywaniem dźwięku.
  • Jeśli przeniesienie nie jest możliwe, użyj interfejsu setCommunicationDevice() lub najnowszych interfejsów API (wymienionych poniżej).

Wycofane interfejsy API i ich zamienniki

Wycofane w Androidzie 14 Nowe interfejsy 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()

Platforma:
CallEventCallback.onAvailableCallEndpointsChanged()
CallEventCallback.onCallEndpointChanged()
CallEventCallback.onMuteStateChanged()
Connection.onCallAudioStateChanged()
Connection.requestBluetoothAudio() Jetpack:
CallControlScope#requestEndpointChange()

Platforma:
CallControl#requestCallEndpointChange()
Connection.setAudioRoute()