diff options
| -rw-r--r-- | core/java/android/hardware/camera2/CameraManager.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 4b8900572ca6..93f1d615b98b 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -117,8 +117,16 @@ public final class CameraManager { mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper()); mFoldStateListener = new FoldStateListener(context); - context.getSystemService(DeviceStateManager.class) - .registerCallback(new HandlerExecutor(mHandler), mFoldStateListener); + try { + context.getSystemService(DeviceStateManager.class) + .registerCallback(new HandlerExecutor(mHandler), 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!"); + mHandlerThread.quitSafely(); + mHandler = null; + mFoldStateListener = null; + } } private HandlerThread mHandlerThread; @@ -184,7 +192,9 @@ public final class CameraManager { synchronized (mLock) { DeviceStateListener listener = chars.getDeviceStateListener(); listener.onDeviceStateChanged(mFoldedDeviceState); - mDeviceStateListeners.add(new WeakReference<>(listener)); + if (mFoldStateListener != null) { + mDeviceStateListeners.add(new WeakReference<>(listener)); + } } } |