4package org.qtproject.qt.android.multimedia;
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;
25 long mVideoDevicesNativePtr = 0;
27 Handler mAvailabilityCallbackHandler =
null;
30 QtCameraAvailabilityListener(Activity activity,
long videoDevicesNativePtr) {
31 mCameraManager = (CameraManager)
activity.getSystemService(Activity.CAMERA_SERVICE);
32 mVideoDevicesNativePtr = videoDevicesNativePtr;
46 mCameraManager.registerAvailabilityCallback(
this, mAvailabilityCallbackHandler);
53 final CountDownLatch latch =
new CountDownLatch(1);
54 final boolean postSuccess = mAvailabilityCallbackHandler.post(() -> {
55 mCameraManager.unregisterAvailabilityCallback(
this);
56 mVideoDevicesNativePtr = 0;
63 "Unable to post cleanup job to corresponding thread during " +
64 "QAndroidVideoDevices cleanup.");
70 }
catch (InterruptedException e) {
73 "Unable to wait for cleanup job to finish on corresponding thread during" +
74 "QAndroidVideoDevices cleanup.");
80 native
void onCameraAvailableNative(
long videoDevicesNativePtr);
85 public void onCameraAvailable(
String cameraId) {
86 assert(mVideoDevicesNativePtr != 0);
87 onCameraAvailableNative(mVideoDevicesNativePtr);
90 native
void onCameraUnavailableNative(
long videoDevicesNativePtr);
93 public void onCameraUnavailable(
String cameraId) {
94 assert(mVideoDevicesNativePtr != 0);
95 onCameraUnavailableNative(mVideoDevicesNativePtr);
99 public void onCameraAccessPrioritiesChanged() {
Q_CORE_EXPORT QtJniTypes::Activity activity()