android studio背景模糊_[Android翻译]CameraX:过去、现在和未来的一瞥

62ea5e376a75ddb8a45612739f8407a0.png

CameraX是一个未捆绑的Android Jetpack库,它可以帮助你在Android应用中轻松添加摄像头功能。传统上,由于Android设备种类繁多编程模型复杂,在Android上构建具有相机功能的应用程序非常困难。

现在成千上万的开发者都在使用CameraX,许多开发者已经实现了APK大小的缩小业务指标的改善,同时也精简了他们的资源,使他们的工程师能够专注于构建很酷的新功能

本篇讲述了CameraX如何颠覆现有的相机框架编程模型,如何帮助你在Android上扩展你的应用,并介绍了自Beta版以来的新功能,比如轻松地将ML Kit等智能功能集成到你的应用中。

fee1ec9918598e73efa0282c79b88292.png

颠覆过去的复杂性

我们首先在网上搜索你们所遇到的各种问题,并在现场用一些现有的设备进行实验。我们惊讶地了解到,你们中的许多人为了让事情顺利进行,在不同的制造商、芯片组、甚至是特定的设备上使用了大量的if-else代码块。造成这种行为的原因之一是,使用Camera1或Camera2框架API,你需要从一组特定设备和操作系统的输入开始,以实现所需的输出,例如拍摄一张照片。通过设计,这需要你提前知道设备配置,以帮助你实现目标-当新设备推出时,很难扩展你的代码。

6557fb9c077afba10d8f863cd8147acf.png
Camera1/Camera2框架编程模型

我们不得不从根本上重新思考编程模型。你们的很多反馈启发我们翻转漏斗,从基于用例的方法开始(如下图所示)。

4e3117bb80c7692093bcdc637afc810b.png
CameraX编程模型

通过这种新的方法,团队创建了一个非捆绑的库CameraX,它对所有主要的Android版本都是不可知的,并且可以在超过94%的设备上工作,从API 21开始,不需要特定设备的if-else块。在CameraX中,你首先通过创建一个用例来指定你的目标,例如 "拍照 "与ImageCapture用例。

然后CameraX确定操作系统和设备的具体配置,以帮助你实现你的目标。今天,用例是CameraX体验的基础,从Preview、ImageAnalysis和ImageCapture开始

帮助开发者扩大测试规模

除了现有的框架API实现和使用的复杂性之外,许多开发人员在跨大量Android设备和不同的相机配置的大规模测试他们的应用程序时遇到了困难。我们了解到的是,即使是最基本的相机应用,你的大量资源也花在了测试一个庞大的设备池上,导致了前面提到的特定设备的变通方法。

鉴于测试是你整体开发的关键部分,这启发我们建立一个专门的CameraX测试实验室,以提供跨多个Android设备的测试覆盖。

52d3350107063fce173bc83b781dc975.png
三星Galaxy J1 Ace在光控CameraX测试箱内。

今天这个实验室里有90多台安卓设备。两部手机被安装在一个定制的测试箱内,箱内有可控的灯光和一个电机,用来模拟相机应用的旋转和方向。

这90多部设备代表了约4.5亿部活跃的Android设备,涵盖了所有的操作系统级别(从Marshmallow开始)、价格层级(我们最低端的手机零售价在100美元以下)、芯片组(涵盖联发科、高通和Unisoc)和制造商(完整的设备列表)

缩小差距

在过去的几年里,安卓制造商取得了巨大的进步,为移动设备带来了高动态范围(HDR)模糊虚化和夜景摄影等新功能。然而,到目前为止,这种功能只能通过手机的本地(或系统)相机应用程序来实现。CameraX Vendor Extensions(又称扩展功能)填补了这一空白,并向所有开发者开放了五种特定厂商的功能。这包括

  • HDR:使用制造商的多帧处理功能,合并多个帧,并提供保留场景高光和低光的图像。
  • 夜间:使用制造商的低光多帧处理功能,在低光条件下提供更有吸引力的图片。
  • 自动:根据当前的环境光照条件,自动确定并提供HDR或夜景图像。
  • 虚化:提供背景模糊的图像,非常适合人物摄影。
  • 美颜:在图像中启用面部美颜效果。

最棒的是:当启用Extensions时,你不需要特定设备的if-else块--只需编写一次代码,它就能在所有支持的设备上工作。您可以通过使用ExtensionsManager.ExtensionsAvailability来检查是否在特定设备上启用了Extensions。

如果有扩展功能,您可以向用户显示必要的UI元素(如果适用),并将预览和ImageCapture用例配置为使用扩展功能而不是正常的图像捕获。只需多写几行代码,您就可以大幅提高图像质量和整体用户体验。

d757602a734e41aa83e6cc3a3fe36e9b.png
使用CameraX Extensions拍摄的三星S10+的HDR关闭(左)HDR开启(右)对比。

这些扩展功能适用于三星(从S10+开始的所有旗舰机)、摩托罗拉(他们的大部分设备都升级或推出了Android 10)、Oppo(Reno Pro 2)以及一些使用Unisoc移动处理器的入门级手机。

我们很高兴能通过Extensions缩小差距,并感谢所有制造商不断扩大具有这些功能的设备数量。

Getting to know CameraX Beta

目前在Play Store上有数千款应用部署了CameraX,涉及汽车、银行、交友、聊天、电子商务、搜索、社交等多个类别。一些发现CameraX有帮助的开发者包括以下几个。

  • Monzo银行使用CameraX a)消除了9000行代码,包括UI代码,b)将识别图像捕捉和自拍视频录制的掉线率从25%降低到5%左右(案例研究)。
  • YouCam Perfect通过CameraX实现了减少70%的代码行数(比Camera2),它极大地提高了新产品开发的效率。
  • Ufoto使用CameraX精简了他们的资源,使他们的工程师能够专注于开发很酷的新功能。他们还观察到从Camera1迁移到CameraX时,有了明显的改善。例如,在一些设备上,图像捕捉速度提高了10%,在一些设备上,预览帧率提高了30%。

下一步工作

我们将不断提高Android系统的设备兼容性和可靠性,同时使CameraX更容易使用(开发者报告的已修复CameraX问题列表)。例如,在未来几个月内,我们将在CameraX测试实验室中增加更多的设备。我们坚信,开发者不应该担心底层相机堆栈或设备的特殊性,这样他们就可以专注于开发用户喜欢的很棒的应用程序。

有超过2,000名开发者在生产中使用CameraX,我们建议你尝试采用和部署CameraX Beta的最新版本。 如果你想亲身体验CameraX,请查看我们的教程和官方示例。在您试用CameraX之后,我们很乐意听到您看到的改进类型。

如果你发现最新版本有任何问题,请尽可能在bugreports中提交一个bug(我们每周都会进行分流)。你也可以给Android CameraX讨论组发邮件提出问题,或者在StackOverflow上用 "android-camerax "标签发帖。

我们最衷心地感谢您,我们了不起的开发者、合作伙伴、制造商和CameraX团队成员,感谢他们帮助我们塑造和构建CameraX Jetpack库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html页面根据分辨率缩放,html2Canvas根据不同分辨率,生成pdf内容自适应

根据屏幕大小不同,页面内容自适应并一页展示,应该如何实现// 导出页面为PDF格式import html2Canvas from html2canvasimport JsPDF from jspdfexport default{install (Vue, options) {Vue.prototype.getPdf function () {setTimeout(() > {var titl…

【agc002f】Leftmost Ball(动态规划)

【agc002f】Leftmost Ball(动态规划) 题面 atcoder洛谷 题解 我们从前往后依次把每个颜色按顺序来放,那么如果当前放的是某种颜色的第一个球,那么放的就会变成\(0\)号颜色,所以无论何时,\(0\)号颜色的数量不…

VS2010中的快捷键

一. VS2010中的快捷键 1&#xff1a; Ctrl Enter &#xff08;在光标指定位置的上 K C &#xff08;注释&#xff09; Ctrl E U &#xff08;取消注释&#xff09;  <>  Ctrl K U &#xff08;取消注释&#xff09; 5&#xff1a; Tab &#xff08;增加缩进&a…

export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

高阶函数的定义在《javascript设计模式和开发实践》中是这样定义的。函数可以作为参数被传递&#xff1b;函数可以作为返回值输出。结合这两个特点&#xff0c;首先想到的肯定是回调函数&#xff0c;回调函数也是高阶函数的一种&#xff0c;除了回调函数&#xff0c;还有很多的…

Javascript构造函数的继承

仅供学习参考&#xff0c;原文链接&#xff1a;http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今天要介绍的是&#xff0c;对象之间的"继承"的五种方法。 比如&#xff0c;现在有一个"动物"对象的构造函数。 funct…

python输入字符串str_python字符串(str)

#value "raitOrEi"#v value.capitalize()#首字母大写#print(v)#v1 v.casefold()#全部变小写&#xff0c;不只是英文的&#xff0c;其他语言特殊的大小写也变换#print(v1)#v2 v.lower()#只是英文变小写#print(v2)#设置宽度&#xff0c;并将内容居中#20 代指总长度…

html5 audio api 录音,如何使用HTML5 Web Audio API录制我的声音

在webkit浏览器上,您可以将get user media api与webkitGetUserMedia一起使用 – 如html5rocks所示.如果你想用你的声音来创建javascript事件(例如控制屏幕上的对象)你必须分析传入的声音(例如事件1的高频率 – 事件2的低频率,语音分析要复杂得多,见下文)另外,还有chrome的’x-w…

修改密码

在updateservlet.java中写了方法&#xff0c;修改用户密码&#xff0c;代码不成功求大神指教&#xff0c;代码如下&#xff1a; updateadminpw.jsp <% page contentType"text/html;charsetgb2312" pageEncoding"gb2312" %><% taglib uri"ht…

MlLib--逻辑回归笔记

批量梯度下降的逻辑回归可以参考这篇文章&#xff1a;http://blog.csdn.net/pakko/article/details/37878837 看了一些Scala语法后&#xff0c;打算看看MlLib的机器学习算法的并行化&#xff0c;那就是逻辑回归&#xff0c;找到package org.apache.spark.mllib.classification下…

mysql相关命令操作

2019独角兽企业重金招聘Python工程师标准>>> 远程连接容器中的mysql&#xff1a;mysql -h 192.168.5.116 -P 3306 -u root -p123456 启动mysql容器&#xff1a; $ sudo docker pull mysql:5.6.35 $ sudo docker run --name mysql -p 12345:3306 -e MYSQL_ROOT_PASSW…

html实体注册商标,html 注册商标,html 注册商标代码

html中注册的页面用什么标签写好对于html中的注册页面&#xff0c;策朋专业办理商标注册、专利申请、版权登记保护&#xff0c;需要一个表格。使用标签&#xff0c;输入和按钮标签来组合成就。使用html作为注册页面。实际上&#xff0c;只要您能达到期望的效果&#xff0c;它的…

java已知一个二叉树_#二叉树复习#

#二叉树复习#目录满二叉树完全二叉树平衡二叉树二叉树的主要性质--二叉树的度--二叉树的深度计算二叉树的遍历其他符号变量结点总数深度度为0的结点数/叶子结点数度为1的结点数度为2的结点数什么是满二叉树&#xff1f;二叉树每层的结点数为。满二叉树总结点数&#xff1a;。图…

hashtable - hashmap

http://www.importnew.com/24822.html转载于:https://www.cnblogs.com/qinqiu/p/9711147.html

java 反射机制_基础篇:深入解析JAVA反射机制

反射的概念java 的放射机制&#xff1a;在程序运行时&#xff0c;程序有能力获取一个类的所有方法和属性&#xff1b;并且对于任意一个对象&#xff0c;可以调用它的任意方法或者获取其属性通俗解析&#xff1a;java 文件需要编译成. class 文件才能被 jvm 加载使用, 对象的. c…

构建之法阅读笔记01

本学期阅读计划有两个&#xff0c;一个是《构建之法》&#xff0c;另一个是《大道至简》。 在快速阅读构建之法后&#xff0c;我想提一下几个问题&#xff1a; 1、软件程序软件工程&#xff0c;那么只会软件工程是怎样具体详细的将程序变成合格的软件的&#xff1f; 2、效能分析…

html div float center,跨浏览器实现float:center

跨浏览器实现float:center互联网 发布时间&#xff1a;2008-10-17 19:26:11 作者&#xff1a;佚名 我要评论原文&#xff1a;http://www.macji.com/blog/article/to-achieve-cross-browser-css-float-center/to-achieve-cross-browser-css-float-center/我们都知道float…

博弈论中:纳什均衡、纯策略纳什均衡、混合策略纳什均衡、占优策略

纳什均衡 纳什均衡是由约翰福布斯纳什&#xff08;John Forbes Nash&#xff09;在20世纪50年代提出的博弈论概念&#xff0c;用于描述博弈中的一种稳定状态。在纳什均衡状态下&#xff0c;每个参与者都假定其他参与者的策略是已知的&#xff0c;他们选择的策略是最优的&#…

工具_HBuilder使用快捷方式

HBuilder常用快捷键大概共9类&#xff08;【4 13 3】文件、编辑、插入&#xff1b;【4 9 8】选择、跳转、查找&#xff1b;【1 1 6】运行、工具、视图&#xff09; 1.文件(4) 新建 Ctrl N 关闭 Ctrl F4 全部关闭 Ctrl Shift F4 属性 Alt Enter 2.编辑(13) 激活代码助…

oracle左连接没用_一周零基础学完Oracle数据库第三天02

四、 多表查询1 什么是多表查询多表查询&#xff1a;当查询的数据并不是来源一个表时&#xff0c;需要使用多表链接操作完成查询。根据 不同表中的数据之间的关系查询相关联的数据。多表链接方式&#xff1a; 内连接&#xff1a;连接两个表&#xff0c;通过相等或不等判断链接列…

weblogic启动项目报错找不到类_启动类报错是经常出现的事但是单一的从一个地方找原因会越找越错...

Error starting ApplicationContext. To display the conditions report rerun your application with debug enabled.当我们看到这个报错的时候有的说是jar包重复&#xff0c;有的说是Controller包和Application包处于平行位置&#xff0c;还有的觉得是RequestMapping的valu…