Odtwarzacze audio obsługują atrybuty określające sposób obsługi systemu audio. w zakresie routingu, woluminu i ostrości dla określonego źródła. Aplikacje mogą dołączać atrybuty do odtwarzanego dźwięku (np. muzyka odtwarzana przez usługę strumieniowania lub powiadomienie o nowym e-mailu), a następnie przekazać dźwięk. z atrybutami źródłowymi platformy, gdzie system audio wykorzystuje atrybuty podejmowanie decyzji i powiadamianie aplikacji o stanie systemu.
W Androidzie 4.4 i wcześniejszych platforma do podejmowania decyzji o miksowaniu uwzględniała typu strumienia audio. Jednak takie decyzje były brane pod uwagę także w oparciu o typ transmisji. co pozwala uzyskać wysokiej jakości dane wyjściowe w wielu aplikacjach i na różnych urządzeniach. Na przykład na urządzeniu mobilnym niektóre aplikacje (takie jak Mapy Google) działały wskazówki dojazdu dla typu strumienia STREAM_MUSIC; jednak na urządzeniach mobilnych w trybie projekcji (tj.w Androidzie Auto) aplikacje nie mogą łączyć ze sobą jazdy samochodem. wskazówek dojazdu z innymi strumieniami multimediów.
Korzystanie z Dźwięk API atrybutu, aplikacje udostępniają systemowi audio szczegółowe informacje o konkretnym źródle dźwięku, w tym o użyciu (dlaczego źródło to odtwarzania), typu treści (co jest odtwarzane przez źródło), flag (pojawia się w przypadku źródła i kontekstów (nowość w Androidzie 9). Składnia:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- Użycie. Określa, dlaczego jest odtwarzane źródło, i elementy sterujące wyznaczanie tras, koncentracja na celu i regulacja głośności.
- Typ treści. Określa, co jest odtwarzane ze źródła (muzyka, film, mowa, udźwiękowienie, brak informacji).
- Kontekst Wartości wykorzystania wyodrębnione do wartości HAL audio.
- Flagi. Określa sposób odtwarzania źródła. Obejmuje obsługę wymuszania dźwięku (dźwięki migawki kamery wymagane w w niektórych krajach) i synchronizacji dźwięku i obrazu.
W celu przetwarzania dynamiki aplikacje muszą rozróżniać filmy, muzykę, i zawartości mowy. Mogą też być istotne informacje o samych danych, takie jak: głośność i szczytową wartość próbki.
Użyj atrybutów
Użycie określa kontekst, w którym strumień jest używany, zapewniając informacje o powodach odtwarzania dźwięku i jego celach. Informacje o korzystaniu są bardziej szczegółowe niż w przypadku typu strumienia i umożliwiają platformom lub zasad routingu, aby doprecyzować decyzje dotyczące woluminu lub routingu.
Podaj jedną z tych wartości użycia dla dowolnej instancji:
- USAGE_UNKNOWN
- USAGE_MEDIA (USAGE_MEDIA)
- USAGE_VOICE_COMMUNICATION
- USAGE_VOICE_COMMUNICATION_SIGNALLING
- USAGE_ALARM – użycie
- USAGE_POWIADOMIENIA
- USAGE_Powiadomienia_TELEPHONY_RINGTONE
- USAGE_Powiadomienia_COMMUNICATION_REQUEST
- USAGE_Powiadomienia_COMMUNICATION_INSTANT
- USAGE_Powiadomienia_COMMUNICATION_OŚWIADCZONE
- USAGE_Powiadomienia_EVENT
- USAGE_ASSISTANCE_ACCESSIBILITY
- USAGE_ASSISTANCE_NAVIGATION_guidelines
- USAGE_ASSISTANCE_SONIFICATION (UŻYCIE_ASSISTANCE_SONIFICATION)
- USAGE_GAME
- ŹRÓDŁO_WIRTUALNE_USŁUGI
- WYKORZYSTANIE_ASYSTENTA
Wartości wykorzystania atrybutów audio wzajemnie się wykluczają. Przykłady:
USAGE_MEDIA
oraz
USAGE_ALARM
definicje; dotyczące wyjątków znajdziesz tutaj:
AudioAttributes.Builder
definicji.
Typ treści
Typ treści określa, jaki jest dźwięk, i odzwierciedla ogólną kategorię
treści takie jak film, mowa czy sygnał dźwiękowy. Platforma audio wykorzystuje
informacje o typie treści w celu selektywnego konfigurowania końcowego przetwarzania dźwięku
bloki. Podanie typu treści jest opcjonalne, należy natomiast uwzględnić typ
gdy tylko jest znany typ treści, na przykład użycie
CONTENT_TYPE_MOVIE
za usługę strumieniowego przesyłania filmów lub
CONTENT_TYPE_MUSIC
w przypadku aplikacji do odtwarzania muzyki.
W każdym przypadku podaj jedną z tych wartości typu treści:
CONTENT_TYPE_UNKNOWN
(domyślnie)CONTENT_TYPE_MOVIE
CONTENT_TYPE_MUSIC
CONTENT_TYPE_SONIFICATION
CONTENT_TYPE_SPEECH
Wartości typu treści atrybutu audio wzajemnie się wykluczają. Szczegółowe informacje o typach treści: zapoznaj się z dźwięk interfejsu API atrybutu.
Konteksty
Każdy dźwięk w Androidzie jest rozpoznawany przez odpowiedzialną aplikację i powód.
generowania dźwięku; Urządzenia z Androidem używają tych informacji do:
określić sposób prezentacji dźwięku. W Androidzie 8.x i starszym aplikacje mogą
podaj powód generowania dźwięku, korzystając ze starszych typów strumieni (np.
AudioSystem.STREAM_MUSIC
) lub AudioAttributes
. W
Android 9, wartości AudioAttributes.usage
są wyodrębniane na poziomie HAL jako konteksty.
Konteksty audio HAL | Wykorzystanie atrybutów audio |
---|---|
MUZYCZNA | MULTIMEDIA |
POLECENIE | WYKORZYSTANIE_ASYSTENTA |
NAWIGACJA | ASSISTANCE_NAVIGATION_guidelines |
ZADZWOŃ | KOMUNIKACJA_GŁOSOWA |
DŹWIĘK | SYGNATURA_POWIADOMIENIA |
POWIADOMIENIE | POWIADOMIENIE |
ALARM | ALARM |
SYSTEM_DŹWIĘKOWY | ASSISTANCE_SONIFICATION |
NIEZNANY | NIEZNANY |
W dowolnym z nich możesz podać jedną z następujących wartości CONTEXT_NUMBER
instancja:
- MUSIC_CONTEXT // Odtwarzanie muzyki
- NAVIGATION_CONTEXT // Trasa nawigacji
- VOICE_Command_CONTEXT // Sesja poleceń głosowych
- CALL_RING_CONTEXT // Dzwonienie połączenia głosowego
- CALL_CONTEXT // Rozmowa głosowa
- ALARM_CONTEXT // Dźwięk alarmu z Androida
- notification_CONTEXT // Powiadomienia
- SYSTEM_SOUND_CONTEXT // Dźwięki interakcji użytkownika (kliknięcia przycisków itp.)
Flagi
Flagi określają, w jaki sposób struktura dźwięku stosuje efekty do odtwarzania dźwięku. Podaj co najmniej jedną z tych flag instancji:
FLAG_AUDIBILITY_ENFORCED
prosi system o zapewnienie słyszalność dźwięku. Zaspokajanie potrzeb starszychSTREAM_SYSTEM_ENFORCED
(np. wymuszanie dźwięków migawki aparatu).HW_AV_SYNC
wymaga od systemu wyboru strumienia wyjściowego, który obsługuje sprzętową synchronizację dźwięku z obrazem.
Flagi atrybutów audio nie są objęte wyłącznością i można je łączyć. Więcej informacji: tych flag znajdziesz w sekcji dźwięk interfejsu API atrybutu.
Przykład
W tym przykładzie AudioAttributes.Builder
definiuje
AudioAttributes
do wykorzystania przez nowy AudioTrack
instancja:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
Zgodność
Programiści aplikacji powinni używać atrybutów audio podczas tworzenia lub aktualizowania aplikacji na Androida 5.0 i nowszego. Aplikacje nie są jednak wymagane do korzystania z atrybutów; mogą obsługiwać starsze typy strumieni lub nie znają żadnych atrybutów (np. standardowy odtwarzacz, który nie nie wiesz nic o odtwarzanych treściach).
W takich przypadkach platforma zachowuje zgodność wsteczną ze starszymi urządzeń i wersji na Androida dzięki automatycznemu tłumaczeniu starszych strumieni audio. z atrybutami audio. Zasady te nie egzekwują jednak w przypadku różnych urządzeń, producentów lub wersji Androida.
Mapowania zgodności:
Android 5.0 lub nowszy | Android 4.4 i starsze |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION
|
STREAM_VOICE_CALL
|
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION
|
STREAM_SYSTEM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE
|
STREAM_RING
|
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
|
STREAM_MUSIC
|
CONTENT_TYPE_SONIFICATION USAGE_ALARM
|
STREAM_ALARM
|
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT
|
STREAM_NOTIFICATION
|
CONTENT_TYPE_SPEECH
|
(@ukryj) STREAM_BLUETOOTH_SCO
|
FLAG_AUDIBILITY_ENFORCED
|
(@ukryj) STREAM_SYSTEM_ENFORCED
|
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING
|
(@ukryj) STREAM_DTMF
|
Wycofane typy strumieni
W Androidzie 9 wycofamy te typy strumieniowania: wykorzystanie w samochodach:
- DOMYŚLNY_STRUMIEŃ
- TRANSMISJA_VOICE_CALL
- SYSTEM TRANSMISJI
- PIERŚCIENI_TRANSMISJI
- TRANSMISJA_MUZYCZNA
- STRUMIEŃ_ALARM
- POWIADOMIENIE_TRANSMISJI
- STREAM_BLUETOOTH_SCO
- SYSTEM_TRANSMISJI
- TRANSMISJA_DTMF
- TRANSMISJA_TTS
- STRUMIEŃ_DOSTĘPU
Więcej informacji: Dźwięk samochodowy.