Android开发 之 Camera

本文详细解析Android平台上的Camera API使用,包括初始化Camera,捕获图片,调整相机参数等核心内容,带你掌握Android应用中集成相机功能的关键技巧。
摘要由CSDN通过智能技术生成

Camera

在android5.0的时候关于相机的api发生了很大的改变,也增加很多功能。但是应用开发中在5.0一下也要使用相机啊,所以5.0一下的api还是要学习的


1. 初始化surfaceview,本篇是数据源的预览在surface上的
        sv_camera= (SurfaceView) findViewById(R.id.sv_camera);
        m_surfaceHolder =sv_camera.getHolder(); // 绑定SurfaceView,取得SurfaceHolder对象
        m_surfaceHolder.setFixedSize(720, 1100); // 预览大小設置
        m_surfaceHolder.addCallback(this);
surfaceview通过 getHolder获得surfaceholder对象,进行设置预览尺寸,也就是surfaceview的显示大小。这里还设置一个callback,关于surfaceview的相关的回调
    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        initCamera();//surfaceview创建后初始化相机
    }
    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
    }
    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
    }
根据方法名就知道什么意思了,这里注意的是必须在surface创建成功后才能初始化相机。


2.初始化相机
public void initCamera()
    {
        //默认打开后置,传参数的话0是后置,1是前置
        mCamera = Camera.open(cameraId);
        try {
            mCamera.setPreviewDisplay(m_surfaceHolder);
            mCamera.setDisplayOrientation(90);//设置预览方向,才能显示正常
            Camera.Parameters parameters = mCamera.getParameters();
            parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);//连续对焦
            parameters.setPreviewFormat(ImageFormat.NV21);
            parameters.setPreviewSize(2096,1552);//设置预览尺寸
//            parameters.setPictureSize(400,600);//设置拍照尺寸
//            parameters.setRotation(90);//设置拍照后图片方向

            List<Integer> supportedPreviewFormats = parameters.getSupportedPreviewFormats();
            //获取摄像头支持的数据格式,一般有两个:17=NV21和842094169=YV12
            for (Integer i : supportedPreviewFormats)
            {
                Log.e("formats","formats:"+i);
            }
            //选择合适的预览尺寸,list中只有一个,那就什么也别干了
            List<Camera.Size> list = parameters.getSupportedPreviewSizes();
            if(li
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值