* Android device, allowing for fine-grain control of image capture and
* post-processing at high frame rates.
public abstract class CameraDevice implements AutoCloseable {
// session:
public static final int SESSION_OPERATION_MODE_NORMAL = 0;
public static final int SESSION_OPERATION_MODE_CONSTRAINED_HIGH_SPEED = 1;
public static final int SESSION_OPERATION_MODE_VENDOR_START = 0x8000;
// request:
public static final int TEMPLATE_PREVIEW = 1;
TEMPLATE_STILL_CAPTURE,
TEMPLATE_RECORD,
TEMPLATE_VIDEO_SNAPSHOT,
TEMPLATE_ZERO_SHUTTER_LAG,
TEMPLATE_MANUAL
//内部类:StateCallback:
public void onClosed(@NonNull CameraDevice camera);
//向外提供的接口分为创建 Request/ Session两类; 具体到每类又分为output/input(Reprocess)
public abstract CaptureRequest.Builder createCaptureRequest(@RequestTemplate int templateType);
public abstract void createCaptureSession(@NonNull List<Surface> outputs,
@NonNull CameraCaptureSession.StateCallback callback, @Nullable Handler handler);
}
/**
* HAL2.1+ implementation of CameraDevice. Use CameraManager#open to instantiate
*/
public class CameraDeviceImpl extends CameraDevice
implements IBinder.DeathRecipient {}
CameraDeviceImpl的内部类:
callback for tracking the progress of a CaptureRequest submitted to the camera device
通过CaputreCallbackHolder使用CaptureCallback,在submitCaptureRequest时维护mCaptureCallbackMap
实现ICameraDeviceCallback接口CameraManager向外提供的接口:
public static abstract class StateCallbackKK extends StateCallback
private final StateCallback mDeviceCallback;
public CameraDeviceImpl(String cameraId, StateCallback callback, Handle handler) {
mDeviceCallback = callback;/*APP具体的*/mDeviceHandler = handler;
}
private volatile StateCallbackKK mSessionStateCallback;
mSessionStateCallback = mCurrentSession.getDeviceStateCallback();/*framework固定的*/
另外还有两个类: