Android Camera1相机预览

切换相机

[外链图片转存中…(img-CNxGnoau-1734629229371)]

一、Android相机API

目前Android中有三种API,供开发者对相机进行操作

  • Camera1
  • Camera2
  • CameraX

本文重点在于说明Camera1的使用

二、CameraManager

可以对相机的使用进行封装,只需要定义相机的相关操作,具体实现是Camera1,或Camera2,亦或是CameraX,都无需外部进行修改,只需内部进行定义,首先,先定义相机的相关操作接口ICamera

相机接口

public interface ICamera {
/**

  • 打开相机
    /
    void openCamera(Activity activity, SurfaceTexture surfaceTexture);
    /
    *
  • 打开相机
    /
    void openCamera(int facing, Activity activity, SurfaceTexture surfaceTexture);
    /
    *
  • 关闭相机
    /
    void closeCamera();
    /
    *
  • 切换相机
    /
    void switchCamera();
    /
    *
  • 切换相机
    /
    void switchCamera(int facing);
    /
    *
  • 设置Facing
    /
    void setCameraFacing(int facing);
    /
    *
  • 获取Facing
    /
    int getCameraFacing();
    /
    *
  • 设置预览尺寸
    /
    void setPreviewSize(Size cameraSize);
    /
    *
  • 获取预览尺寸
    /
    Size getPreviewSize();
    /
    *
  • 设置显示旋转角度
    /
    void setDisplayOrientation(int displayOrientation);
    /
    *
  • 获取显示旋转角度
    /
    int getDisplayOrientation();
    /
    *
  • 释放相机
    /
    void releaseCamera();
    /
    *
  • 添加相机回调
    /
    void addOnCameraListener(OnCameraListener onCameraListener);
    /
    *
  • 移除相机回调
    /
    void removeOnCameraListener(OnCameraListener onCameraListener);
    /
    *
  • 移除所有回调
    */
    void removeAllOnCameraListener();
    }

注意到,里面有个相机回调OnCameraListener,这是自定义的一个相机回调

public interface OnCameraListener {
/**

  • 相机打开
    */
    void onCameraOpened(Size cameraSize, int facing);

/**

  • 相机关闭
    */
    void onCameraClosed();

/**

  • 相机异常
    */
    void onCameraError(Exception e);
    }

接下来,我们新建CameraManager,实现ICamera接口

public class CameraManager implements ICamera {
/**

  • Camera实现
    */
    private final ICamera camera = new Camera1();

/**

  • 后台线程
    */
    private Handler handl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值