A list of important audio features, bugs, fixes and workarounds for various Android versions. (List of all Android Versions)
-
Bug in AAudio on RQ1A (Oboe works around this issue from version 1.5 onwards). A stream is normally disconnected when a headset is plugged in or because of other device changes. An
AAUDIO_ERROR_DISCONNECTED
error code should be passed to the error callback. But a bug in Shared MMAP streams causesAAUDIO_ERROR_TIMEOUT
to be returned. So if your error callback is checking forAAUDIO_ERROR_DISCONNECTED
then it may not respond properly. We recommend always stopping and closing the stream regardless of the error code. Oboe does this. So if you are using Oboe callbacks you are OK. This issue was not in the original R release. It was introduced in RQ1A, which is being delivered by OTA starting in November 2020. It will be fixed in a future update. Follow it on this public Android issue. -
Fixed. A race condition in AudioFlinger could cause an assert in releaseBuffer() when a headset was plugged in or out. More details here
- Fixed: Setting capacity of Legacy input streams < 4096 can prevent use of FAST path. google#183. Also fixed in AAudio with ag/7116429
- Add InputPreset:VoicePerformance for low latency recording.
- Regression bug: [AAudio] Headphone disconnect event not fired for MMAP streams. See P item below. Still in first Q release but fixed in some Q updates.
- AAudio adds support for setUsage(), setSessionId(), setContentType(), setInputPreset() for builders.
- Regression bug: [AAudio] Headphone disconnect event not fired for MMAP streams. Issue #252 Also see tech note Disconnected Streams.
- AAudio input streams with LOW_LATENCY will open a FAST path using INT16 and convert the data to FLOAT if needed. See: google#276
- Oboe uses AAudio by default.
- AAudio MMAP data path enabled on Pixel devices. PerformanceMode::Exclusive supported.
- Fixed: [AAudio] RefBase issue
- Fixed: Requesting a stereo recording stream can result in sub-optimal latency.
- AAudio API introduced
- Bug: RefBase issue causes crash after stream closed. This why AAudio is not recommended for 8.0. Oboe will use OpenSL ES for 8.0 and earlier. google#40
- Bug: Requesting a stereo recording stream can result in sub-optimal latency. Details
- OpenSL adds supports for setting and querying of PerformanceMode.
- OpenSL method
acquireJavaProxy
added, which allows the Java AudioTrack object associated with playback to be obtained (which allows underrun count).
- Floating point recording supported. But it does not allow a FAST "low latency" path.
- MIDI API introduced
- Sound output is broken on the API 23 emulator
- Floating point playback supported.