Atrybuty dźwięku

Odtwarzacze audio obsługują atrybuty definiujące sposób, w jaki system audio obsługuje decyzje dotyczące routingu, głośności i fokusu dla określonego źródła. Aplikacje mogą dołączać atrybuty do odtwarzania dźwięku (takie jak muzyka odtwarzana przez usługę przesyłania strumieniowego lub powiadomienie o nowej wiadomości e-mail), a następnie przekazywać atrybuty źródła dźwięku do platformy, gdzie system audio wykorzystuje te atrybuty do podejmowania decyzji dotyczących miksowania i powiadamiania aplikacji o stanie systemu.

W systemie Android 4.4 i wcześniejszych struktura podejmowała decyzje dotyczące miksowania, korzystając wyłącznie z typu strumienia audio. Jednak opieranie takich decyzji na typie strumienia było zbyt ograniczone, aby zapewnić wysoką jakość wyników w wielu aplikacjach i urządzeniach. Na przykład na urządzeniu mobilnym niektóre aplikacje (np. Google Maps) odtwarzały wskazówki dojazdu w strumieniu typu STREAM_MUSIC; jednakże na urządzeniach mobilnych w trybie projekcji (np. Android Auto) aplikacje nie mogą łączyć wskazówek dojazdu z innymi strumieniami multimediów.

Korzystając z interfejsu API atrybutów audio , aplikacje dostarczają systemowi audio szczegółowe informacje o konkretnym źródle dźwięku, w tym o sposobie użycia (dlaczego źródło jest odtwarzane), typie treści (co odtwarza źródło), flagach (w jaki sposób źródło powinno być odtwarzane), i konteksty (nowość w Androidzie 9). Składnia:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Stosowanie . Określa powód odtwarzania źródła i kontroluje decyzje dotyczące routingu, fokusu i głośności.
  • Typ zawartości . Określa, co odtwarza źródło (muzyka, film, mowa, sonifikacja, nieznane).
  • Kontekst . Wartości użytkowe wyabstrahowane do warstwy audio HAL.
  • Flagi . Określa sposób odtwarzania źródła. Obejmuje obsługę wymuszania słyszalności (w niektórych krajach wymagane są dźwięki migawki aparatu) i sprzętowej synchronizacji audio/wideo.

Aby przetwarzać dynamikę, aplikacje muszą rozróżniać zawartość filmową, muzyczną i mowę. Znaczenie mogą mieć również informacje o samych danych, takie jak głośność i szczytowa wartość próbki.

Użyj atrybutów

Użycie określa kontekst, w którym strumień jest używany, dostarczając informacji o tym, dlaczego dźwięk jest odtwarzany i do czego jest używany. Informacje o użyciu są bardziej wyraziste niż typ strumienia i umożliwiają platformom lub zasadom routingu uściślenie decyzji dotyczących wolumenu lub routingu.

Podaj jedną z następujących wartości użycia dla dowolnej instancji:

  • UŻYCIE_UNKNOWN
  • WYKORZYSTANIE_MEDIA
  • USAGE_VOICE_COMMUNICATION
  • USAGE_VOICE_COMMUNICATION_SIGNALLING
  • UŻYCIE_ALARM
  • USAGE_NOTIFICATION
  • USAGE_NOTIFICATION_TELEPHONY_RINGTONE
  • USAGE_NOTIFICATION_COMMUNICATION_REQUEST
  • USAGE_NOTIFICATION_COMMUNICATION_INSTANT
  • USAGE_NOTIFICATION_COMMUNICATION_DELAYED
  • USAGE_NOTIFICATION_EVENT
  • USAGE_ASSISTANCE_ACCESSIBILITY
  • USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
  • USAGE_ASSISTANCE_SONIFICATION
  • WYKORZYSTANIE_GRA
  • UŻYCIE_WIRTUALNEGO_ŹRÓDŁA
  • UŻYCIE_ASSISTANT

Wartości użycia atrybutów audio wzajemnie się wykluczają. Przykłady można znaleźć w definicjach USAGE_MEDIA i USAGE_ALARM ; wyjątki można znaleźć w definicji AudioAttributes.Builder .

Typ zawartości

Typ zawartości definiuje dźwięk i wyraża ogólną kategorię treści, taką jak film, mowa lub sygnał dźwiękowy/dzwonek. Struktura audio wykorzystuje informacje o typie zawartości do selektywnego konfigurowania bloków końcowego przetwarzania audio. Chociaż podanie typu zawartości jest opcjonalne, należy podać informację o typie, gdy typ zawartości jest znany, na przykład CONTENT_TYPE_MOVIE w przypadku usługi strumieniowego przesyłania filmów lub CONTENT_TYPE_MUSIC w przypadku aplikacji do odtwarzania muzyki.

Podaj jedną z następujących wartości typu zawartości dla dowolnej instancji:

  • CONTENT_TYPE_UNKNOWN (domyślnie)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Wartości typu zawartości atrybutu audio wzajemnie się wykluczają. Szczegółowe informacje na temat typów treści można znaleźć w interfejsie API atrybutów audio .

Konteksty

Każdy dźwięk w systemie Android jest identyfikowany przez odpowiedzialną aplikację i przyczynę wygenerowania dźwięku; i urządzenie z Androidem wykorzystuje te informacje do określenia sposobu prezentacji dźwięku. W systemie Android 8.xi starszym aplikacje mogą zgłaszać przyczynę generowania dźwięku, korzystając ze starszych typów strumieni (np. AudioSystem.STREAM_MUSIC ) lub AudioAttributes . W systemie Android 9 wartości AudioAttributes.usage są wyodrębniane na poziomie HAL jako Contexts .

Konteksty audio HAL Użycie atrybutów audio
MUZYKA GŁOSKA BEZDŹWIĘCZNA
KOMENDA GŁOSOWA UŻYCIE_ASSISTANT
NAWIGACJA ASSISTANCE_NAVIGATION_GUIDANCE
DZWONIĆ KOMUNIKACJA GŁOSOWA
DZWONEK NOTIFICATION_RINGTONE
POWIADOMIENIE POWIADOMIENIE
ALARM ALARM
SYSTEM_DŹWIĘK ASSISTANCE_SONIFICATION
NIEZNANY NIEZNANY

Dla dowolnej instancji możesz podać jedną z następujących wartości CONTEXT_NUMBER :

  • MUSIC_CONTEXT // Odtwarzanie muzyki
  • NAVIGATION_CONTEXT // Kierunki nawigacji
  • VOICE_COMMAND_CONTEXT // Sesja poleceń głosowych
  • CALL_RING_CONTEXT // Dzwonienie połączenia głosowego
  • CALL_CONTEXT // Połączenie głosowe
  • 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 środowisko audio stosuje efekty do odtwarzania dźwięku. Podaj jedną lub więcej z następujących flag dla instancji:

  • FLAG_AUDIBILITY_ENFORCED . Żąda od systemu zapewnienia słyszalności dźwięku. Użyj, aby zaspokoić potrzeby starszego STREAM_SYSTEM_ENFORCED (takie jak wymuszanie dźwięków migawki aparatu).
  • HW_AV_SYNC . Żąda od systemu wybrania strumienia wyjściowego obsługującego sprzętową synchronizację A/V.

Flagi atrybutów audio nie są wyłączne i można je łączyć. Szczegółowe informacje na temat tych flag można znaleźć w interfejsie API atrybutów audio .

Przykład

W tym przykładzie AudioAttributes.Builder definiuje AudioAttributes , które mają być używane przez nową instancję AudioTrack :

AudioTrack myTrack = new AudioTrack(
  new AudioAttributes.Builder()
 .setUsage(AudioAttributes.USAGE_MEDIA)
    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
    .build(),
  myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);

Zgodność

Twórcy aplikacji powinni używać atrybutów audio podczas tworzenia lub aktualizowania aplikacji dla systemu Android 5.0 i nowszych. Jednak aplikacje nie muszą korzystać z atrybutów; mogą obsługiwać tylko starsze typy strumieni lub pozostają nieświadome atrybutów (tj. ogólny odtwarzacz multimedialny, który nie wie nic o odtwarzanej treści).

W takich przypadkach platforma zachowuje kompatybilność wsteczną ze starszymi urządzeniami i wersjami Androida, automatycznie tłumacząc starsze typy strumieni audio na atrybuty audio. Jednak platforma nie wymusza ani nie gwarantuje tego mapowania na różnych urządzeniach, producentach lub wersjach Androida.

Mapowania zgodności:

Android 5.0 i 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

Przestarzałe typy strumieni

W systemie Android 9 wycofuje się następujące typy strumieni do użytku motoryzacyjnego:

  • STREAM_DEFAULT
  • STREAM_VOICE_CALL
  • STREAM_SYSTEM
  • STREAM_RING
  • STREAM_MUZYKA
  • STREAM_ALARM
  • STREAM_NOTIFICATION
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_ENFORCED
  • STREAM_DTMF
  • STREAM_TTS
  • STREAM_DOSTĘPNOŚĆ

Aby uzyskać więcej informacji, zobacz Automotive Audio .