Camera2 笔记之一:CameraManager分析

[Android O] HAL3 之 Open Camera2 流程(一)—— 从 App 到 CameraService 从 Application 连接到 CameraService,这涉及到 Android 架构中的三个层次:App 层,Framework 层,Runtime 层。 其中,App 层直接调用 Framework 层所封装的方法,而 Framework 层需要通过 Binder 远程调用 Runtime 中 CameraService 的函数。 这一部分主要的函数调用逻辑如下图所示。 下面... 阅读详情

1. CameraManager API

1.1 获取物理相机以及逻辑相机id

//方法:public String[] getCameraIdList();
在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 void registerAvailabilityCallback(@NonNull AvailabilityCallback callback,@Nullable Handler handler);
public static abstract class AvailabilityCallback {
        public void onCameraAvailable(@NonNull String cameraId) {
        // default empty implementation
    	}
		public void onCameraUnavailable(@NonNull String cameraId) {
		// default empty implementation
		}
        
        public void onCameraAccessPrioritiesChanged() {
		// default empty implementation
		}
	} 

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的属性

//方法: 判断是否隐藏摄像头,是否支持API2。不支持API2的话通过LegacyMetadataMapper.createCharacteristics生成Characteristics
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)
	//返回CameraDevice实际上new 一个CameraDeviceImpl对象,从HAL层cameraService创建一个cameraUser(cameraUsercameraService.connectDevice(callbacks, cameraId,mContext.getOpPackageName(), uid);callbacks 为CameraDeviceImpl中的CameraDeviceCallbacks 继承于ICameraDeviceCallbacks) openCamera后在StateCallback回调中拿到CameraDeviceImpl实例对象

1.9 手电筒开关接口

//方法:
public void setTorchMode(@NonNull String cameraId, boolean enabled)

1.10 检测是否是隐层摄像头

public static boolean isHiddenPhysicalCamera(String cameraId)
Android CameraManager 使用 本篇文章简单介绍下android 中cameraManager 的使用.cameraManager 用于管理设备摄像头的类,一系列方法来获取摄像头的信息.详细的方法可以参考:https://developer.android.com/reference/android/hardware/camera2/CameraManager获取CameraManager实例的代码也很简单,通过getSystemService获取即可. 阅读详情

相关推荐

Android多媒体功能开发(14)——Camera2框架

Camera2框架的相机模型被设计成一个管道,使用相机时需要先和相机设备建立一个会话,通过该会话向相机发送请求,相机将图像数据保存到配置好的Surface,Surface就是存放图像数据的缓冲区。请求分为单次请求、重复请求和多次请求三种。

nanoage的博客 6084

Android Camera2 —CameraManager API详解

在 API 级别 30 之前,当应用程序尝试打开多个不同 ID 的 {@link CameraDevice} 并且该设备不支持打开此类组合时,{@link #openCamera} 将失败并抛出 {@link CameraAccessException} 或一个 或多个已打开的 {@link CameraDevice} 将断开连接并接收 {@link android.hardware.camera2.CameraDevice.StateCallback#onDisconnected} 回调。

闲暇部落 7108

使用Camera2实现预览功能

Camera2原生相机开发,预览功能

weixin_44752167的博客 9385

Android P CameraManager.AvailabilityCallback

CameraManager.AvailabilityCallback 相机设备变回可打开或无法打开的回调。 当相机不再使用或连接新的可移动相机时,相机即可使用。 当某些应用程序或服务开始使用相机时,或者当可移动相机断开连接时,它们将变得不可用。 扩展此回调并将子类的实例传递给CameraManager #registerAvailabilityCallback,以通知此类可用性更改。 ...

weixin_39821531的博客 1660

Android Camera系列(五):Camera2

该篇章讲了Camera2的基本用法、简单的封装、与Camera1的差别,以及如何正确获取预览YUV数据。

xiaozhiwz的专栏 2661

Android Camera2-预览、拍照、录像流程

重复模式(Repeating):指的是不断重复执行指定的 Capture 操作,当有其他模式的 Capture 提交时会暂停该模式,转而执行其他被模式的 Capture,当其他模式的 Capture 执行完毕后又会自动恢复继续执行该模式的 Capture,例如显示预览画面就是不断 Capture 获取每一帧画面。在 Camera2 上,你可以在规定的曝光时长范围内配置拍照的曝光时间,从而实现拍摄长曝光图片,你甚至可以延长每一帧预览画面的曝光时间让整个预览画面在暗环境下也能保证一定的亮度。

闲暇部落 7870

android camera2 设置,Android Camera2 之 CameraManager 详解

一、简介CameraManager 是系统服务之一,专门用于 检测 和 打开相机,以及 获取相机设备特性。二、获取 CameraManager 实例通过 Context 类的 getSystemService() 方法来获取一个系统服务,参数使用 Context.CAMERA_SERVICE 或 CameraManager.class 都行。// 方式一CameraManager manager ...

weixin_30663789的博客 1647

Camera2 openCamera源码分析

在CameraService中makeClient流程中,主要根据设备版本号和camera api的版本号来创建camera相关的设备。在CameraDeviceImpl的setRemoteDevice流程中,主要完成的是将底层binder对象封装成ICameraDeviceUserWrapper并注册死亡通知,然后通过执行器在线程中完成camera设备打开的状态回调,最终camera应用获取到打开的camera对象,后续可以通过这个camera对象来完成camera命令的调用。

xx18030637774的博客 1059

Camera2 API 之 SurfaceView、TextureView、CameraManager、CameraDevice详解

从5.0开始(API Level 21),可以完全控制安卓设备相机的新api Camera2(android.hardware.Camera2)被引入了进来。在以前的Camera api(android.hardware.Camera)中,对相机的手动控制需要更改系统才能实现,而且api看着方便,但是不好管理。不过老的Camera API在5.0上已经过时(依然兼容),如今Android推荐使用Camera2采集视频,借着写这篇记录的过程,熟悉和理解Camera2流程。 专用名词 YUV 一种颜色编码的方法

hipeboy的博客 1611

Android中Camera2 Open打开过程在CameraManager的代码实现流程

CameraCharacteristics是Android系统中一个专门用于描述相机设备属性的类,其中的属性对于指定的CameraCharacteristics是Android系统中一个专门用于描述相机设备属性的类,其中的属性对于指定的CameraDevice而言是固定的。这个接口代表了一个连接的相机设备,你可以把它看作为相机设备在 java 代码中的表现,类似于旧版API中的Camera类。CameraManager是Android系统中的一项服务,主要用于检测和打开相机,以及获取相机设备的特性。

jiangchaobing_2017的博客 1347

STM32控制气泵和电磁阀实现

2、mos管的选型:mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管,根据要求,气泵和电磁阀供电电压为12V,所以选择的mos管耐压值要大于12V,这里选用耐压值为30V的MOS管,并且导通电流为5.8A,如下图。1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使用mos管。使用STM32控制气泵和电磁阀的开和关,气泵和电磁阀的供电电压为12V。最终实现单片机控制气泵和电磁阀的开和关。

jacklood的博客 1万+

android camera2 API流程分析

Android camera2 API流程分析 Android5.0之后,新推出来了一个类,android.hardware.camera2,与原来的camera的类实现照相和拍视频的流程有所不同,原来的camera的类并没有深入分析。在做项目的时候,由于需要涉及到这方面的知识,自己学了一下。由于本人英文也不是很优秀,看着看着还要看前人的总结。这个是在半年前就简单总结了一下,现在po上来。如

u011404910的博客 1万+

大数据 DataX-Web 详细安装教程

大数据 DataX-Web 详细安装教程

GG Bond 的博客 1万+

Android Camera2使用笔记

1. Android Camera2简介 Android 5.0 (API Level 21)重新设计Camera,并提供了一个全新的API——Camera2。Camera2基本上和Camera1没什么继承性,完全是重新设计。在Camera2中Google引入了Session/Request的概念,从使用上更加复杂,同时也支持更多特性,比如可以控制曝光、控制感光度、支持Raw格式输出。当然坑也更...

矩阵实验室 5679

10-142 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格

分数 10全屏浏览题目切换布局作者 lhm单位 河北农业大学本题目要求编写SQL语句,查询厂商D生产的PC和便携式电脑的平均价格。

dqd66的博客 2749

从AXI到CHI:深入解析基于Credit的流量控制如何优化NoC设计

本文深入解析了从AXI握手式流控到CHI基于Credit的流量控制机制的演进。通过对比传统流控的瓶颈,详细阐述了Credit机制如何通过信用预分配和记账系统,有效解决FIFO气泡、时序收敛等难题,从而优化NoC设计的带宽利用率、降低延迟并提升系统可扩展性。

weixin_29227585的博客 522

Android 源码 Camera2 获取 CameraManager 对象

CameraManager 类是开放给 App 使用相机的入口类,它包括了获取相机 ID 列表、打开和关闭相机等操作,用于检测、表征和连接到 CameraDevice。 下面是 APP 获取 CameraManager 类的代码。CAMERA_SERVICE 定义在 Context 中,CAMERA_SERVICE = “camera”。 val manager = activity.getSystemService(Context.CAMERA_SERVICE) as CameraManager 由于传

洪伟的专栏 1796

Docker Desktop 在 Windows 上的安装和使用

WSL 指 “”,这是一个在 Windows 10\11 上能够运行原生 Linux 二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发的,旨在使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。这极大地拓展了Windows系统的功能,使用户能够在Windows环境中享受到Linux的强大功能。//Linux容器。

swadian2008的博客 6万+

Android开发 Camera2(最全代码Camera2开发)

因为Camera2提供的功能更加强大,所以使用比Camera1会复杂许多.需要调用的API和回调也更多.这里简单介绍一下这些API的对应功能.好初步认识Camera2.

weixin_42504805的博客 7355

振动信号相位测量的关键技术解析

本文深入解析了振动信号相位测量的关键技术,强调相位是振动信号的“身份证”,对于动平衡和故障诊断至关重要。文章详细阐述了键相传感器与振动传感器的选型、安装要点,以及时域和频域(FFT)核心算法,并针对现场噪声、转速波动等挑战提供了实战解决方案,帮助工程师实现精准、稳定的相位测量。

vv45678的博客 838

高通SDX12:ProSLIC Si32185移植调试

高通 SDX12 语音芯片slic 音频驱动 Si32185

不秃头的程序猿Gabriel的博客 2038

自定义Camera系列之:SurfaceView + Camera2

一、前言 之前已经介绍过过时的旧 Camera 的使用了,毕竟在从 Android 5.0 后推荐使用 Camera2 了,所以现在开始介绍 Camera2 相关使用。老规矩还是从 SurfaceView 说起。 如果你对 Camera2 的相关类和接口还不熟悉,可以先看看下面这些介绍: CameraManager详解 CameraDevice详解 CameraCharacteristics详解...

阿飞的博客 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android Camera2获取所有CameraId源码分析(CameraManager.getCameraIdList)(未完结)

首先我们来看addListener这个方法(addListerner方法在CameraService中有两处实现,但是感觉没有和CameraManager中调用的匹配的方法,但是我看网上别人的分析都是走到了这个方法,具体的调用逻辑我是没找到,回头有时间了再去研究一下)由于分析到这里发现,CameraDeviceIds好像是从CameraService启动后就进行了更新。这里可以看到了输出为CameraStatuses,我们继续来看addListenerHelper中是如何对其进行赋值的。

zhhxlj的博客 1513

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CameraManager——Camera的过时替代方法

CameraManager 用于检测,表征和连接的系统服务管理器 CameraDevices。 有关与相机设备通信的更多详细信息,请阅读相机开发人员指南或camera2 包文档。 此类的实例,必须使用能够获得Context.getSystemService(Class)与所述参数CameraManager.class或Context.getSystemService(String)使用参数Con...

It一zhai男 6722

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Camera2之CameraManager类

ICS13.310 A91 中 华 人 民 共 和 国 国 家 标 准 GB/T28181—2016 代替 GB/T28181—2011 公共安全视频监控联网系统 信息传输、交换、控制技术要求 Technicalrequirementsforinformationtransport,switch andcontrolinvideosurveillancenetworksystemforpublicsecurity 2016-07-12发布 2016-08-01实施 中华人民共和国国家质量监督检验检疫总局 中

格物致知的专栏 [音视频编解码 网络协议 计算机视觉 计算机图形学 图像理解 语音识别 机器学习 模拟电路 传感器] 1375
上一篇: Gsensor量程、采样率、中断唤醒修改
下一篇: Camera2 笔记之二:CameraDevice分析
Devin.wang
博客等级 码龄8年 150粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值