Atrybuty audio

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 starszych STREAM_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.