一、写在前面

本文主要介绍在高通平台上,当设备枚举到的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 ?相关推荐

  1. android 骁龙图库解析,处理器解析 双核Z2580/四核骁龙600_中兴 Geek_手机Android频道-中关村在线...

    最后就是用户比较关注的跑分环节了,首先我们还是来看看两款产品在处理器方面的不同.中兴GEEK是一款搭载了代号为"Clover Trail+"Intel Atom Z2580双核处理 ...

  2. 高通骁龙665能不能升级鸿蒙系统,高通骁龙665性能好不好 高通骁龙665性能测试...

    7月2日,小米发布了小米CC9.小米CC9e系列手机新品,其中小米CC9e首发搭载了骁龙665处理器,采用11nm工艺制程,换装Adreno 6系图形处理器,并将DSP升级为Hexagon 686并新 ...

  3. 高通骁龙845的android手机有哪些,骁龙845手机有哪些 2018搭载高通骁龙845的手机推荐...

    骁龙845是高通今年最强的一款处理器,在麒麟980/苹果A12没有发布之前,它无疑是当下全球性能最强的手机CPU.2018年以来,已经有不少厂商推出了骁龙845旗舰机,款款堪称经典.下面"电 ...

  4. 用于PC的骁龙1000近似实锤了,高通员工LinkedIn泄露天机

    方栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI "高通可能要推出骁龙1000芯片,用于PC." 这个消息,是德国媒体WinFuture在5月底传出的.在那之后,整个世 ...

  5. 天玑1300和骁龙870哪个好 天玑1300和高通骁龙870差距

    首先,Snapdragon 870 芯片组基于台积电的 7nm 制造工艺.该芯片组具有 1 个 3.2 GHz – Kryo 585 Prime (Cortex-A77) 内核.3 个 2.42 GH ...

  6. 三星980处理器和骁龙855_骁龙855与麒麟980性能PK, 高通还是高通!

    今年麒麟980与往年一样赶了个"大早",提前高通骁龙峰会三个月发布,同时提前近半年上市,Mate20系列的上市也引起了剧烈的轰动,主要是Mate20系列今年在安卓阵营基本没有对手, ...

  7. 高通骁龙870有哪些哪些值得购买 高通骁龙870有什么手机

    第一款:小米10S 在两千元价位中,小米10S一直以来被很多用户看好,它搭载了骁龙870处理器,外观设计上延续了小米10至尊纪念版,整体看起来也比较有质感,现在已经跌到了2000价位,性价比还是不错的 ...

  8. 高通平台android开发总结 MSM平台上的AMSS

    http://blog.csdn.net/mirkerson/article/details/7691029 MSM平台上的AMSS REX启动分析--基于Qualcomm平台 1.高通平台andro ...

  9. 高通平台android开发总结

    http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...

最新文章

  1. usaco Runaround Numbers
  2. 【一篇文章搞懂】Java社招最全面试题
  3. 【2015 Week Task】
  4. 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
  5. 成功解决基于VS2015(Visual Studio2015)编写C++程序调试时弹出窗口一闪而过的问题
  6. 中国太阳能电池行业运营需求与十四五展望规划报告2022版
  7. python完全背包最优_python 完全背包问题_遗传算法Python实战 009.背包问题
  8. 购物商城Web开发第一天
  9. GPU Gems2 - 11 近似的双向纹理函数(Approximate Bidirectional Texture Functions)
  10. 处理效应模型stata实例_stata︱政策处理效应模型sata基本命令汇总
  11. SpringBoot通过yml和xml文件配置日志输出
  12. 快应用quickapp快速入门教程 by五个半柠檬
  13. Keep Network启动下一阶段流动性挖矿计划
  14. 远程办公:如何招聘有自驱力的员工?
  15. 只需三种手段,将传统的网站的性能提高 24%!
  16. 绿色沃土计划农业大健康 功能性农业国稻种芯发力耕地体质
  17. 人脸检测进阶:更快的5点面部标志检测器
  18. c语言continuo语句例子,现在进行时语法资源Present Continuous Tense(附资源)
  19. 2021/10/9正睿7测Day.6
  20. 算法复杂度 O(1),O(n),O(logn),O(nlogn)的区别

热门文章

  1. 快速上手Xilinx DDR3 IP核----汇总篇(MIG)
  2. No auto configuration classes found in META-INF/spring.factories报错
  3. 案例:中科润泽鞋业专用ERP(CRS-ERP)在东艺鞋业的成功实施(转)
  4. 中文医学大模型“本草”(原名华驼):医学知识增强在中文大型语言模型指令微调上的初步探索...
  5. 自学v512工作室_刘伟_Java高端培训系列视频_log4j遇到的问题
  6. 转:量化策略的分类和市场容量
  7. 微信应用号即将推出:“应用号”能直接被搜索?
  8. UCML点击BPO报异常
  9. 对于ip地址(私有ip,公有ip)的理解与总结
  10. 三维地图前端arcgis_通过ArcGIS创建2D及3D地图