文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android Camera2 —CameraManager API详解

2023-09-20 17:40

关注

一、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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯