博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nexus Android8 0系统拍照预览方向问题解决方法
阅读量:6227 次
发布时间:2019-06-21

本文共 3060 字,大约阅读时间需要 10 分钟。

Nexus 手机 原生Android系统 Android 8.0

问题

测试发现在Nexus手机,android8.0手机上发现,扫码的时候显示的拍照预览方向不正,有180度的旋转并且变形。 但是在其他手机及系统上测试是没有问题的。

解决

还是依旧Stack Overflow啊。 亲测完美解决此问题。

private void surfaceIsChanged() {        if (mHolder.getSurface() == null) {            System.out.println("getSurface,nullnull");            return;        }        try {            mCamera.stopPreview();        } catch (Exception e) {        }        try {            Camera.Size previewSize = mCamera.getParameters().getPreviewSize();            int dataBufferSize = (int) (previewSize.height * previewSize.width * (ImageFormat.getBitsPerPixel(mCamera.getParameters()                    .getPreviewFormat()) / 8.0));            mCamera.addCallbackBuffer(new byte[dataBufferSize]);            mCamera.setPreviewDisplay(mHolder);            mCamera.setPreviewCallbackWithBuffer(previewCallback);            mCamera.startPreview();            mCamera.autoFocus(autoFocusCallback);            Camera.CameraInfo cameraInfo = new Camera.CameraInfo();            int camIdx = 0; // DO your logic to get front or back camera...or loop through all avaialable.            Camera.getCameraInfo(camIdx, cameraInfo);            try {                // If using back camera then simply rotate what CameraInfo tells you.                if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK)                    mCamera.setDisplayOrientation(cameraInfo.orientation);                else                    // If using front camera note that image might be flipped to give users the impresion the are looking at a mirror.                    mCamera.setDisplayOrientation( (360 - cameraInfo.orientation) % 360);            } catch (Exception e) {                e.printStackTrace();            }            // Toast.makeText(QRZbarActivity.this, "开始扫描",            // Toast.LENGTH_SHORT).show();            autoOpenLight();        } catch (Exception e) {            Toast.makeText(BaseScanActivity.this, R.string.account_toast_not_open_camera, Toast.LENGTH_SHORT).show();//			showTip("您未允许" + getResources().getString(R.string.app_name) + "访问您的相册\n请在“安全中心 -授权管理”中更改设置");            Log.d("DBG", "Error starting camera preview: " + e.getMessage());        }    }复制代码

其中主要生效的代码是:

Camera.CameraInfo cameraInfo = new Camera.CameraInfo();            int camIdx = 0; // DO your logic to get front or back camera...or loop through all avaialable.            Camera.getCameraInfo(camIdx, cameraInfo);            try {                // If using back camera then simply rotate what CameraInfo tells you.                if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK)                    mCamera.setDisplayOrientation(cameraInfo.orientation);                else                    // If using front camera note that image might be flipped to give users the impresion the are looking at a mirror.                    mCamera.setDisplayOrientation( (360 - cameraInfo.orientation) % 360);            } catch (Exception e) {                e.printStackTrace();            }复制代码

根据照相的内容进行设置显示方向。

参考:

// END 2018年4月19日

转载地址:http://osnna.baihongyu.com/

你可能感兴趣的文章
HDU 2181 DFS
查看>>
Linux 用C语言判断文件和文件夹
查看>>
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
查看>>
图的基本知识
查看>>
leetcode第一刷_Same Tree
查看>>
高速排序之算法导论实现
查看>>
$.post()提交了数据,return不给跳转
查看>>
检测和删除多余无用的css
查看>>
pip安装使用详解【转】
查看>>
Mybatis 中延时加载
查看>>
固本清源
查看>>
Execution Plan 执行计划介绍
查看>>
聊聊连接池和线程
查看>>
Python——正則表達式(2)
查看>>
适合新人学习的iOS官方Demo
查看>>
拉开大变革序幕(下):分布式计算框架与大数据
查看>>
AndroidStudio 使用AIDL
查看>>
H.264 RTPpayload 格式------ H.264 视频 RTP 负载格式(包含AAC部分解析)
查看>>
poj 3468 A Simple Problem with Integers 【线段树-成段更新】
查看>>
CentOS---网络配置详解
查看>>