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