一、CameraManager类概述
CameraManager是用于检测、表征和连接到 CameraDevices 的系统服务管理器。
CameraManager 是一个负责查询和建立相机连接的系统服务,它的功能不多,这里列出几个 CameraManager 的关键功能:
1)、将相机信息封装到 Camera Characteristics 中,并提获取 CameraCharacteristics 实例的方式。
2)、根据指定的相机 ID 打开相机设备(openCamera)。
3)、提供将闪光灯设置成手电筒模式的快捷方式。
可以通过调用 Context.getSystemService()
得到这个类的一个实例。
CameraManager manager = (CameraManager)getSystemService(Context.CAMERA_SERVICE);
二、内部类
1、AvailabilityCallback抽象类
相机设备变为可用或不可打开的回调。
当不再使用相机或连接新的可拆卸相机时,相机将变得可用。 当某些应用程序或服务开始使用相机时,或者当可移动相机断开连接时,它们将变得不可用。
扩展此回调并将子类的实例传递给 {@link CameraManager#registerAvailabilityCallback} 以获取此类可用性更改的通知。
回调接口:
public void onCameraAvailable(@NonNull String cameraId) { // default empty implementation}
public void onCameraUnavailable(@NonNull String cameraId) { // default empty implementation}
public void onCameraAccessPrioritiesChanged() { // default empty implementation }
public void onPhysicalCameraAvailable(@NonNull String cameraId,@NonNull String physicalCameraId) { // default empty implementation}
public void onPhysicalCameraUnavailable(@NonNull String cameraId, @NonNull String physicalCameraId) { // default empty implementation}
@SystemApi@TestApi@RequiresPermission(android.Manifest.permission.CAMERA_OPEN_CLOSE_LISTENER)public void onCameraOpened(@NonNull String cameraId, @NonNull String packageId) { // default empty implementation}
@SystemApi@TestApi@RequiresPermission(android.Manifest.permission.CAMERA_OPEN_CLOSE_LISTENER)public void onCameraClosed(@NonNull String cameraId) { // default empty implementation}
2、TorchCallback抽象类
相机闪光灯模式变得不可用、禁用或启用的回调。
当手电筒模式所属的相机设备不可用或由于其他更高优先级的相机活动而导致其所需的其他相机资源变得繁忙时,手电筒模式将变得不可用。 当手电筒模式被关闭或者其所属的相机设备不再使用且其所需的其他相机资源不再繁忙时,手电筒模式将被禁用。 当应用程序调用 setTorchMode 关闭相机的手电筒模式时,或者当应用程序打开另一台相机的手电筒模式(如果不支持同时打开多个手电筒模式)时,相机的手电筒模式将关闭。 当通过 setTorchMode 打开手电筒模式时,手电筒模式将被启用。
仅当手电筒模式处于禁用或启用状态时,才可通过 setTorchMode 设置。
扩展此回调并将子类的实例传递给 registerTorchCallback 以收到此类状态更改的通知。
public void onTorchModeUnavailable(@NonNull String cameraId) { // default empty implementation}
public void onTorchModeChanged(@NonNull String cameraId, boolean enabled) { // default empty implementation}
public void onTorchStrengthLevelChanged(@NonNull String cameraId, int newStrengthLevel) { // default empty implementation}
三、方法
public CameraCharacteristics getCameraCharacteristics(@NonNull String cameraId) throws CameraAccessException
public CameraExtensionCharacteristics getCameraExtensionCharacteristics( @NonNull String cameraId) throws CameraAccessException
public String[] getCameraIdList() throws CameraAccessException
public String[] getCameraIdListNoLazy() throws CameraAccessException
@NonNullpublic Set> getConcurrentCameraIds() throws CameraAccessException
@RequiresPermission(android.Manifest.permission.CAMERA)public boolean isConcurrentSessionConfigurationSupported( @NonNull Map cameraIdAndSessionConfig) throws CameraAccessException
public int getTorchStrengthLevel(@NonNull String cameraId)throws CameraAccessException
@RequiresPermission(android.Manifest.permission.CAMERA)public void openCamera(@NonNull String cameraId, @NonNull final CameraDevice.StateCallback callback, @Nullable Handler handler) throws CameraAccessException
public void setTorchMode(@NonNull String cameraId, boolean enabled) throws CameraAccessException
public void registerAvailabilityCallback(@NonNull AvailabilityCallback callback, @Nullable Handler handler)
public void unregisterAvailabilityCallback(@NonNull AvailabilityCallback callback)
public void registerTorchCallback(@NonNull @CallbackExecutor Executor executor, @NonNull TorchCallback callback)
public void unregisterTorchCallback(@NonNull TorchCallback callback)
来源地址:https://blog.csdn.net/github_27263697/article/details/131529193