android 骁龙图库解析,Android Camera开发系列:高通平台,How To Expose Aux Camera ?
一、写在前面
本文主要介绍在高通平台上,当设备枚举到的Camera设备数超过2个的时候(我们正常的设备是前后摄2个),上层应用通过CameraManager的getCameraIdList()接口,如何能遍历到全部的CameraId?
二、adb命令读取当前probe(枚举)到的Camera个数
通过dumpsys media.camera命令,我们能获取到关于camera相关的一些信息,其中就包含了当前系统probe到的Camera个数。
下面是我dumpsys出来的一些信息,可以看到当前probe到的Camera个数为1个。
Number of camera devices: 1
Number of normal camera devices: 1
Device 0 maps to "0"
Active Camera Clients:
[
(Camera ID: 0, Cost: 100, PID: 6098, Score: 0, State: 2User Id: 0, Client Package Name: org.codeaurora.snapcam, Conflicting Client Devices: {})
]
Allowed user IDs: 0
三、设置 prop属性 vendor.camera.aux.packagelist
在CameraManager.java中的 getCameraIdList()方法中,在遍历CameraId的时候,有做了一些判断,我们来看下源码里面的具体逻辑。
--------CameraManager.java
public String[] getCameraIdList() {
String[] cameraIds = null;
synchronized(mLock) {
// Try to make sure we have an up-to-date list of camera devices.
connectCameraServiceLocked();
boolean exposeAuxCamera = false;
String packageName = ActivityThread.currentOpPackageName();
String packageList = SystemProperties.get("vendor.camera.aux.packagelist");
if (packageList.length() > 0) {
TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
splitter.setString(packageList);
for (String str : splitter) {
if (packageName.equals(str)) {
exposeAuxCamera = true;
break;
}
}
}
int idCount = 0;
for (int i = 0; i < mDeviceStatus.size(); i++) {
if(!exposeAuxCamera && (i == 2)) break;
int status = mDeviceStatus.valueAt(i);
if (status == ICameraServiceListener.STATUS_NOT_PRESENT ||
status == ICameraServiceListener.STATUS_ENUMERATING) continue;
idCount++;
}
......
}
从上面代码,我们可以看到,CameraManager里面,会去读取vendor.camera.aux.packagelist 的属性值,来决定是否exposeAuxCamera,也就是当CameraId 个数大于2的时候,是否还需要去遍历其它的CameraId。
四、写在后面
最后说下,我们需要exposeAuxCamera的时候,需要做到如下几点:
1)关闭selinux权限,通过adb命令setenforce 0来关闭(如果是非系统权限的apk,需要执行这步关闭selinux权限的操作,不然后面应用读取prop属性没有权限);
2)将apk包名添加到相关prop属性 vendor.camera.aux.packagelist 下,包名之间采用逗号隔开;
setprop vendor.camera.aux.packagelist "com.grid.camera,com.android.camera2demo,
org.codeaurora.snapcam"
3)kill camera service 进程;
ps -A |grep camera 查找Camera相关进程,找到Camera Service的进程号,adb kill掉该进程。
*本人从事Android Camera相关开发已有5年,
*目前在深圳上班,
*小伙伴记得点我头像,看【个人介绍】进行关注哦,希望和更多的小伙伴一起交流 ~
android 骁龙图库解析,Android Camera开发系列:高通平台,How To Expose Aux Camera ?相关推荐
- android 骁龙图库解析,处理器解析 双核Z2580/四核骁龙600_中兴 Geek_手机Android频道-中关村在线...
最后就是用户比较关注的跑分环节了,首先我们还是来看看两款产品在处理器方面的不同.中兴GEEK是一款搭载了代号为"Clover Trail+"Intel Atom Z2580双核处理 ...
- 高通骁龙665能不能升级鸿蒙系统,高通骁龙665性能好不好 高通骁龙665性能测试...
7月2日,小米发布了小米CC9.小米CC9e系列手机新品,其中小米CC9e首发搭载了骁龙665处理器,采用11nm工艺制程,换装Adreno 6系图形处理器,并将DSP升级为Hexagon 686并新 ...
- 高通骁龙845的android手机有哪些,骁龙845手机有哪些 2018搭载高通骁龙845的手机推荐...
骁龙845是高通今年最强的一款处理器,在麒麟980/苹果A12没有发布之前,它无疑是当下全球性能最强的手机CPU.2018年以来,已经有不少厂商推出了骁龙845旗舰机,款款堪称经典.下面"电 ...
- 用于PC的骁龙1000近似实锤了,高通员工LinkedIn泄露天机
方栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI "高通可能要推出骁龙1000芯片,用于PC." 这个消息,是德国媒体WinFuture在5月底传出的.在那之后,整个世 ...
- 天玑1300和骁龙870哪个好 天玑1300和高通骁龙870差距
首先,Snapdragon 870 芯片组基于台积电的 7nm 制造工艺.该芯片组具有 1 个 3.2 GHz – Kryo 585 Prime (Cortex-A77) 内核.3 个 2.42 GH ...
- 三星980处理器和骁龙855_骁龙855与麒麟980性能PK, 高通还是高通!
今年麒麟980与往年一样赶了个"大早",提前高通骁龙峰会三个月发布,同时提前近半年上市,Mate20系列的上市也引起了剧烈的轰动,主要是Mate20系列今年在安卓阵营基本没有对手, ...
- 高通骁龙870有哪些哪些值得购买 高通骁龙870有什么手机
第一款:小米10S 在两千元价位中,小米10S一直以来被很多用户看好,它搭载了骁龙870处理器,外观设计上延续了小米10至尊纪念版,整体看起来也比较有质感,现在已经跌到了2000价位,性价比还是不错的 ...
- 高通平台android开发总结 MSM平台上的AMSS
http://blog.csdn.net/mirkerson/article/details/7691029 MSM平台上的AMSS REX启动分析--基于Qualcomm平台 1.高通平台andro ...
- 高通平台android开发总结
http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...
最新文章
- usaco Runaround Numbers
- 【一篇文章搞懂】Java社招最全面试题
- 【2015 Week Task】
- 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
- 成功解决基于VS2015(Visual Studio2015)编写C++程序调试时弹出窗口一闪而过的问题
- 中国太阳能电池行业运营需求与十四五展望规划报告2022版
- python完全背包最优_python 完全背包问题_遗传算法Python实战 009.背包问题
- 购物商城Web开发第一天
- GPU Gems2 - 11 近似的双向纹理函数(Approximate Bidirectional Texture Functions)
- 处理效应模型stata实例_stata︱政策处理效应模型sata基本命令汇总
- SpringBoot通过yml和xml文件配置日志输出
- 快应用quickapp快速入门教程 by五个半柠檬
- Keep Network启动下一阶段流动性挖矿计划
- 远程办公:如何招聘有自驱力的员工?
- 只需三种手段,将传统的网站的性能提高 24%!
- 绿色沃土计划农业大健康 功能性农业国稻种芯发力耕地体质
- 人脸检测进阶:更快的5点面部标志检测器
- c语言continuo语句例子,现在进行时语法资源Present Continuous Tense(附资源)
- 2021/10/9正睿7测Day.6
- 算法复杂度 O(1),O(n),O(logn),O(nlogn)的区别
热门文章
- 快速上手Xilinx DDR3 IP核----汇总篇(MIG)
- No auto configuration classes found in META-INF/spring.factories报错
- 案例:中科润泽鞋业专用ERP(CRS-ERP)在东艺鞋业的成功实施(转)
- 中文医学大模型“本草”(原名华驼):医学知识增强在中文大型语言模型指令微调上的初步探索...
- 自学v512工作室_刘伟_Java高端培训系列视频_log4j遇到的问题
- 转:量化策略的分类和市场容量
- 微信应用号即将推出:“应用号”能直接被搜索?
- UCML点击BPO报异常
- 对于ip地址(私有ip,公有ip)的理解与总结
- 三维地图前端arcgis_通过ArcGIS创建2D及3D地图