当前位置: 首页 > wzjs >正文

建设工程质量管理条例网站做动漫主题的网站

建设工程质量管理条例网站,做动漫主题的网站,个体营业执照可以做网站搞推广吗,网站正能量点进去就能看背景 Android开发工作过程中,经常需要用到camera相关能力,比如:人脸识别,ai识别,拍照预览,摄像头录制等等需求。都需要使用到camera,且需要拿到camera的预览数据。但是每次开发这块代码都比较繁…

背景

        Android开发工作过程中,经常需要用到camera相关能力,比如:人脸识别,ai识别,拍照预览,摄像头录制等等需求。都需要使用到camera,且需要拿到camera的预览数据。但是每次开发这块代码都比较繁琐,一大堆的接口(尤其是camera2),用错一个就容易出现意想不到的结果。所以这里我们将Android的camera做一次简单易用的封装,再也不用担心API用错了。

一、Camera的历史

在封装之前,我们先简单了解下camera的发展历史。目前Android有camera1和camera2两个不同版本的API。且camera1已经逐渐被抛弃了。那她两到底啥区别?

  • Camera1(2010年推出)
    • 简单但僵化:采用同步阻塞模型,调用takePicture()时整个相机管线阻塞,导致延迟高、功耗大。
    • 有限控制:参数调整(如曝光、对焦)通过Camera.Parameters实现,仅支持基础设置,无法精细控制。
    • 高延迟:拍照后需等待图像处理完成才能继续操作。
    • 资源浪费:预览和拍照无法并行,导致CPU/GPU利用率低。
    • 硬件抽象层(HAL)简单:无法适配多摄像头、高帧率传感器(>30fps)或RAW格式。
    • 功能缺失:不支持HDR+、人像模式等计算摄影需求。
    • 独占式访问:仅允许单应用占用相机,其他应用需等待释放(如扫码时无法同时视频通话)。
  • Camera2(2014年推出,Android 5.0+)
    • 异步管道模型:引入CaptureRequestCaptureSession,支持非阻塞操作(如连拍、实时预览并行处理)。
    • 精准控制:可独立配置传感器、闪光灯、处理算法(如手动调节ISO、快门速度)。
    • 零复制流水线:图像数据直接传递到Surface(如TextureView),减少内存拷贝。
    • 批处理请求:单次提交多个CaptureRequest(如同时预览+对焦+测光),提升帧率和能效比。
    • 标准化HAL接口:统一控制不同厂商的相机硬件(如双摄、TOF传感器)。
    • 高级功能支持:原生实现RAW拍摄、手动对焦轨迹、逻辑多摄像头(融合多个传感器数据)。
    • 并发共享机制:通过CameraManager协调多应用访问(如后台AR应用与前台相机APP共存)。
特性Camera1Camera2
架构模型同步阻塞异步非阻塞管道
性能高延迟、低吞吐量低延迟、高吞吐量(支持4K/60fps)
硬件适配仅基础单摄多摄/RAW/高帧率传感器
功能扩展基础拍照/录像HDR+/手动模式/计算摄影
多应用支持独占访问并发共享

 二、封装核心能力

工作场景下对camera最常用的核心能力:开启摄像头,切换摄像头,预览,关闭摄像头,获取摄像头预览数据。

所以我们要封装的话就直接将这几个能力抽象成对应的接口。

package com.qt.camera.baseimport android.graphics.SurfaceTexture
import android.hardware.Camera
import android.util.Range
import com.qt.camera.FUCameraConstants
import com.qt.camera.enumeration.FUCameraFacingEnum
import com.qt.camera.listener.OnFUCameraListener/**** DESC:Camera抽象类* Created on 2021/10/22* @author Jason Lu*/
abstract class FUAbstractCamera {/*** 前置相机id*/@Volatilevar mFrontCameraId = Camera.CameraInfo.CAMERA_FACING_FRONT/*** 后置相机id*/@Volatilevar mBackCameraId = Camera.CameraInfo.CAMERA_FACING_BACK/*** 曝光补偿*/@Volatilevar mExposureCompensation = FUCameraConstants.EXPOSURE_COMPENSATION/*** 相机采集帧率模式* true:最大帧率输出 false:最大可选范围区间输出*/@Volatilevar mIsHighestRate = false/*** 相机后置角度*/@Volatilevar mBackCameraOrientation = FUCameraConstants.BACK_CAMERA_ORIENTATION/*** 当前相机前置角度*/@Volatilevar mFrontCameraOrientation = FUCameraConstants.FRONT_CAMERA_ORIENTATION/*** 当前相机朝向*/@Volatilevar mCameraFacing = FUCameraFacingEnum.CAMERA_FRONT/*** 当前相机输出分辨率-宽*/@Volatilevar mCameraWidth: Int = 1280/*** 当前相机输出分辨率-高*/@Volatilevar mCameraHeight: Int = 720/*** 当前相机角度*/@Volatilevar mCameraOrientation = mFrontCameraOrientation/*** 当前相机绑定纹理 Id*/@Volatilevar mCameraTexId = 100/*** 当前相机绑定 SurfaceTexture*/@Volatilevar mSurfaceTexture: SurfaceTexture? = null/*** 用户设置的相机绑定 SurfaceTexture*/@Volatilevar mCustomSurfaceTexture: SurfaceTexture? = null/*** 是否正在预览状态*/@Volatileprotected var mIsPreviewing = false/*** 是否只读ImageReader流*/@Volatilevar onlyReadImage = false/*** 是否需要停止预览*/@Volatileprotected var mIsNeedStopPreviewing = false/*** 事件回调*/@Volatileprotected var mCameraListener: OnFUCameraListener? = null/*** 自定义摄像头帧率范围* 针对camera2*/var mRangeFps: Range<Int>? = null/*** 绑定数据回调* @param listener OnFUCameraListener*/fun bindCameraListener(listener: OnFUCameraListener?) {this.mCameraListener = listener}/*** 资源释放*/open fun release() {if (mIsPreviewing) {closeCamera()}mCameraListener = null}/*** 初始化相机*/abstract fun initCameraInfo()/*** 打开相机*/abstract fun openCamera()/*** 开启预览*/abstract fun startPreview()/*** 对焦* @param viewWidth Int* @param viewHeight Int* @param rawX Float* @param rawY Float* @param areaSize Int*/abstract fun handleFocus(viewWidth: Int, viewHeight: Int, rawX: Float, rawY: Float, areaSize: Int)/*** 获取亮度* @return Float*/abstract fun getExposureCompensation(): Float/*** 设置亮度* @param value Float*/abstract fun setExposureCompensation(value: Float)/*** 分辨率变更处理* @param cameraWidth Int* @param cameraHeight Int*/abstract fun changeResolution(cameraWidth: Int, cameraHeight: Int)/*** 关闭相机* @param releaseSurface 是否释放SurfaceTexture资源*/abstract fun closeCamera(releaseSurface:Boolean = true)/*** 切换相机前后置*/fun switchCamera(surfaceTexture: SurfaceTexture?) {closeCamera(mCustomSurfaceTexture == null || surfaceTexture !=null)//如果使用用户自定义的surfaceTexture或者之前设置过surfaceTexture就releasemCameraFacing = if (mCameraFacing == FUCameraFacingEnum.CAMERA_FRONT) FUCameraFacingEnum.CAMERA_BACK else FUCameraFacingEnum.CAMERA_FRONTmCameraOrientation = if (mCameraFacing == FUCameraFacingEnum.CAMERA_FRONT) mFrontCameraOrientation else mBackCameraOrientationif(surfaceTexture!= null){mCustomSurfaceTexture = surfaceTexture}openCamera()}/*** 设置相机放大等级*/abstract fun setZoomRatio(zoomRatio: Float)}

核心能力抽象出来后,剩下要做的就是camera1和camera2分别实现了。具体的实现这里就不贴代码了,给个github链接,各位自己下载直接用吧:GitHub - 279154451/Camera: Camera工具


文章转载自:

http://ld5q3Tim.sLwqt.cn
http://NIwmWSlW.sLwqt.cn
http://NHUtfYYw.sLwqt.cn
http://zBPItHyS.sLwqt.cn
http://UwfmwBLz.sLwqt.cn
http://nu8ixxQG.sLwqt.cn
http://EwoqLgIx.sLwqt.cn
http://pIc4wdCg.sLwqt.cn
http://2IL48MOH.sLwqt.cn
http://YnQqyNjk.sLwqt.cn
http://Z50cXsQc.sLwqt.cn
http://3jVh8Tno.sLwqt.cn
http://iJ9dqCWq.sLwqt.cn
http://BM2nBFlF.sLwqt.cn
http://bDDkonS1.sLwqt.cn
http://uExziQMc.sLwqt.cn
http://XTB13PbY.sLwqt.cn
http://dRCdnl4L.sLwqt.cn
http://gPwOI0se.sLwqt.cn
http://WDA1hoRw.sLwqt.cn
http://RvzpoT8m.sLwqt.cn
http://E6YZy1G2.sLwqt.cn
http://d0QE91bC.sLwqt.cn
http://gANPRgQZ.sLwqt.cn
http://P4vyFPBN.sLwqt.cn
http://3vwzMCp6.sLwqt.cn
http://kJv3QR7Q.sLwqt.cn
http://2vus476M.sLwqt.cn
http://y60ZULol.sLwqt.cn
http://9yJYCzen.sLwqt.cn
http://www.dtcms.com/wzjs/619745.html

相关文章:

  • wordpress网站建设教程视频深圳电子商务网站建设
  • 推荐网站建设服务话术模板之家免费下载方法
  • 求建设网站微信群做境外的网站网站违法么
  • 三乡网站建设公司宁晋seo网站优化排名
  • 杭州互助盘网站开发分销商管理系统
  • 做外贸怎么上国外网站济南建设个人网站平台
  • 北京网站建设可选兴田德润2018做网站前景好么
  • 蓝德网站建设青海西宁网站建设
  • st3网站开发齐齐哈尔市住房城乡建设门户网站
  • 做礼品的网站什么外贸网站开发客户
  • 商城网站前台模板免费下载营销推广网站
  • 清理网站数据库专业的外贸网站建设公司价格
  • 怎么提高自己网站的流量世界杯竞猜
  • 微信怎么制作微电影网站wordpress与typecho
  • 在哪个网站找水利工地做跨境外贸是做什么的
  • 网站建设yankt自己学做网站需要学多久
  • 如何建立一个网站共享网店装修论文
  • 网站建设软件是什么意思站长工具网站备案
  • 做体育类网站素材有什么做服装的网站好
  • 网站开发的英文书有什么苏州网站优化
  • 在建设网站入账如何利用互联网宣传与推广
  • wordpress网站乱码用html5做的网站代码
  • 站群cms系统企业做网站的公司有哪些
  • 企业网站教程 优帮云为何上不了建设银行网站
  • 深圳网站建设 信科便宜下城区住房和城市建设局网站
  • 网站源码整站打包制作网站需要什么知识
  • 南京网站设计收费标准wordpress首页正文内容怎么改
  • 什么网站访问量北京企业建站哪家好
  • 网站建设需要哪些费用动画怎么制作
  • 浙江中立建设网站网站后台账户密码