Android 10 poprawia komfort korzystania z funkcji, które wymagają jednoczesnego korzystania z więcej niż 1 aktywnego przechwytywania dźwięku, np. gdy użytkownik chce sterować połączeniem VoIP lub nagrywaniem wideo za pomocą poleceń głosowych udostępnianych przez usługę ułatwień dostępu.
Platforma audio wdraża zasady, które umożliwiają jednoczesne przechwytywanie dźwięku przez określone aplikacje z uprawnieniami i zwykłe aplikacje.
Zasada równoczesności jest realizowana przez wyciszenie przechwyczonej ścieżki audio, a nie przez uniemożliwienie aplikacji rozpoczęcia przechwytywania. Dzięki temu platforma może dynamicznie adresować zmiany liczby i typów aktywnych przypadków użycia przechwytywania bez uniemożliwiania aplikacji rozpoczynania nagrywania w przypadku, gdy inna aplikacja może odzyskać pełny dostęp do mikrofonu. a następnie przechwytywanie.
W konsekwencji HAL audio i podsystem audio muszą obsługiwać jednocześnie kilka aktywnych strumieni wejściowych, nawet jeśli w niektórych przypadkach tylko jeden strumień dostarcza niecichego dźwięku do aktywnego klienta.
Wymagania CDD
Zapoznaj się z dokumentem CDD wymagania dotyczące obsługi równoległego przechwytywania.
Rejestruj sytuacje z HAL dźwięku
Różne scenariusze jednoczesnego przechwytywania mogą prowadzić do różnych sytuacji pod względem liczby aktywnych strumieni wejściowych, wyboru urządzenia wejściowego lub konfiguracji wstępnego przetwarzania.
Równoczesność może występować w tych sytuacjach:
- kilka strumieni danych wejściowych z procesora aplikacji (AP);
- Strumienie danych wejściowych i połączenie głosowe
- Strumienie wejściowe i platforma DSP audio z obsługą wykrywania słowa-klucza o niskim poborze energii
Równoległa aktywność strumieni danych wejściowych AP
Plik konfiguracji zasady audio audio_policy_configuration.xml
jest używany przez dźwięk.
platformy do określania liczby strumieni wejściowych, które można otworzyć i aktywować jednocześnie.
HAL audio musi obsługiwać co najmniej 1 instancję każdego profilu wejściowego (mixPort
o roli sink
) wymienionego w otwartym i aktywnym pliku konfiguracji.
Wybór urządzenia
Gdy do tego samego strumienia wejściowego HAL jest podłączonych kilka aktywnych klientów, platforma wybiera odpowiednie urządzenie dla tego strumienia wejściowego na podstawie priorytetu przypadku użycia.
Gdy aktywnych jest kilka strumieni danych wejściowych, każdy z nich może mieć inną listę urządzeń.
Jeśli technologia jest zgodna, zalecamy używanie interfejsu HAL audio i podsystem pozwalają na nagrywanie różnych strumieni z różnych urządzeń, np. zestawu słuchawkowego Bluetooth i wbudowany mikrofon.
Jeśli występuje niezgodność (np. 2 urządzenia mają ten sam interfejs cyfrowego audio lub ten sam rdzeń), HAL audio musi wybrać, który strumień ma kontrolować wybór urządzenia.
W takim przypadku:
- Wynikowy stan musi być spójny i oferować ten sam wybór urządzenia, gdy powtarzany jest ten sam scenariusz.
- Gdy stan równoczeństwa się zakończy, pozostały aktywny strumień musi zostać przekierowany do urządzenia, które zostało pierwotnie wybrane do tego strumienia.
Jeśli kolejność priorytetów jest zdefiniowana przez HAL audio w przypadku aktywnych przypadków użycia, zastosuj tę samą kolejność, co w source_priority()
w frameworks/av/services/audiopolicy/common/include/policy.h
.
Wybór przetwarzania wstępnego
Platforma audio może żądać wstępnego przetwarzania strumienia wejściowego za pomocą
metody HAL addEffect()
lub removeEffect()
.
W przypadku przetwarzania wstępnego danego strumienia wejściowego framework audio umożliwia tylko konfigurację odpowiadającą aktywnemu przypadkowi użycia o najwyższym priorytecie w danym strumieniu wejściowym. Jednak niektóre obszary mogą się pokrywać podczas aktywacji i dezaktywacji przypadku użycia, spowodowanie uruchomienia 2 jednoczesnych aktywnych procesów (na przykład 2 instancji redukcji echa) dla tego samego strumienia wejściowego. W takim przypadku implementacja HAL wybiera, które żądanie zostanie zaakceptowane. Śledzi aktywne żądania i przywraca prawidłowy stan, gdy jeden z procesów zostanie wyłączony.
Gdy jednocześnie aktywnych jest kilka strumieni przechwytywania, mogą występować różne żądania wstępnego przetwarzania które działają na różnych strumieniach.
Implementacje HAL i podsystemu audio powinny umożliwiać stosowanie różnych wstępnych przetworzeń do różnych strumieni, nawet jeśli korzystają z tego samego urządzenia wejściowego. Oznacza to, że wstępne przetwarzanie powinno być stosowane po demuxowaniu strumieni z głównego źródła danych.
Jeśli nie jest to możliwe z powodów technicznych w przypadku danego podsystemu audio, HAL audio powinien stosować reguły priorytetów podobne do tych wymienionych w sekcji Wybór urządzenia.
Jednoczesne połączenie głosowe i przechwytywanie przez punkt dostępu
Zrobienie zdjęcia przez punkt dostępu może nastąpić, gdy trwa połączenie głosowe. Ten nie jest czymś nowym w Androidzie 10 i nie jest bezpośrednio związane funkcji nagrywania równoczesnego, ale warto wspomnieć o wytycznych dla tego scenariusza.
Podczas połączenia potrzebne są 2 rodzaje przechwytywania z AP.
- Przechwytywanie ścieżek RX i TX połączenia
- Przechwytywanie z urządzenia wejściowego (np. wbudowany mikrofon)
rejestrowanie danych RX i TX dotyczących połączeń,
Przechwytywanie połączeń RX i TX jest wyzwalane przez użycie źródła dźwięku.
AudioSource.VOICE_UPLINK
, AudioSource.VOICE_DOWNLINK
lub urządzenie
AudioDevice.IN_TELEPHONY_RX
Listy HAL audio powinny udostępniać w profilu danych wejściowych (mixPort
w roli sink
)
z dostępną trasą z urządzenia AudioDevice.IN_TELEPHONY_RX
.
Gdy połączenie jest nawiązane (tryb audio: AudioMode.IN_CALL
), powinno być możliwe posiadanie co najmniej 1 aktywnego strumienia z urządzenia AudioDevice.IN_TELEPHONY_RX
.
rejestrowanie dźwięku z urządzeń wejściowych podczas aktywnego połączenia,
Gdy połączenie jest aktywne (tryb audio jest ustawiony na AudioMode.IN_CALL
), powinno być możliwe otwieranie i aktywowanie strumieni danych z AP zgodnie z opisem w sekcji Równoległa aktywność strumieni danych AP.
Jednak priorytet przy wyborze urządzenia i wstępnym przetwarzaniu zawsze powinien być zależny od głosu w przypadku wystąpienia konfliktu z żądaniami ze strumieni wejściowych punktu dostępu.
jednoczesne przechwytywanie z platformy DSP i AP,
Jeśli podsystem audio zawiera DSP obsługujący funkcje wykrywania słów-kluczy lub kontekstu audio o niskim poborze mocy, implementacja powinna obsługiwać jednoczesne przechwytywanie z AP i DSP audio.
Obejmuje to przechwytywanie przez platformę DSP w fazie wykrywania początkowego i do przechwytywania przez punkt dostępu
z AudioSource.HOTWORD
po aktywowaniu wykrywania przez platformę DSP.
Powinien on być odzwierciedlony przez flagę jednoczesnego przechwytywania zgłaszaną przez HAL dźwiękowego wyzwalacza za pomocą deskryptora implementacji: ISoundTriggerHw.Properties.concurrentCapture = true
.
Interfejs HAL audio powinien też ujawnić i podać profil wprowadzania specyficzny dla przechwytywania słowa-klucza identyfikowany przez
flaga AudioInputFlag.HW_HOTWORD
. Implementacja powinna obsługiwać otwieranie
aktywując liczbę strumieni w tym profilu, co najmniej równą liczbie modeli dźwięku, które
mogą być ładowane jednocześnie przez HAL wyzwalacza dźwięku.
Przechwytywanie z tego profilu wejściowego powinno być możliwe, gdy inne profile wejściowe są aktywne.
Wpływ na implementacje Asystenta
Wymagania dotyczące użycia danych i powiadomień użytkowników
Ponieważ używanie mikrofonu podczas jednoczesnego korzystania z mikrofonu może spowodować wyciek prywatnych danych użytkownika, potrzebujemy tych informacji: warunki i gwarancje zastosowania do wstępnie załadowanych aplikacji z podwyższonymi uprawnieniami, które proszą o przechowywanie Rola Asystenta.
- Dane zbierane za pomocą mikrofonu nie powinny opuszczać urządzenia, chyba że użytkownik podczas interakcji z Asystentem. np. po wywołaniu słowa-klucza.
- Aplikacje słuchające równocześnie powinny zawierać wskazówki wizualne po słowie-kluczu . Dzięki temu użytkownicy wiedzą, że dalsza rozmowa będzie prowadzona w innej aplikacji, np. w Asystencie.
- Użytkownicy powinni mieć możliwość wyłączenia mikrofonu lub uruchamiania Asystenta.
- Gdy przechowywane są nagrania dźwiękowe, użytkownicy powinni mieć możliwość dostępu do możesz je w każdej chwili usunąć.
Ulepszenia funkcjonalne Androida 10
Asystent się nie blokuje
na Androidzie 9 i starszych, gdy są dostępne 2 zawsze włączone. Asystent na urządzeniu, tylko jeden może nasłuchiwać słowa-klucza. Dlatego konieczne było przełączanie się między tymi dwoma Asystentami. Na Androidzie 10 domyślny Asystent może słuchać dźwięku jednocześnie do drugiego Asystenta. Dzięki temu użytkownicy będą mogli korzystać z obu Asystentów w bardziej płynny sposób.
Aplikacje przytrzymujące włączony mikrofon
Gdy aplikacje takie jak Shazam czy Waze trzymają włączony mikrofon, domyślny Asystent może nadal nasłuchiwać. dla słowa-klucza.
W przypadku aplikacji Asystenta innych niż domyślne nie ma zmian w działaniu w Androidzie 10.
Przykładowa implementacja audio HAL
Przykład implementacji HAL audio zgodnej z wytycznymi podanymi w tym dokumencie można znaleźć w AOSP.