4package org.qtproject.qt.android.multimedia.qffmpeg;
6import android.app.Activity;
7import android.hardware.camera2.CameraManager;
8import android.os.Handler;
9import android.util.Log;
11import org.qtproject.qt.android.UsedFromNativeCode;
13import java.util.concurrent.CountDownLatch;
19class QtCameraAvailabilityListener
extends CameraManager.AvailabilityCallback {
21 static final String LOG_TAG =
"QtCameraAvailabilityListener";
23 CameraManager mCameraManager =
null;
26 long mVideoDevicesNativePtr = 0;
28 Handler mAvailabilityCallbackHandler =
null;
32 QtCameraAvailabilityListener(Activity activity,
long videoDevicesNativePtr) {
33 mCameraManager = (CameraManager)
activity.getSystemService(Activity.CAMERA_SERVICE);
34 mVideoDevicesNativePtr = videoDevicesNativePtr;
48 mCameraManager.registerAvailabilityCallback(
this, mAvailabilityCallbackHandler);
57 assert(!mAvailabilityCallbackHandler.getLooper().isCurrentThread());
61 final CountDownLatch latch =
new CountDownLatch(1);
62 final boolean postSuccess = mAvailabilityCallbackHandler.post(() -> {
63 mCameraManager.unregisterAvailabilityCallback(
this);
64 assert(mVideoDevicesNativePtr != 0);
65 mVideoDevicesNativePtr = 0;
72 "Unable to post cleanup job to corresponding thread during " +
73 "QAndroidVideoDevices cleanup.");
79 }
catch (Exception e) {
82 "Unable to wait for cleanup job to finish on corresponding thread during" +
83 "QAndroidVideoDevices cleanup.");
89 native
void onCameraAvailableNative(
long videoDevicesNativePtr);
94 public void onCameraAvailable(
String cameraId) {
95 assert(mAvailabilityCallbackHandler.getLooper().isCurrentThread());
96 assert(mVideoDevicesNativePtr != 0);
97 onCameraAvailableNative(mVideoDevicesNativePtr);
100 native
void onCameraUnavailableNative(
long videoDevicesNativePtr);
103 public void onCameraUnavailable(
String cameraId) {
104 assert(mAvailabilityCallbackHandler.getLooper().isCurrentThread());
105 assert(mVideoDevicesNativePtr != 0);
106 onCameraUnavailableNative(mVideoDevicesNativePtr);
110 public void onCameraAccessPrioritiesChanged() {
Q_CORE_EXPORT QtJniTypes::Activity activity()