1. CameraManager API
1.1 获取物理相机以及逻辑相机id
在CameraManagerGlobal中有白名单配置辅摄的包名,保存在“vendor.camera.aux.packagelist”系统属性中,如下:
130|msm8953_64:/ # getprop vendor.camera.aux.packagelist
org.codeaurora.snapcam,com.android.dialer,com.android.phone
如果非白名单里面的应用程序则最多可获取到两个摄像头ID
1.2 注册Camera状态监听
public static abstract class AvailabilityCallback {
public void onCameraAvailable(@NonNull String cameraId) {
}
public void onCameraUnavailable(@NonNull String cameraId) {
}
public void onCameraAccessPrioritiesChanged() {
}
}
1.3 注销Camera状态监听
public void unregisterAvailabilityCallback(@NonNull AvailabilityCallback callback)
1.4 注销Camera状态监听
public void unregisterAvailabilityCallback(@NonNull AvailabilityCallback callback)
1.5 注册手电筒
public void registerTorchCallback(@NonNull TorchCallback callback, @Nullable Handler handler)
public static abstract class TorchCallback {
public void onTorchModeUnavailable(@NonNull String cameraId) {}
public void onTorchModeChanged(@NonNull String cameraId, boolean enabled){}
}
1.6 注销手电筒监听
public void registerTorchCallback(@NonNull @CallbackExecutor Executor executor,@NonNull TorchCallback callback)
1.7 获取CameraID的属性
public CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId);
1.8 打开Camera
public void openCamera(@NonNull String cameraId,@NonNull final CameraDevice.StateCallback callback, @Nullable Handler handler)
public void openCameraForUid(@NonNull String cameraId, @NonNull final CameraDevice.StateCallback callback, @NonNull Executor executor,int clientUid)
private CameraDevice openCameraDeviceUserAsync(String cameraId, CameraDevice.StateCallback callback, Executor executor, final int uid)
1.9 手电筒开关接口
public void setTorchMode(@NonNull String cameraId, boolean enabled)
1.10 检测是否是隐层摄像头
public static boolean isHiddenPhysicalCamera(String cameraId)