Android camera2拍照旋转角度详解 |
您所在的位置:网站首页 › 摄像头手机调整方向 › Android camera2拍照旋转角度详解 |
最近用Android camera2做自定义相机,基本的关于打开相机到预览的过程就不多叙述了 大家参看https://github.com/gengqifu/361Camera这个文章就可以知道 今天详细讲讲我开过程中遇到的旋转角度的问题 直接上代码 //初始化传感器定位 orientationEventListener = object : OrientationEventListener(mActivity) { override fun onOrientationChanged(orientation: Int) { Log.e("orientation", "orientation=$orientation") sensorOrientation = when (orientation) { -1 -> ORIENTATION_VERTICAL in 70..134 -> 90 in 135..224 -> 180 in 225..280 -> 270 else -> 0 //这里应该是281-69的范围 } } } orientationEventListener.enable()这就是相机中 传感器定位的回调代码,是kotlin的代码。 代码以一个竖直平面,360度内旋转 正常应该是以45-134 135-224 225-314 315-45 这样4个区间 每90度一个区间平均分,但是实际开发中 我们判断为横屏拍照时,手机几乎得是旋转90度 才代表用户是横屏 所以我加大了orientation为0的这样一个角度区间 减小了orientation为90和270的这样一个区间(判定为横屏拍照的区间)。 因此可以根据需求,调整你的区间 达到需求的目的。 上面是我们手机在竖直拍照时,水平拍照时怎么处理喃? 大家看到我的log日志中有个orientation为-1,这说明手机这时候已经水平放置了 这个时候你在水平面内 左右旋转这个orientation都不会改变 都是-1 因此我们在-1的时候,其实就默认是竖屏拍照就可以了,这是一个很容易忽略的点 val captureBuilder = cameraDevice?.createCaptureRequest( CameraDevice.TEMPLATE_STILL_CAPTURE )?.apply { if (::previewImageReaderSurface.isInitialized) { addTarget(previewImageReaderSurface) } set( CaptureRequest.JPEG_ORIENTATION, CameraUtil.getJpegOrientation( CameraConfig.getCurrentCameraCameraCharacteristics(), sensorOrientation ) ) if (lightIsOpened()) { set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON) set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_TORCH) } else { set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF) } set( CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH ) set( CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE ) //锁定焦点 set( CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START ) //手机水平拍摄的时候 设置成VERTICAL if (sensorOrientation == ORIENTATION_VERTICAL) { set(CaptureRequest.JPEG_ORIENTATION, 90) } }这就是在拍照前,对相机的一些列设置 最后一个就是判断手机是水平时 将输出图片的orientation设置为90就可以了 我测试了手机自带的相机,水平拍摄时也是同样的处理方式
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |