Merge "Camera: Use a single handler thread for device state callbacks" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5f614202f9
@@ -142,24 +142,18 @@ public final class CameraManager {
|
|||||||
PackageManager.PERMISSION_GRANTED;
|
PackageManager.PERMISSION_GRANTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
mHandlerThread = new HandlerThread(TAG);
|
|
||||||
mHandlerThread.start();
|
|
||||||
mHandler = new Handler(mHandlerThread.getLooper());
|
|
||||||
mFoldStateListener = new FoldStateListener(context);
|
mFoldStateListener = new FoldStateListener(context);
|
||||||
try {
|
try {
|
||||||
context.getSystemService(DeviceStateManager.class)
|
context.getSystemService(DeviceStateManager.class).registerCallback(
|
||||||
.registerCallback(new HandlerExecutor(mHandler), mFoldStateListener);
|
new HandlerExecutor(CameraManagerGlobal.get().getDeviceStateHandler()),
|
||||||
|
mFoldStateListener);
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
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 functional!");
|
Log.v(TAG, "Device state dependent characteristics updates will not be functional!");
|
||||||
mHandlerThread.quitSafely();
|
|
||||||
mHandler = null;
|
|
||||||
mFoldStateListener = null;
|
mFoldStateListener = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private HandlerThread mHandlerThread;
|
|
||||||
private Handler mHandler;
|
|
||||||
private FoldStateListener mFoldStateListener;
|
private FoldStateListener mFoldStateListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1645,6 +1639,9 @@ public final class CameraManager {
|
|||||||
private ICameraService mCameraService;
|
private ICameraService mCameraService;
|
||||||
private boolean mHasOpenCloseListenerPermission = false;
|
private boolean mHasOpenCloseListenerPermission = false;
|
||||||
|
|
||||||
|
private HandlerThread mDeviceStateHandlerThread;
|
||||||
|
private Handler mDeviceStateHandler;
|
||||||
|
|
||||||
// Singleton, don't allow construction
|
// Singleton, don't allow construction
|
||||||
private CameraManagerGlobal() { }
|
private CameraManagerGlobal() { }
|
||||||
|
|
||||||
@@ -1658,6 +1655,18 @@ public final class CameraManager {
|
|||||||
return gCameraManager;
|
return gCameraManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Handler getDeviceStateHandler() {
|
||||||
|
synchronized(mLock) {
|
||||||
|
if (mDeviceStateHandlerThread == null) {
|
||||||
|
mDeviceStateHandlerThread = new HandlerThread(TAG);
|
||||||
|
mDeviceStateHandlerThread.start();
|
||||||
|
mDeviceStateHandler = new Handler(mDeviceStateHandlerThread.getLooper());
|
||||||
|
}
|
||||||
|
|
||||||
|
return mDeviceStateHandler;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IBinder asBinder() {
|
public IBinder asBinder() {
|
||||||
return this;
|
return this;
|
||||||
|
|||||||
Reference in New Issue
Block a user