diff options
| author | 2023-05-15 17:03:51 +0000 | |
|---|---|---|
| committer | 2023-05-15 17:03:51 +0000 | |
| commit | cbfa540d34bf974263f9e072e2dd7fd3b35161f4 (patch) | |
| tree | 6a429c1a0a7e28b56e40e134c2e77728a0d13295 | |
| parent | 2f1dc4bd065ba7b48209679f46418efa7d2cff25 (diff) | |
| parent | 20a131fe3be17aad65e00d39446fcd7b6723f1ba (diff) | |
Merge "Camera: Improve error handling of device state listeners" into udc-dev
| -rw-r--r-- | core/java/android/hardware/camera2/CameraCharacteristics.java | 22 | ||||
| -rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 1 | 
2 files changed, 14 insertions, 9 deletions
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index e908ced06acd..48b5cac2a519 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -212,14 +212,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri      @GuardedBy("mLock")      private boolean mFoldedDeviceState; -    private final CameraManager.DeviceStateListener mFoldStateListener = -            new CameraManager.DeviceStateListener() { -                @Override -                public final void onDeviceStateChanged(boolean folded) { -                    synchronized (mLock) { -                        mFoldedDeviceState = folded; -                    } -                }}; +    private CameraManager.DeviceStateListener mFoldStateListener;      private static final String TAG = "CameraCharacteristics"; @@ -245,7 +238,18 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri      /**       * Return the device state listener for this Camera characteristics instance       */ -    CameraManager.DeviceStateListener getDeviceStateListener() { return mFoldStateListener; } +    CameraManager.DeviceStateListener getDeviceStateListener() { +        if (mFoldStateListener == null) { +            mFoldStateListener = new CameraManager.DeviceStateListener() { +                        @Override +                        public final void onDeviceStateChanged(boolean folded) { +                            synchronized (mLock) { +                                mFoldedDeviceState = folded; +                            } +                        }}; +        } +        return mFoldStateListener; +    }      /**       * Overrides the property value diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 51501b558fba..85f8ca66715b 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -1836,6 +1836,7 @@ public final class CameraManager {                          ctx.getSystemService(DeviceStateManager.class).registerCallback(                                  new HandlerExecutor(mDeviceStateHandler), mFoldStateListener);                      } catch (IllegalStateException e) { +                        mFoldStateListener = null;                          Log.v(TAG, "Failed to register device state listener!");                          Log.v(TAG, "Device state dependent characteristics updates will not be" +                                  "functional!");  |