Android Camera2 API简述 (六)

969 阅读2分钟

这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

一、 CaptureResult

CaptureResult 表示的是捕获的结果,表示传感器捕获的单个图像的结果的一个子集,其中包含了处理通道、输出缓冲区、捕获的硬件例如闪光灯、传感器和镜头、还有控制算法的最终配置。 CaptureResult 对象不可变,因为捕获的结果是摄像机对 CaptureRequest 进行处理后生产的,不但如此。想要确定捕获使用的最终值的话,我们还可以对 CaptureResult 查询为 CaptureRequest 列出的所有属性,结果还包括捕获过程中相机设备状态的附加元数据。

二、实例对象

CameraCaptureSession.CaptureCallback 的回调方法 onCaptureProgressed() 和 onCaptureCompleted() 中获取到 CaptureResult 的对象。

    private CameraCaptureSession.CaptureCallback mCaptureCallback
        = new CameraCaptureSession.CaptureCallback() {
        
    @Override
    public void onCaptureProgressed(@NonNull CameraCaptureSession session,
                                    @NonNull CaptureRequest request,
                                    @NonNull CaptureResult partialResult) {
        process(partialResult);
    }

    @Override
    public void onCaptureCompleted(@NonNull CameraCaptureSession session,
                                   @NonNull CaptureRequest request,
                                   @NonNull TotalCaptureResult result) {
        process(result);
    }

    }
};

image.png

三、内部类

CaptureResult.Key ,用于 CaptureResult 类的字段查找。

四、常用方法

1. T get(Key key)

获取 CaptureResult 中指定 key 的值,key 为 CaptureResult 类中的那些静态常量。

2. long getFrameNumber()

获取该结果申请的帧的数量。

3. List<Key<?>> getKeys()

返回映射中包含的所有 Key 的列表。

4. CaptureRequest getRequest()

返回这个结果对应的 CaptureRequest 对象。

5. int getSequenceId()

获取发生故障时的序列ID。

bitmap BitmapFactory 工具类

四种加载Bitmap对象的方法:

1、decodeFile : 本地图片文件。

2、decodeResource : 项目资源文件。

3、decodeStream : 流对象(网络输入流 或 本地输入流)。

4、decodeByteArray :字节序列中加载一个Bitmap对象。

setImageBitmap ( ) 显示图片。

Bitmap 代表一个位图,BitmapDrawable 里封装的图片就是一个 Bitmap 对象。开发者为了把一个 Bitmap 对象包装成 BitmapDrawable 对象,可以调用 BitmapDrawable 的构造器:

BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);

如果需要获取 BitmapDrawable 所包装的 Bitmap 对象,则可以用 BitmapDrawable 的 getBitmap() 的方法:

Bitmap bitmap = bitmapDrawable.getBitmap();