两种解决方式:1、找到和屏幕分辨率最匹配的PictureSize和PreviewSize(本文使用这种方式)
2、先取比屏幕分辨率大的PreviewSize和PictureSize最后生成图片的时候按屏幕分辨率裁剪(这种方式没试过,但是应该是适配率最高的)

/*** 从列表中选取合适的分辨率(选择最高清效果最好的比例)* 默认w:h = 16:9* <p>注意:这里的w对应屏幕的height* h对应屏幕的width<p/>*/private Camera.Size getProperBestSize(List<Camera.Size> pictureSizeList, float screenRatio) {List<Camera.Size> list = new ArrayList<>();for (int i = pictureSizeList.size() - 1; i >= 0; i--) {Camera.Size size = pictureSizeList.get(i);if(mScreenWidth == size.width && mScreenHeight == size.height){list.add(size);break;}float currentRatio = ((float) size.width) / size.height;if (currentRatio - screenRatio == 0) {list.add(size);}}if (list.size() == 0) {for (int i = pictureSizeList.size() - 1; i >= 0; i--) {Camera.Size size = pictureSizeList.get(i);if (equalRate(size,1.7777f)) {list.add(size);}}}return list.size()==0 ? pictureSizeList.get(0) : list.get(list.size() / 3);}/*** 从列表中选取合适的分辨率* 默认w:h = 4:3* <p>注意:这里的w对应屏幕的height* h对应屏幕的width<p/>*/private Camera.Size getProperSize(List<Camera.Size> pictureSizeList,Camera.Size picSize, float screenRatio) {Log.i(TAG, "screenRatio=" + screenRatio);Camera.Size result = pictureSizeList.get(0);List<Camera.Size> list = new ArrayList<>();for (Camera.Size size : pictureSizeList) {if(picSize.width == size.width && picSize.height == size.height){result = size;break;}float currentRatio = ((float) size.width) / size.height;if (currentRatio - screenRatio == 0) {list.add(size);}}if (list.size() == 0) {for (int i = pictureSizeList.size() - 1; i >= 0; i--) {Camera.Size size = pictureSizeList.get(i);if (equalRate(size,1.7777f)) {list.add(size);}}result = list.get(list.size() / 3);}return result;}private boolean equalRate(Camera.Size s, float rate){float r = (float)(s.width)/(float)(s.height);if(Math.abs(r - rate) <= 0.2){return true;}else{return false;}}

解决Android自定义相机预览和照片分辨率差异的问题相关推荐

  1. android自定义相机预览尺寸,相机在Android中,如何获得最佳尺寸,预览尺寸,图片尺寸,视图尺寸,图像扭曲...

    混合来自OpenGL和 Android相机的视图时图像失真,以便在使用takepicture方法时获取两者的图像.我查了一下,发现相机图片设置为640X480,openGL视图和相机预览都设置为128 ...

  2. android 圆形相机预览拍照_Android多种方式实现相机圆形预览

    最终效果图如下: 一.为预览控件设置圆角 public RoundTextureView(Context context, AttributeSet attrs) { super(context, a ...

  3. android 圆形相机预览拍照_Android多种方式实现相机圆形预览的示例代码

    效果图如下: 一.为预览控件设置圆角 public RoundTextureView(Context context, AttributeSet attrs) { super(context, att ...

  4. Android Camera2相机预览画面放大缩小(数码变焦DigitalZoom)功能实现

    一.前言 Android自定义相机开发中,常常会有通过手势放大或缩小相机预览画面的需求,即数码变焦DigitalZoom. 二.接口说明 1. 获取最大的放大倍数 float maxZoom = mC ...

  5. Android Camera2 相机预览、获取数据

    Camera2简要说明 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2),大幅提高了A ...

  6. android+相机画面旋转,Android:相机预览的屏幕方向/旋转

    我已经创建了一个相机应用程序,我想让我的应用程序在所有4个可能的方向转换,并相应地更新相机预览.因为我已经使用我从以下复制的以下方法: Android – Camera preview is side ...

  7. Android调用相机预览黑屏app passed NULL surface解决

    由于项目需求,要实现一个调用相机拍照然后将矩形框中的部分切割出来的功能,于是在网上找了 一个PlayCamera的demo程序.但运行的时候发现,只有第一次安装上时拍照界面能成功预览,一旦用back按 ...

  8. Android Camera相机预览,拍照 ,横屏竖屏的处理

    功能分别是: 1.竖屏的前置,后置显示 加 拍照 2.横屏的前置,后置显示 加 拍照 整个项目的代码贴出来了,里面加了有备注,不理解的也可以去参考官网点击跳转到官网 首先选择前置后置布局效果如下 布局 ...

  9. Android Camera1相机预览

    切换相机 / void switchCamera(int facing); /* 设置Facing / void setCameraFacing(int facing); /* 获取Facing / ...

最新文章

  1. Go 学习笔记(80)— Go 标准库 container/list(单链表、双链表)
  2. 进击的UI--------------------GETPOST
  3. 【pmcaff】玩智能硬件的小伙伴,这些你用过么!
  4. [机械]“重工业面临两大危机”——向文波(三一重工股份有限公司执行总裁)
  5. python随机抽样numpy_python numpy之np.random的随机数函数使用介绍
  6. mysql代表单个字符_mysql字符编码以及字符序
  7. linux进程signal,Linux 编程之【进程】signal
  8. React面试题总结,含爱奇艺,小米,腾讯,阿里
  9. windows删文件:找不到该项目,该项目不在xx中,请确认位置,然后重试 的解决方案
  10. java3d/j3d源码位置
  11. 第38条:检查参数的有效性
  12. OpenLayers3基础教程——OL3 介绍interaction
  13. 下载虚拟机安装linux镜像(图形化)
  14. 一维搜索算法——黄金分割法原理与实现
  15. 生鲜电商、社区团购、团长中心、地址管理、自提点、订单列表、限时折扣、预售、会员储值、钱包、同城配送、门店自提、团长自提、采购、履约、仓储、运输、财务、移动端电商原型、rp源文件、axure电商原型
  16. 每台计算机的ip地址解析,ip地址是什么?【详解】
  17. 2021-09-02
  18. 用pycharm创建数据库sqlites3表格,但是打开并不显示
  19. Mybatis学习笔记-配置Log4j以便查看MyBatis操作数据库的过程
  20. 安卓修改电池容量教程_Android 使用adb查看和修改电池信息

热门文章

  1. java 统计子字符串个数_Leecode统计子串个数(java)
  2. 【产业互联网周报】AI独角兽们集体亮相安博会,侧重点各不相同;BAT智慧城市布局进一步加深...
  3. WordPress开发入门08:自定义函数和WordPress钩子
  4. 微信自定义分享--失效问题
  5. 如何利用 onlyoffice 实现文档格式转换
  6. Android 原生 多屏显示 (分屏) 原理 解析
  7. Cocos2dx游戏教程(序):火爆抖音的网红口红机真能扎到口红吗?
  8. Windows下安装anaconda、创建虚拟环境、常见的conda命令
  9. lopa分析_什么是LOPA分析?
  10. 缺省(默认)端口参数