Merge "Camera: Handle ISE when device state manager is absent" into sc-v2-dev am: a8a33c88f2 am: 24a011273a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16034842

Change-Id: Id0b8d3ed9acdc0e70dd82d78fca964309f75b53f
This commit is contained in:
Emilian Peev
2021-10-13 23:10:20 +00:00
committed by Automerger Merge Worker

View File

@@ -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));
}
}
}