Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Latensi audio untuk developer aplikasi
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Untuk latensi audio serendah mungkin, sebaiknya gunakan Oboe.
Oboe
Oboe menggunakan audio native dan di-build
di AAudio untuk Android 8.1+ dan OpenSL ES untuk versi Android yang lebih lama. Untuk mencapai latensi
terendah untuk perangkat, tetapkan setPerformanceMode(oboe::PerformanceMode::LowLatency)
dan setSharingMode(oboe::SharingMode::Exclusive)
.
Lihat Panduan memulai,
README.md
,
dan Panduan lengkap untuk mengetahui informasi
selengkapnya tentang Oboe. Lihat aplikasi Soundboard
untuk aplikasi contoh yang menggunakan Oboe.
Catatan: Jika Anda menggunakan AudioTrack
untuk membuat streaming audio output di Java untuk aplikasi yang sensitif terhadap latensi, gunakan mode
PERFORMANCE_MODE_LOW_LATENCY
.
Checklist penerapan
Untuk menggunakan audio native Android:
-
Download dan instal
Android NDK.
-
Ikuti Panduan memulai
untuk Oboe.
-
Panggil
setPerformanceMode(oboe::PerformanceMode::LowLatency)
dan setSharingMode(oboe::SharingMode::Exclusive)
di builder Oboe.
-
Gunakan ukuran buffer native dan frekuensi sampel yang direkomendasikan yang ditampilkan oleh
android.media.AudioManager.getProperty(java.lang.String).
Catatan: Ukuran buffer dan frekuensi sampel yang sama juga harus digunakan untuk input.
-
Buat pengendali callback Anda singkat, tanpa penggunaan CPU yang tiba-tiba atau pemblokiran yang tidak terbatas. Hindari
inversi prioritas.
-
Pertimbangkan untuk menggunakan
algoritma non-blocking
untuk berkomunikasi antara pengendali callback input dan output,
dan antara pengendali callback dan seluruh aplikasi Anda.
Referensi lainnya
source.android.com
Situs source.android.com
didesain terutama untuk OEM yang mem-build perangkat
Android, dan vendor SoC yang memasok komponen ke OEM ini.
Namun, ada banyak informasi berguna tentang latensi di situs ini, jadi
Anda dapat meninjaunya. Lihat artikel di
Latensi audio.
android-ndk
Jika ada pertanyaan tentang cara menggunakan audio native Android, Anda dapat bertanya di grup diskusi
android-ndk.
Melaporkan bug di Oboe
Jika mengalami masalah saat menggunakan Oboe, Anda dapat
melaporkan bug.
Video
- Mulai menggunakan Oboe
- Audio Latensi Rendah - Karena Telinga Anda Layak Mendapatkan yang Terbaik
- Android Dev Summit 2018.
- Menang di Android - Cara mengoptimalkan aplikasi audio Android
- Tantangan Developer Android 2018.
- Audio berperforma tinggi di Android
(Google I/O 2013)
- Seluruh video membahas latensi.
- Membuat pengalaman multimedia yang luar biasa di Android
(Google I/O 2014)
- 14 menit pertama membahas audio secara umum dan latensi input secara khusus.
- Latensi audio: ukuran buffer
(100 Days of Google Dev)
- Menjelaskan hubungan antara latensi audio, ukuran buffering, dan penjadwalan tugas.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-03-26 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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."]]