summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/camera2/CameraManager.java39
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());
}
}