Audioattribute

Audioplayer unterstützen Attribute, mit denen definiert wird, wie das Audiosystem Routing-, Lautstärke- und Fokusentscheidungen für die angegebene Quelle. Anwendungen Attribute zur Audiowiedergabe hinzufügen (z. B. Musik, die von einem Streaming-Dienst oder eine Benachrichtigung über eine neue E-Mail erhalten, und leiten Sie dann den Ton weiter. Quellattribute an das Framework, wobei das Audiosystem die Attribute gemischte Entscheidungen zu treffen und Anwendungen über den Status der System.

Unter Android 4.4 und früheren Versionen traf das Framework für kombinierte Entscheidungen den Typ des Audiostreams. Jedoch war es zu schwierig, solche Entscheidungen auf dem Streamtyp um qualitativ hochwertige Ergebnisse über mehrere Anwendungen und Geräte hinweg zu produzieren. Auf einem Mobilgerät haben einige Anwendungen (z.B. Google Maps) beispielsweise Wegbeschreibungen für den Streamtyp STREAM_MUSIC jedoch auf Mobilgeräten, Projektionsmodus (z.B. Android Auto) verwenden, dürfen die Apps beim Fahren nicht mit anderen Medien-Streams.

Mit der Audio Attribute API enthalten, stellen Anwendungen dem Audiosystem detaillierte Informationen zu einer bestimmten Audioquelle, einschließlich der Nutzung (warum die Quelle wiedergegeben), Content-Typ (welche Quelle spielt die Quelle ab), Flags (wie die Quelle sollte abgespielt werden) und Kontexte (neu in Android 9). Syntax:

AudioAttributes {
    mUsage
    mContentType
    mSource
    mFlags
    mTags / mFormattedTags / mBundle    (key value pairs)
}
  • Nutzung: Gibt an, warum die Quelle spielt und steuert Routing-, Fokus- und Volumenentscheidungen.
  • Inhaltstyp: Gibt an, was von der Quelle wiedergegeben wird (Musik, Film, Sprache, Sonifikation, unbekannt).
  • Context (Kontext): Nutzungswerte, die vom Audio-HAL abstrahiert werden.
  • Flags: Gibt an, wie die Quelle wiedergegeben werden soll. Beinhaltet Support für die Durchsetzung der Hörbarkeit (Auslösergeräusche in einigen Ländern) und die Audio-/Videosynchronisierung der Hardware.

Für die dynamische Verarbeitung müssen Anwendungen zwischen Film, Musik, und Sprachinhalte. Informationen über die Daten selbst können ebenfalls wichtig sein, wie Lautstärke und Sample-Spitzenwert.

Attribute verwenden

Die Nutzung gibt den Kontext an, in dem der Stream verwendet wird. Informationen dazu, warum er abgespielt wird und wofür er verwendet wird. Nutzungsinformationen sind aussagekräftiger als ein Streamtyp und ermöglichen Plattformen, oder Routingrichtlinien, um Volumen- oder Routing-Entscheidungen zu optimieren.

Geben Sie für jede Instanz einen der folgenden Nutzungswerte an:

  • UNBEKANNT VERWENDET
  • NUTZUNG_MEDIEN
  • NUTZUNG_VOICE_KOMMUNIKATION
  • NUTZUNG_VOICE_COMMUNICATION_SIGNALLING
  • VERWENDUNG_ALARM
  • NUTZUNG_BENACHRICHTIGUNG
  • NUTZUNG_BENACHRICHTIGUNG_TELEPHONY_RINGTONE
  • USAGE_NOTIFICATION_COMMUNICATION_REQUEST
  • NUTZUNG_BENACHRICHTIGUNG_KOMMUNIKATION_INSTANT
  • USAGE_NOTIFICATION_COMMUNICATION_VERSPÄTET
  • NUTZUNG_BENACHRICHTIGUNG_EREIGNIS
  • NUTZUNG_ASSISTANCE_ACCESSIBILITY
  • USAGE_UNTERSTÜTZUNG_NAVIGATION_ANLEITUNG
  • NUTZUNG_UNTERSTÜTZUNG_SONIFICATION
  • NUTZUNG_SPIEL
  • VERWENDUNG_VIRTUAL_QUELLE
  • VERWENDUNG_ASSISTANT

Nutzungswerte für Audioattribute schließen sich gegenseitig aus. Beispiele finden Sie unter USAGE_MEDIA und USAGE_ALARM Definitionen; finden Sie in der AudioAttributes.Builder Definition.

Inhaltstyp

Der Inhaltstyp definiert den Ton und drückt die allgemeine Kategorie aus des Inhalts wie Film, Sprache oder Signalton. Das Audio-Framework nutzt Inhaltstyp-Informationen, um die Audionachverarbeitung selektiv zu konfigurieren Blöcken. Die Angabe des Inhaltstyps ist optional, Sie sollten jedoch den Typ immer dann, wenn der Inhaltstyp bekannt ist, z. B. CONTENT_TYPE_MOVIE für einen Streamingdienst oder CONTENT_TYPE_MUSIC für eine App zur Musikwiedergabe

Geben Sie für jede Instanz einen der folgenden Werte für den Inhaltstyp an:

  • CONTENT_TYPE_UNKNOWN (Standard)
  • CONTENT_TYPE_MOVIE
  • CONTENT_TYPE_MUSIC
  • CONTENT_TYPE_SONIFICATION
  • CONTENT_TYPE_SPEECH

Die Werte für den Inhaltstyp des Audioattributs schließen sich gegenseitig aus. Weitere Informationen zu Inhaltstypen finden Sie in der Audio Attribut-API.

Kontexte

Jeder Ton in Android wird durch die entsprechende Anwendung und den Grund angegeben. zur Tongenerierung. und das Android-Gerät nutzt diese Informationen, wie der Ton präsentiert wird. Unter Android 8.x und niedriger können Apps melde den Grund für die Tongenerierung mit älteren Streamtypen (z.B. AudioSystem.STREAM_MUSIC) oder AudioAttributes. In Android 9, AudioAttributes.usage Werte werden auf HAL-Ebene als Contexts (Kontexte) abstrahiert.

HAL-Audiokontexte Verwendung von AudioAttributes
MUSIK MEDIEN
VOICE_BEFEHL VERWENDUNG_ASSISTANT
NAVIGATION ASSISTANCE_NAVIGATION_ANLEITUNG
ANRUFEN SPRACHKOMMUNIKATION
RINGTON BENACHRICHTIGUNG_RINGTONE
BENACHRICHTIGUNG BENACHRICHTIGUNG
WECKER WECKER
SYSTEM_TON UNTERSTÜTZUNG_SONIFICATION
UNBEKANNT UNBEKANNT

Sie können für jeden der folgenden CONTEXT_NUMBER-Werte Instanz:

  • MUSIC_CONTEXT // Musikwiedergabe
  • NAVIGATION_CONTEXT // Navigationsrouten
  • VOICE_COMMAND_CONTEXT // Sprachbefehlsitzung
  • CALL_RING_CONTEXT // Klingeln bei Sprachanruf
  • CALL_CONTEXT // Sprachanruf
  • ALARM_CONTEXT // Alarmton von Android
  • NOTIFICATION_CONTEXT // Benachrichtigungen
  • SYSTEM_SOUND_CONTEXT // Töne für Nutzerinteraktionen (Klicks auf Schaltflächen usw.)

Flaggen

Flags geben an, wie das Audio-Framework Effekte auf die Audiowiedergabe anwendet. Geben Sie eines oder mehrere der folgenden Flags für eine Instanz an:

  • FLAG_AUDIBILITY_ENFORCED Fordert das System auf, Hörbarkeit des Tons. Zur Erfüllung der Anforderungen von Legacy- STREAM_SYSTEM_ENFORCED (z. B. das Erzwingen von Auslösetönen).
  • HW_AV_SYNC Fordert das System an, einen Ausgabestream auszuwählen die die Audio-/Videosynchronisierung der Hardware unterstützt.

Audioattribut-Flags sind nicht exklusiv und können kombiniert werden. Weitere Informationen zu verweisen Sie auf die Audio Attribut-API.

Beispiel

In diesem Beispiel definiert AudioAttributes.Builder den Parameter AudioAttributes wird von einem neuen AudioTrack verwendet Instanz:

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

Kompatibilität

Anwendungsentwickler sollten Audioattribute beim Erstellen oder Aktualisieren für Android 5.0 und höher. Anwendungen sind jedoch nicht um Attribute nutzen zu können; kann es ältere Streamtypen verarbeiten. oder die Attribute nicht kennen (z.B. ein generischer Mediaplayer, der nichts über den wiedergegebenen Inhalt weiß).

In solchen Fällen hält das Framework die Abwärtskompatibilität mit älteren Geräte und Android-Releases durch automatische Übersetzung alter Audiostreams Audioattributen zuordnen. Das Framework erzwingt jedoch keine diese Zuordnung für alle Geräte, Hersteller oder Android-Releases garantieren.

Kompatibilitätszuordnungen:

Android 5.0 oder höher Android 4.4 und niedriger
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 (@hide) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED (@hide) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
(@hide) STREAM_DTMF

Eingestellte Streamtypen

Unter Android 9 werden die folgenden Streamtypen für Verwendung in der Automobilbranche:

  • STREAM_STANDARD
  • STREAM_SPRACHANRUF
  • STREAM_SYSTEM
  • STREAM_RING
  • MUSIKSTREAM
  • STREAM_ALARM
  • STREAM-BENACHRICHTIGUNG
  • STREAM_BLUETOOTH_SCO
  • STREAM_SYSTEM_DURCHGESETZT
  • STREAM_DTMF
  • STREAM_TTS
  • STREAM_ZUGRIFF

Weitere Informationen finden Sie unter Automobil-Audio