Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Audiolatenz für App-Entwickler
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Für die niedrigste Audiolatenz empfehlen wir Oboe.
Oboe
Oboe verwendet natives Audio und basiert auf AAudio für Android 8.1 und höher sowie OpenSL ES für ältere Android-Versionen. Um die niedrigste Latenz für ein Gerät zu erreichen, legen Sie setPerformanceMode(oboe::PerformanceMode::LowLatency)
und setSharingMode(oboe::SharingMode::Exclusive)
fest.
Weitere Informationen zu Oboe finden Sie im Einstiegsleitfaden, in README.md
und im vollständigen Leitfaden. Eine Beispielanwendung mit Oboe finden Sie in der Soundboard App.
Hinweis:Wenn du AudioTrack zum Erstellen von Ausgabe-Audiostreams in Java für latenzempfindliche Anwendungen verwendest, verwende den Modus PERFORMANCE_MODE_LOW_LATENCY
.
Checkliste für die Implementierung
So verwendest du die native Audiofunktion von Android:
-
Laden Sie das Android NDK herunter und installieren Sie es.
-
Folgen Sie dem Startleitfaden für Oboe.
-
Rufen Sie
setPerformanceMode(oboe::PerformanceMode::LowLatency)
und setSharingMode(oboe::SharingMode::Exclusive)
im Oboe-Builder auf.
-
Verwenden Sie die empfohlene native Puffergröße und die empfohlene Abtastrate, die von android.media.AudioManager.getProperty(java.lang.String) zurückgegeben werden.
Hinweis:Für die Eingabe sollten dieselbe Puffergröße und dieselbe Abtastrate verwendet werden.
-
Halten Sie Ihre Callback-Handler kurz, ohne CPU-Auslastungsspitzen oder unbegrenztes Blockieren. Vermeiden Sie Prioritätsinversionen.
-
Verwenden Sie nicht blockierende Algorithmen, um zwischen Eingabe- und Ausgabe-Callback-Handlern sowie zwischen den Callback-Handlern und dem Rest Ihrer Anwendung zu kommunizieren.
Weitere Informationen
source.android.com
Die Website source.android.com richtet sich in erster Linie an OEMs, die Android-Geräte entwickeln, und an SoC-Anbieter, die diesen OEMs Komponenten liefern.
Auf dieser Website finden Sie jedoch eine Fülle nützlicher Informationen zur Latenz. Weitere Informationen finden Sie unter Audiolatenz.
android-ndk
Wenn Sie Fragen zur Verwendung von nativem Android-Audio haben, können Sie sie in der Diskussionsgruppe android-ndk stellen.
Fehler in Oboe melden
Wenn Sie Probleme mit Oboe haben, können Sie einen Fehler melden.
Videos
- Einführung in Oboe
- Audio mit niedriger Latenz – weil deine Ohren es wert sind
- Android Dev Summit 2018.
- Erfolgreich auf Android-Geräten – Audio-Apps für Android optimieren
- Android Developer Challenge 2018.
- Hochleistungsaudio auf Android-Geräten
(Google I/O 2013)
- Im gesamten Video geht es um Latenz.
- Hervorragende Multimedia-Funktionen auf Android-Geräten entwickeln
(Google I/O 2014)
- Die ersten 14 Minuten drehen sich um Audio im Allgemeinen und um die Eingabelatenz im Besonderen.
- Audiolatenz: Puffergrößen (100 Tage Google Dev)
- Beschreibt den Zusammenhang zwischen Audiolatenz, Puffergrößen und Aufgabenplanung.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-03-26 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-03-26 (UTC)."],[],[],null,["# Audio latency for app developers\n\nFor the lowest possible audio latency, we recommend you use [Oboe](https://developer.android.com/games/sdk/oboe).\n\nOboe\n----\n\n[Oboe](https://github.com/google/oboe) uses native audio and is built\non AAudio for Android 8.1+ and OpenSL ES for older versions of Android. To achieve the lowest\npossible latency for a device, set `setPerformanceMode(oboe::PerformanceMode::LowLatency)`\nand `setSharingMode(oboe::SharingMode::Exclusive)`.\nSee the [Getting started guide](https://github.com/google/oboe/blob/main/docs/GettingStarted.md),\n[`README.md`](https://github.com/google/oboe/blob/main/README.md),\nand [Full guide](https://github.com/google/oboe/blob/main/docs/FullGuide.md) for more\ninformation on Oboe. Refer to the [Soundboard app](https://github.com/google/oboe/tree/main/samples/SoundBoard)\nfor a sample app using Oboe.\n\n**Note:** If you use [AudioTrack](https://developer.android.com/reference/android/media/AudioTrack)\nfor creating output audio streams in Java for latency sensitive applications, use the [`PERFORMANCE_MODE_LOW_LATENCY`](https://developer.android.com/reference/android/media/AudioTrack#PERFORMANCE_MODE_LOW_LATENCY)\nmode.\n\n\u003cbr /\u003e\n\nImplementation checklist\n------------------------\n\nTo use Android native audio:\n\n1. Download and install the [Android NDK](https://developer.android.com/tools/sdk/ndk/index.html).\n2. Follow the [Getting started guide](https://github.com/google/oboe/blob/main/docs/GettingStarted.md) for Oboe.\n3. Call `setPerformanceMode(oboe::PerformanceMode::LowLatency)` and `setSharingMode(oboe::SharingMode::Exclusive)` on the Oboe builder.\n4. Use the recommended native buffer size and sample rate returned by [android.media.AudioManager.getProperty(java.lang.String)](http://developer.android.com/reference/android/media/AudioManager.html#getProperty(java.lang.String)).\n\n **Note:** The same buffer size and sample rate should also be used for input.\n5. Keep your callback handlers short, without bursty CPU usage or unbounded blocking. Avoid [priority inversion.](/docs/core/audio/avoiding_pi)\n6. Consider using [non-blocking algorithms](/docs/core/audio/avoiding_pi#nonBlockingAlgorithms) to communicate between input and output callback handlers, and between the callback handlers and the rest of your application.\n\nOther resources\n---------------\n\n### source.android.com\n\n\nThe site [source.android.com](/)\nis primarily designed for OEMs building Android\ndevices, and the SoC vendors who supply components to these OEMs.\n\n\nHowever, there is a wealth of useful information about latency at this site, so\nyou may want to review it. See the articles at\n[Audio latency.](/docs/core/audio/latency/latency)\n\n### android-ndk\n\n\nIf you have questions about how to use Android native audio, you can ask at the discussion group\n[android-ndk](https://groups.google.com/forum/#!forum/android-ndk).\n\n### Report bugs on Oboe\n\n\nIf you have issues using Oboe, you can\n[file a bug](https://github.com/google/oboe/issues).\n\n### Videos\n\n[Getting started with Oboe](https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_duWv9IPNvx9YBudNMmLSa)\n[Low Latency Audio - Because Your Ears Are Worth It](https://www.youtube.com/watch?v=8vOf_fDtur4)\n: Android Dev Summit 2018.\n\n[Winning on Android - How to optimize an Android audio app](https://www.youtube.com/watch?v=tWBojmBpS74)\n: Android Developer Challenge 2018.\n\n[High performance audio on Android](https://youtu.be/d3kfEeMZ65c)\n(Google I/O 2013)\n: The whole video is about latency.\n\n[Building great multi-media experiences on Android](https://youtu.be/92fgcUNCHic)\n(Google I/O 2014)\n: The first 14 minutes are about audio in general and input latency in particular.\n\n[Audio latency: buffer sizes](https://youtu.be/PnDK17zP9BI)\n(100 Days of Google Dev)\n: Describes the relationship between audio latency, buffer sizes, and task scheduling."]]