I’m running into an issue on Android where I cannot simultaneously use the video and audio interfaces of a single external USB device. I’m trying to determine whether this is a limitation of Android’s USB/audio architecture or something incorrect in my implementation.
This is not an issue on all devices, only some (until now only) Samsung devices.
I’ve got an external USB device , connected (USB-C 2.0, isochronous) to an android mobile device:
The USB device exposes:
a UVC camera
a UAC microphone
So it’s a single composite device with separate interfaces for video and audio.
From the logs:
Interfaces 0–7 -> UVC (class 14)
Interfaces 8–10 -> USB Audio (class 1)
What I am doing:
For video:
Using UVC via USB host
Tried both AndroidUSBCamera and UVCCamera, currently going with UVCCamera
For audio:
Using Android’s normal audio stack (AudioRecord)
Selecting the USB mic
Both share the same underlying USB device session in my code, but:
Camera is handled via native USB (libuvc-style)
Audio goes through Android framework
What happens:
Start camera and put it in a preview, works fine
After a small delay
Start mic
Video dies but microphone still works
When I restart the camera, then the audio fails
Same when do the mic first. It feels as if the audio “takes over” the device and kills the video stream.
What I’ve tested
Camera only works
Audio only works
Both together conflicts
When I plug in other webcams to test, then this also happens.
Also:
Tried different UVC libs (saki4510t UVCCamera, AndroidUSBCamera, alexey-pelykh UVCCamera), but ended in the same behavior
Different configs (FPS, resolution, buffer sizes), no real change
This issue does not occur on the following Samsung devices: A16, A6, A50, S24 FE, S24
But it does occur on these: S22, S22 Ultra, A53, A35, A26
My suspicion:
It feels like an Android USB ownership issue, not a timing bug.
My current theory:
The device is composite (video + audio interfaces)
UVC library uses Android USB host API (user-space)
Android audio stack uses system-level USB audio driver
When audio starts, Android:
reclaims something
reconfigures endpoints
or otherwise interferes with the device
So two different “USB stacks” are fighting over one physical device?..
How, do I receive isochronous video and audio from an external USB device on android.
video (UVC)
audio (USB mic) (UAC?)
from the same device, at the same time.
If anyone has dealt with this or has pointers such as existing libs (or even “this is impossible on stock Android”), I’d really appreciate it