美文网首页
Camera2 vs Camera1

Camera2 vs Camera1

作者: Summer_LJ | 来源:发表于2020-09-15 14:56 被阅读0次

    Camera2

    CameraManager:
    摄像头管理器,专门用于检测系统摄像头、打开系统摄像头。除此之外,调用CameraManager的getCameraCharacteristics(String)方法即可获取指定摄像头的相关特性。在Camera打开之前主要操作CameraManager,打开后主要操作CameraCaptureSession。实例:getSystemService(Context.CAMERA_SERVICE);
    CameraCharacteristics
    摄像头属性,相当于原CameraInfo。通过CameraManager获取指定id的摄像头属性。 通过获取Camera属性信息,配置Camera输出,如FPS,大小,旋转等。实例获取:mCameraManager.getCameraCharacteristics(currentCameraId);
    CameraDevice
    代表系统摄像头,该类的功能类似于早期的Camera类。用于创建CameraCaptureSession和关闭摄像头。 通过CameraManager打开Camera,在StateCallback中会得到CameraDevice实例;
    CameraCaptureSession
    Camera打开后主要和CameraCaptureSession打交道,CameraCaptureSession建立了一个和Camera设备的通道,当这个通道建立完成后就可以向Camera发送请求获取图像。当程序需要预览、拍照时,都需要先通过该类的实例创建Session。而且不管预览还是拍照,也都是由该对象的方法进行控制的,其中控制预览的方法为setRepeatingRequest();控制拍照的方法为capture()。为了监听CameraCaptureSession的创建过程,以及监听CameraCaptureSession的拍照过程,Camera v2 API为CameraCaptureSession提供了StateCallback、CaptureCallback等内部类;
    CaptureRequest
    当程序调用setRepeatingRequest()方法进行预览时,或调用capture()方法进行拍照时,都需要传入CaptureRequest参数。CaptureRequest代表了一次捕获请求,用于描述捕获图片的各种参数设置,比如对焦模式、曝光模式……总之,程序需要对照片所做的各种控制,都通过CaptureRequest参数进行设置;
    CaptureRequest.Builder
    CaptureRequest.Builde中主要结构是一个Map,Builder构建后得到CaptureRequest;

    Camera1

    Camera
    framework中api1的接口类,定义open、startPreview、takePicture、AutoFocus等标准的接口实现。实例方式:mCamera = Camera.open(camId);
    Camera.Parameters
    参数设置,通过camera内部类Parameters操作实现,如设置帧率,设置图片格式,预览尺寸等具体的设置接口,提供set/get函数;
    Camera.CameraInfo
    元数据获取,通过camera内部类CameraInfo实现,这里只能获取不能修改;

    相关文章

      网友评论

          本文标题:Camera2 vs Camera1

          本文链接:https://www.haomeiwen.com/subject/yblfyktx.html