diff options
| -rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 144b1de148b4..93d6d6d5805f 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -152,21 +152,8 @@ public final class CameraManager { mContext.checkSelfPermission(CAMERA_OPEN_CLOSE_LISTENER_PERMISSION) == 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 */ @@ -228,12 +215,7 @@ public final class CameraManager { * @hide */ public void registerDeviceStateListener(@NonNull CameraCharacteristics chars) { - synchronized (mLock) { - DeviceStateListener listener = chars.getDeviceStateListener(); - if (mFoldStateListener != null) { - mFoldStateListener.addDeviceStateListener(listener); - } - } + CameraManagerGlobal.get().registerDeviceStateListener(chars, mContext); } /** @@ -1781,6 +1763,7 @@ public final class CameraManager { private HandlerThread mDeviceStateHandlerThread; private Handler mDeviceStateHandler; + private FoldStateListener mFoldStateListener; // Singleton, don't allow construction private CameraManagerGlobal() { } @@ -1795,7 +1778,8 @@ public final class CameraManager { return gCameraManager; } - public Handler getDeviceStateHandler() { + public void registerDeviceStateListener(@NonNull CameraCharacteristics chars, + @NonNull Context ctx) { synchronized(mLock) { if (mDeviceStateHandlerThread == null) { mDeviceStateHandlerThread = new HandlerThread(TAG); @@ -1803,7 +1787,20 @@ public final class CameraManager { 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()); } } |