Merge "Camera: Improve error handling of device state listeners" into udc-dev

This commit is contained in:
Treehugger Robot
2023-05-15 17:03:51 +00:00
committed by Android (Google) Code Review
2 changed files with 14 additions and 9 deletions

View File

@@ -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

View File

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