Merge "Camera: Move the device state listener to CameraManagerGlobal" into udc-dev am: 1949caea12

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21918367

Change-Id: Ib118c823ac5bfae1575941aa120ed29298699b0d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Emilian Peev
2023-03-29 16:36:17 +00:00
committed by Automerger Merge Worker

View File

@@ -152,21 +152,8 @@ public final class CameraManager {
mContext.checkSelfPermission(CAMERA_OPEN_CLOSE_LISTENER_PERMISSION) == mContext.checkSelfPermission(CAMERA_OPEN_CLOSE_LISTENER_PERMISSION) ==
PackageManager.PERMISSION_GRANTED; PackageManager.PERMISSION_GRANTED;
} }
mFoldStateListener = new FoldStateListener(context);
try {
context.getSystemService(DeviceStateManager.class).registerCallback(
new HandlerExecutor(CameraManagerGlobal.get().getDeviceStateHandler()),
mFoldStateListener);
} catch (IllegalStateException e) {
Log.v(TAG, "Failed to register device state listener!");
Log.v(TAG, "Device state dependent characteristics updates will not be functional!");
mFoldStateListener = null;
}
} }
private FoldStateListener mFoldStateListener;
/** /**
* @hide * @hide
*/ */
@@ -228,12 +215,7 @@ public final class CameraManager {
* @hide * @hide
*/ */
public void registerDeviceStateListener(@NonNull CameraCharacteristics chars) { public void registerDeviceStateListener(@NonNull CameraCharacteristics chars) {
synchronized (mLock) { CameraManagerGlobal.get().registerDeviceStateListener(chars, mContext);
DeviceStateListener listener = chars.getDeviceStateListener();
if (mFoldStateListener != null) {
mFoldStateListener.addDeviceStateListener(listener);
}
}
} }
/** /**
@@ -1781,6 +1763,7 @@ public final class CameraManager {
private HandlerThread mDeviceStateHandlerThread; private HandlerThread mDeviceStateHandlerThread;
private Handler mDeviceStateHandler; private Handler mDeviceStateHandler;
private FoldStateListener mFoldStateListener;
// Singleton, don't allow construction // Singleton, don't allow construction
private CameraManagerGlobal() { } private CameraManagerGlobal() { }
@@ -1795,7 +1778,8 @@ public final class CameraManager {
return gCameraManager; return gCameraManager;
} }
public Handler getDeviceStateHandler() { public void registerDeviceStateListener(@NonNull CameraCharacteristics chars,
@NonNull Context ctx) {
synchronized(mLock) { synchronized(mLock) {
if (mDeviceStateHandlerThread == null) { if (mDeviceStateHandlerThread == null) {
mDeviceStateHandlerThread = new HandlerThread(TAG); mDeviceStateHandlerThread = new HandlerThread(TAG);
@@ -1803,7 +1787,20 @@ public final class CameraManager {
mDeviceStateHandler = new Handler(mDeviceStateHandlerThread.getLooper()); mDeviceStateHandler = new Handler(mDeviceStateHandlerThread.getLooper());
} }
return mDeviceStateHandler; if (mFoldStateListener == null) {
mFoldStateListener = new FoldStateListener(ctx);
try {
ctx.getSystemService(DeviceStateManager.class).registerCallback(
new HandlerExecutor(mDeviceStateHandler), mFoldStateListener);
} catch (IllegalStateException e) {
Log.v(TAG, "Failed to register device state listener!");
Log.v(TAG, "Device state dependent characteristics updates will not be" +
"functional!");
return;
}
}
mFoldStateListener.addDeviceStateListener(chars.getDeviceStateListener());
} }
} }