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") @GuardedBy("mLock")
private boolean mFoldedDeviceState; private boolean mFoldedDeviceState;
private final CameraManager.DeviceStateListener mFoldStateListener = private CameraManager.DeviceStateListener mFoldStateListener;
new CameraManager.DeviceStateListener() {
@Override
public final void onDeviceStateChanged(boolean folded) {
synchronized (mLock) {
mFoldedDeviceState = folded;
}
}};
private static final String TAG = "CameraCharacteristics"; 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 * 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 * Overrides the property value

View File

@@ -1836,6 +1836,7 @@ public final class CameraManager {
ctx.getSystemService(DeviceStateManager.class).registerCallback( ctx.getSystemService(DeviceStateManager.class).registerCallback(
new HandlerExecutor(mDeviceStateHandler), mFoldStateListener); new HandlerExecutor(mDeviceStateHandler), mFoldStateListener);
} catch (IllegalStateException e) { } catch (IllegalStateException e) {
mFoldStateListener = null;
Log.v(TAG, "Failed to register device state listener!"); Log.v(TAG, "Failed to register device state listener!");
Log.v(TAG, "Device state dependent characteristics updates will not be" + Log.v(TAG, "Device state dependent characteristics updates will not be" +
"functional!"); "functional!");