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

This commit is contained in:
Emilian Peev
2021-10-13 22:42:18 +00:00
committed by Android (Google) Code Review

View File

@@ -109,8 +109,16 @@ public final class CameraManager {
mHandlerThread.start(); mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper()); mHandler = new Handler(mHandlerThread.getLooper());
mFoldStateListener = new FoldStateListener(context); mFoldStateListener = new FoldStateListener(context);
try {
context.getSystemService(DeviceStateManager.class) context.getSystemService(DeviceStateManager.class)
.registerCallback(new HandlerExecutor(mHandler), mFoldStateListener); .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; private HandlerThread mHandlerThread;
@@ -176,9 +184,11 @@ public final class CameraManager {
synchronized (mLock) { synchronized (mLock) {
DeviceStateListener listener = chars.getDeviceStateListener(); DeviceStateListener listener = chars.getDeviceStateListener();
listener.onDeviceStateChanged(mFoldedDeviceState); listener.onDeviceStateChanged(mFoldedDeviceState);
if (mFoldStateListener != null) {
mDeviceStateListeners.add(new WeakReference<>(listener)); mDeviceStateListeners.add(new WeakReference<>(listener));
} }
} }
}
/** /**
* Return the list of currently connected camera devices by identifier, including * Return the list of currently connected camera devices by identifier, including