Android相机性能提高50%

文章目录

  • 应用举例(可以不看这一part,直接跳过看具体怎么做):
    • Snapchat 通过 Camera2 Extensions API 将新相机功能的集成速度提高了 50%**
    • Camera2 扩展 API 可以访问高级功能
    • 更多设备上的更多机会
  • 正文:开始使用
    • 扩展架构
    • 测试相机设备的 Camera2 Extensions API 兼容性
    • 使用 Camera2 Extensions API 创建 CameraExtensionSession
    • 更多api

应用举例(可以不看这一part,直接跳过看具体怎么做):

Snapchat 通过 Camera2 Extensions API 将新相机功能的集成速度提高了 50%**

在这里插入图片描述

Camera2 扩展 API 可以访问高级功能

Snapchat 团队希望针对不断扩大的 Android 设备选择来优化该应用程序,因为他们知道许多 OEM 厂商都通过各自的相机技术来区分其设备。由于 Snapchat 是一款主要与设备相机配合使用的视觉应用程序,因此团队优化了该应用程序,以充分利用每个设备的独特硬件。

“我们希望利用每个 OEM 的软件来增强 Android 上的 Snapchat 体验,”Snapchat 的软件工程师 Ye Tian 说道。“这将有助于该应用程序获得与设备本机相机提供的质量相当的更高质量的快照。”
在这里插入图片描述

最初的目标是提高应用程序的弱光功能,但最终却带来了更多的结果。Snapchat 团队致力于寻找新的方法来提高应用程序的相机功能,实现夜间模式、人像模式、脸部修饰、点击对焦、变焦等功能。

“我们与 Google Pixel 的合作为与其他 OEM 厂商的合作铺平了道路,只需很少的代码更改即可在其设备中实现夜间模式和超级夜间模式,”Ye 说道。“Camera2 扩展 API 灵活且广泛。Snapchat 现在可以使用它按需构建成熟的应用程序,而不会对性能和稳定性产生负面影响。”

通过 Camera2 Extension API 的实现使 Snapchat 开发人员可以轻松地将更多相机功能添加到应用程序中。通过使用 Android 相机 API 提供的扩展,Snapchat 集成新相机功能的速度比过去使用的典型行业标准方法快了 50%。

在这里插入图片描述

更多设备上的更多机会

Snapchat 团队很高兴使用 Camera2 Extensions API 为其用户提供更具凝聚力的体验。得益于 API 中提供的扩展,开发人员可以轻松地在使用 Android 平台的一系列制造商设备上改进应用程序的相机,而且速度比以前快得多。

“我喜欢Android平台的多样性,并利用每个手机制造商设备的独特优势,”叶说。“它帮助我们将他们的尖端创新引入 Snapchat 应用程序,让 Snapchat 用户更好地捕捉他们的生活瞬间。”

Snapchat 团队期待与更多 OEM 厂商合作,利用 Camera2 Extensions API 进一步提高应用程序跨设备的处理能力。他们还期待使用新的 API 来提高应用程序的向后兼容性,这将使更多用户从扩展中受益。

我建议使用 Camera2 扩展 API。它提供了广泛的功能和稳定的性能,以提高开发人员交付功能的速度。”叶说。

正文:开始使用

Camera2 提供了一个 Extensions API,用于访问设备制造商在各种 Android 设备上实现的扩展。如需查看支持的扩展模式列表,请参阅相机扩展。

如需查看支持扩展的设备列表,请参阅支持的设备。

扩展架构

下图显示了相机扩展程序架构。
请添加图片描述

Camera2 应用可以通过 Camera2 API 使用扩展。Camera2 API 提供了查询可用扩展、配置扩展相机会话以及与相机扩展 OEM 库通信的方法。这样,您的应用就可以使用夜间、HDR、自动、焦外成像或脸部照片修复等扩展程序。

测试相机设备的 Camera2 Extensions API 兼容性

以下代码段会检查设备是否支持 Camera2 Extensions API。并非所有设备都支持扩展,或者设备可能支持一部分扩展。该代码段会返回支持相机扩展的兼容相机 ID 的列表。

private fun getExtensionCameraIds(cameraManager: CameraManager): List =
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        cameraManager.cameraIdList.filter { cameraId ->
            val characteristics = cameraManager.getCameraCharacteristics(cameraId)
            val extensionCharacteristics =
                cameraManager.getCameraExtensionCharacteristics(cameraId)
            val capabilities =
                characteristics.get(CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES)
            extensionCharacteristics.supportedExtensions.isNotEmpty() &&
                    capabilities?.contains(
                        CameraCharacteristics.REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
                    ) ?: false
        }
    } else emptyList()

使用 Camera2 Extensions API 创建 CameraExtensionSession

与兼容的设备搭配使用时,Camera2 Extensions API 可让您访问某些相机扩展。以下代码段举例说明了如何创建 CameraExtensionSession,以便为现有 Camera2 应用使用夜间拍摄模式。

private val captureCallbacks = object : CameraExtensionSession.ExtensionCaptureCallback() {
    // Implement Capture Callbacks
}
private val extensionSessionStateCallback = object : CameraExtensionSession.StateCallback() {
    override fun onConfigured(session: CameraExtensionSession) {
        cameraExtensionSession = session
        try {
            val captureRequest =
                cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW).apply {
                    addTarget(previewSurface)
                }.build()
            session.setRepeatingRequest(
                captureRequest,
                Dispatchers.IO.asExecutor(),
                captureCallbacks
            )
        } catch (e: CameraAccessException) {
            Snackbar.make(
                previewView,
                "Failed to preview capture request",
                Snackbar.LENGTH_SHORT
            ).show()
            requireActivity().finish()
        }
    }

    override fun onClosed(session: CameraExtensionSession) {
        super.onClosed(session)
        cameraDevice.close()
    }

    override fun onConfigureFailed(session: CameraExtensionSession) {
        Snackbar.make(
            previewView,
            "Failed to start camera extension preview",
            Snackbar.LENGTH_SHORT
        ).show()
        requireActivity().finish()
    }
}

private fun startExtensionSession() {
    val outputConfig = arrayListOf(
        OutputConfiguration(stillImageReader.surface),
        OutputConfiguration(previewSurface)
    )
    val extensionConfiguration = ExtensionSessionConfiguration(
        CameraExtensionCharacteristics.EXTENSION_NIGHT,
        outputConfig,
        Dispatchers.IO.asExecutor(),
        extensionSessionStateCallback
    )
    cameraDevice.createExtensionSession(extensionConfiguration)
}

更多api

按照以上操作,一个基本的获取能力就完成了,如果想要查看更多api。参考 Camera2 Extensions API 示例。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Swing程序设计(6)边界布局,网格布局

文章目录 前言一、布局介绍 1.边界布局2.网格布局3.网格组布局.总结 前言 Swing程序中还有两种方式边界布局,网格布局供程序员使用。这两种布局方式更能体现出软件日常制作的排列布局格式。 一、布局介绍 1.BorderLayout边界布局 语法:new BorderLayout …

2023亚马逊云科技re:Invent引领科技新潮流:云计算与生成式AI共塑未来

2023亚马逊云科技re:Invent引领科技新潮流:云计算与生成式AI共塑未来 历年来,亚马逊云科技re:Invent,不仅是全球云计算从业者的年度狂欢,更是全球云计算领域每年创新发布的关键节点。 2023年亚马逊云科技re:Invent大会在美国拉斯…

实验室信息管理系统源码,LIS系统源码,lis源码

医学检验(LIS)管理系统源码,云LIS系统全套商业源码 随着全自动生化分析仪、全自动免疫分析仪和全自动血球计数器等仪器的使用,检验科的大多数项目实现了全自动化分析。全自动化分析引入后,组合化验增多,更好的满足了临床需要&…

某软件商店app抓包分析与sign加密算法实现

文章目录 1. 写在前面2. 抓包配置3. 抓包分析4. 接口测试5. sign加密算法6. 数据效果展示 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】…

2022年MathorCup大数据竞赛B题北京移动用户体验影响因素研究求解全过程文档及程序

2022年MathorCup高校数学建模挑战赛—大数据竞赛 B题 北京移动用户体验影响因素研究 原题再现: 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越…

nodejs+vue+python+PHP+微信小程序-留学信息查询系统的设计与实现-安卓-计算机毕业设计

1、用户模块: 1)登录:用户注册登录账号。 2)留学查询模块:查询学校的入学申请条件、申请日期、政策变动等。 3)院校排名:查询国外各院校的实力排名。 4)测试功能:通过入学…

使用STM32+SPI Flash模拟U盘

试验目的:使用STM32F103C8T6 SPI Flash(WSQ16)实现模拟U盘的功能 SPI Flash读写说明: Step1 设置SPI1 用于读取SPI Flash; Step2:设置SPI Flash 的使能信号 Step3:使能USB通信 Step4&#xf…

Re54:读论文 How Context Affects Language Models‘ Factual Predictions

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称:How Context Affects Language Models’ Factual Predictions ArXiv网址:https://arxiv.org/abs/2005.04611 2020年AKBC论文,作者来自脸书和UCL。 本文主要关注…

城市数字孪生优秀案例集 - 城市治理类 - 深圳市城市交通数字孪生建设

一、背景意义 “十四五”规划、《数字交通发展规划纲要》、《广东省数字经济促进条例》等提出“构建城市数据资源 体系,推进城市数据大脑建设,探索建设数字孪生城市”。 当前,我国 9 亿城市化人口每天出行约 16 亿人 次,主要大城…

VMware安装windows操作系统

一、下载镜像包 地址:镜像包地址。 找到需要的版本下载镜像包。 二、安装 打开VMware新建虚拟机,选择用镜像文件。将下载的镜像包加载进去即可。

发送一个网络数据包的过程解析

在 ip_queue_xmit 中,也即 IP 层的发送函数里面,有三部分逻辑。第一部分,选取路由,也即我要发送这个包应该从哪个网卡出去。 这件事情主要由 ip_route_output_ports 函数完成。接下来的调用链为:ip_route_output_port…

【matlab版本的ggplot2】

gramm (complete data visualization toolbox, ggplot2/R-like) 来源:Morel, Pierre. “Gramm: Grammar of Graphics Plotting in Matlab.” The Journal of Open Source Software, vol. 3, no. 23, The Open Journal, Mar. 2018, p. 568, doi:10.21105/joss.00568…

MySQL-03-索引

索引是提高MySQL查询性能的一个重要途径,但过多的索引可能会导致过高的磁盘使用率以及过高的内存占用,从而影响应用程序的整体性能。应当尽量避免事后才想起添加索引,因为事后可能需要监控大量的SQL才能定位到问题所在,而且添加索…

【深度学习】因果推断与机器学习

2023年初是人工智能爆发的里程碑式的重要阶段,以OpenAI研发的GPT为代表的大模型大行其道,NLP领域的ChatGPT模型火爆一时,引发了全民热议。而最新更新的GPT-4更是实现了大型多模态模型的飞跃式提升,它能够同时接受图像和文本的输入…

论文笔记——FasterNet

为了设计快速神经网络,许多工作都集中在减少浮点运算(FLOPs)的数量上。然而,作者观察到FLOPs的这种减少不一定会带来延迟的类似程度的减少。这主要源于每秒低浮点运算(FLOPS)效率低下。 为了实现更快的网络,作者重新回顾了FLOPs的运算符,并证明了如此低的FLOPS主要是由…

电源控制系统架构(PCSA)之电源状态层级

目录 5.2 电源状态层级 5.2.1 Core电源状态 5.2.2 Cluster的电源状态 5.2.3 设备电源状态 5.2.4 SOC电源状态 5.2 电源状态层级 电源状态可以组织为电源状态表的层次结构。每个电源状态表描述在其层次结构级别上可用的电源状态。 从系统级电源控制的角度来看&#xff0c…

Oracle研学-介绍及安装

一 ORACLE数据库特点: 支持多用户,大事务量的事务处理数据安全性和完整性控制支持分布式数据处理可移植性(跨平台,linux转Windows) 二 ORACLE体系结构 数据库:oracle是一个全局数据库,一个数据库可以有多个实例,每个…

Azure Machine Learning - Azure可视化图像分类操作实战

目录 一、数据准备二、创建自定义视觉资源三、创建新项目四、选择训练图像五、上传和标记图像六、训练分类器七、评估分类器概率阈值 八、管理训练迭代 在本文中,你将了解如何使用Azure可视化页面创建图像分类模型。 生成模型后,可以使用新图像测试该模型…

VR Interaction Framework2.0使用

1 按键 ,比如按压下手柄的B键 if (InputBridge.Instance.BButtonDown){print("kkkkkkbbbbb456");} 2抓取某个物体,那么就在要抓取的那个物体上加一些组件,特别是Grabble Unity Events

nginx知识梳理及配置详解

软件开发全文档获取:点我获取 nginx安装 #nginx安装 yum -y install gcc pcre-devel openssl-devel #依赖包 useradd -s /sbin/nologin nginx ./configure --prefix/usr/local/nginx #指定安装目录 --usernginx #指定用户 --with-http_ss…