Jami on Android TV + USB camera stops video after ~20 mins (Camera API issue?)

Hi there,

I’m using Jami on an Android TV device (e.g., Google TV streamer) with a USB webcam (such as Logitech C922 Pro) connected via USB. I’m experiencing a critical issue during video calls:

  • When starting a video call, the camera feed works initially, but stops after approximately 20 minutes.
  • Restarting the app does not resolve the issue. Only a full device reboot (hard reset) allows the USB camera to work again.
  • The USB camera continues to work with third-party apps (e.g., USB Camera app), so the hardware itself is fine.
  • This problem only occurs on Android 14 and not on Android 12.
  • It seems to affect only apps using the Google Camera API. Apps that avoid using it (e.g., libuvc-based) do not exhibit this issue.

Given this, I suspect a serious bug in the Camera API implementation on Android 14.

Does Jami currently use the Google Camera API on Android?
Would the development team consider implementing an alternative (e.g., libuvc, OpenCV) to ensure stable use with USB cameras on Android TV?

If anyone else is using Jami in a similar setup, I would appreciate it if you could share your experience.

1 Like

jami still needs more and more timely fixes and improvements

Can you point out its class name? I haven’t heard this.

Files that contain “.Camera”:

jami-android/app/src/main/java/cx/ring/tv/main/HomeActivity.kt
jami-android/app/src/main/java/cx/ring/tv/camera/CustomCameraActivity.kt
jami-android/app/src/main/java/cx/ring/tv/camera/CameraPreview.kt
jami-android/app/src/main/java/cx/ring/services/HardwareServiceImpl.kt
jami-android/app/src/main/java/cx/ring/services/CameraService.kt

Thank you for your question.

From what I can see, I suspect that Jami uses Android’s standard Camera2 API (part of the android.hardware.camera2 package) rather than Google’s own Camera API.

The SDK for Android TV and Android in general uses the standard Camera framework provided by Android.

You may find class references like .Camera in your source files, which usually refer to one of the following classes:

Legacy android.hardware.Camera (deprecated since API 21)

Or an inner class that uses a wrapper class or abstract class for Camera2

Class name: android.hardware.camera2.CameraDevice (and related classes like CameraManager, CameraCaptureSession, etc.)

If you find .Camera in your Jami source files, this is likely a custom class or wrapper class rather than using a specific “Google Camera API” directly.

These APIs seem to stop working after 20 minutes of use.

In fact, if you try it with (GoogleTV streamer AndroidOS14), the outage will occur for about 20 minutes, so I would like Jami to test it.
We had a similar problem that caused us to stop streaming [TrueConf].