东莞品牌网站建设,天天seo百度点击器,做网站的环境配置,网站资源做缓存文章目录 应用举例#xff08;可以不看这一part#xff0c;直接跳过看具体怎么做#xff09;#xff1a;Snapchat 通过 Camera2 Extensions API 将新相机功能的集成速度提高了 50%**Camera2 扩展 API 可以访问高级功能更多设备上的更多机会 正文#xff1a;开始使用扩展架… 文章目录 应用举例可以不看这一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 sessiontry {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 示例。