广角镜头适配

基于Camera2 API, 获取设备相机信息, 判断相机是否广角


//获取镜头数量, 略//通过物理尺寸, 对焦距离, 算出FOV(Field of view), 相机水平弧度, 垂直弧度
val size = characteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE)
val focalLens1 = characteristics.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS)!!
val w = size!!.width
val h = size.height
val horizontalAngle = (2 * Math.atan(w / (focalLens1[0] * 2).toDouble())).toFloat()
val verticalAngle = (2 * Math.atan(h / (focalLens1[0] * 2).toDouble())).toFloat()//简单判断哪个是广角镜头
//通过FOV(field of view)排序, 从小到大, 角度越大, 越是广角
val comparator = object : Comparator<CameraInformation> {override fun compare(o1: CameraInformation, o2: CameraInformation): Int {val o1FovSize = o1.fovHorizontal * o1.fovVerticalval o2FovSize = o2.fovHorizontal * o2.fovVerticalif (o1FovSize > o2FovSize) {return 1} else if (o1FovSize < o2FovSize) {return -1}return 0}
}

总结

该方法在某些平台上无法准确判断,如果大家有更好的方法,欢迎提交pr,谢谢。

参考文献

  1. 三星Camera广角能力开放 http://support-cn.samsung.com/App/DeveloperChina/Notice/Detail?NoticeId=109
  2. https://www.panavision.com/sites/default/files/docs/documentLibrary/2%20Sensor%20Size%20FOV%20(2).pdf
  3. https://stackoverflow.com/questions/31172794/get-angle-of-view-of-android-camera-device/31640287
  4. https://github.com/pchan1401-ICIL/Camera2FOV

最后自己的github, 欢迎点star 源码地址

Android 尝试适配广角镜头的方案相关推荐

  1. android屏幕适配的目的,剖析Android屏幕适配及各方案

    最近陆陆续续被一些android屏幕适配的文章刷屏了,我发现有些问题在看别人写的文章时候还是比较不容易理解的,在这里我们把这些东西捋一捋,来讲讲android屏幕适配的原理,还有之前用过的屏幕适配框架 ...

  2. 2021年最详细的Android屏幕适配方案汇总

    1 Android屏幕适配的度量单位和相关概念 建议在阅读本文章之前,可以先阅读快乐李同学写的文章<Android屏幕适配的度量单位和相关概念>,这篇文章包含了阅读本文的一些基础知识,推荐 ...

  3. ZUI易入门Android之客户端适配9.0方案

    目录 Section 1: 前言 1-4 1 概念 1-4 2 读者 1-4 3 参考文档 1-4 Section 2: 技术方案 2-5 1 所有应用的行为变更 2-5 1.1 非SDK开放接口 2 ...

  4. Android手机适配问题怎么处理,都有什么方案。

    目录 前言 目录图 定义 相关重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 屏幕尺寸.分辨率.像素密度三者关系 不懂没关系,在这里举个例子 密度无关像素 独立比例像素 为什么要进行Android屏幕适 ...

  5. android屏幕适配的目的,Android 不同分辨率下屏幕适配的实战方案与经验总结

    Android 开发中,屏幕适配是一大考点,几乎每一场面试,都不会落下这个问题,这个问题说简单也简单,说难也难,当然对于有过真实的适配经验的人来说,这个根本不算什么问题,从坑里爬过的人,自然知道这其中 ...

  6. android屏幕适配教程,Android屏幕适配方案,android屏幕适配

    Android屏幕适配方案,android屏幕适配 文章转载禁止用于商业用途,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处莫高雷草原以及作者@JiongBull. Android屏幕适配方 ...

  7. Android屏幕适配(网易云音乐方案)

    简单高效无侵入式Android屏幕适配 最近在学习网易的Android课程,网易的老师提供了网易云音乐的屏幕适配解决方案,主要有两种,17年前是采用自定义缩放布局,17年后是采用的是工具类发方案,现在 ...

  8. Android屏幕适配方案

    一. 手机适配的应用和使用场景 使android应用程序适用于不同的国家语言.型号.尺寸和SDK版本等手机环境中,其主要功能和界面风格保持不变. 手机适配主要包括三个方面:语言适配.屏幕适配.SDK平 ...

  9. Android 屏幕适配方案(七)

    原文地址为: Android 屏幕适配方案(七) 一. 手机适配的应用和使用场景 使android应用程序适用于不同的国家语言.型号.尺寸和SDK版本等手机环境中,其主要功能和界面风格保持不变. 手机 ...

最新文章

  1. 电大计算机应用基础上机考试1200,电大《计算机应用基础上机考试操作题
  2. 扩增子统计绘图1箱线图:Alpha多样性
  3. BigMemroy系列文章--11. BigMemory中的SizeOf问题
  4. 全文2500字 详解Pandas与Lambda结合进行高效数据分析
  5. linux usb mic延时大如何解决,Linux 中 SSH 客户端登录缓慢的解决办法
  6. easyExcel实现Excel导出功能
  7. python自学要多久-python从入门到精通需要多久?你需要先明白这两个点
  8. 更改qt复选框大小_Qt编写控件属性设计器5-属性中文
  9. 技术方案SOW工作文档模板
  10. 测试打印机性能的软件,打印速度测试
  11. 新能源外地车进京限行限号政策是怎样的?
  12. kindle不能接收qq邮箱超大附件
  13. java8 成绩分数排名
  14. LCCUP 22秋季编程大赛
  15. Linux树莓派开发——配置树莓派内核源码,内核编译,更换树莓派Linux内核
  16. 安卓10(Android10\API29)保存图片到相册DCIM/Camera
  17. 开源企业内部沟通协作平台, 免费企业IM, ENTBOOST, Windows环境:免安装模式部署
  18. CAN整车网络学习-01
  19. Hibernate:Session_Flush清理缓存
  20. opencv python 把图(cv2下)BGR转RGB,且HWC转CHW

热门文章

  1. uniapp引用外部icon图标
  2. 权限提升-网站权限后台漏洞第三方获取
  3. 07- 梯度下降优化(Lasso/Ridge/ElasticNet) (数据处理+算法)
  4. Traceroute(路由追踪) --- 的原理及实现
  5. 计算混响时间的意义_如何计算混响时间?
  6. Mac 截屏或录制屏幕的快捷键
  7. RedisSon高并发分布式锁实战RedisSon源码解读
  8. Partitioning of Geographic Data(NDS,导航数据标准中的地理数据分区)
  9. 月薪过万的UI设计师都具备哪些设计能力?
  10. PhotoShop制作简易封面