diff options
| -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!"); |