本人使用Camera显示预览图竖屏显示会有一些拉伸。感觉被拉长了。

本人已经选择了最接近的比例了,但是还是有拉伸。

package com.example.zxing_android;

import java.io.IOException;

import java.util.List;

import com.example.zxing_android.R.color;

import android.app.Activity;

import android.hardware.Camera;

import android.hardware.Camera.Size;

import android.os.Bundle;

import android.util.Log;

import android.view.SurfaceHolder;

import android.view.SurfaceHolder.Callback;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout.LayoutParams;

/**

*/

public class CameraActivity extends Activity {

SurfaceView mSurface;

SurfaceHolder mSurfaceHolder;

Camera mCamera;

boolean isInit;

Button btn;

// int viewWidth, viewHeight;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_camera);

mSurface = (SurfaceView) findViewById(R.id.camera);

btn = (Button) findViewById(R.id.btn);

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

mCamera.autoFocus(null);// 自动对焦

}

});

mSurfaceHolder = mSurface.getHolder(); // get the camera holder

mSurfaceHolder.addCallback(new Callback() {

@Override

public void surfaceCreated(SurfaceHolder arg0) {

mCamera = Camera.open(); // open camera

isInit = false;

try {

mCamera.setPreviewDisplay(mSurfaceHolder); // set the //

} catch (IOException e) {

e.printStackTrace();

if (mCamera != null) {

mCamera.release();

mCamera = null;

}

}

mCamera.startPreview(); // state preview

}

@Override

public void surfaceDestroyed(SurfaceHolder arg0) {

// mSurface.setLayoutParams(new LayoutParams(viewWidth,

// viewHeight));

mCamera.setPreviewCallback(null); // !这个必须在前,不然退出出错

mCamera.stopPreview();

mCamera.release();

mCamera = null;

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

initCamera(width, height);

}

});

}

private void initCamera(int width, int height) {

if (!isInit) {

// viewWidth = width;

// viewHeight = height;

isInit = true;

mCamera.autoFocus(null);

Camera.Parameters parameters = mCamera.getParameters();

// 摄像头旋转

// if (android.os.Build.VERSION_CODES.GINGERBREAD >

// android.os.Build.VERSION.SDK_INT) {

mCamera.setDisplayOrientation(90);

// } else {

// parameters.set("rotation", 180);

// }

List previewSizes = mCamera.getParameters().getSupportedPreviewSizes();

double aspectTolerance = Double.MAX_VALUE;

int preWidth = 0, preHeight = 0;

double scale = ((double) width) / height;

for (int i = 0, len = previewSizes.size(); i

Size s = previewSizes.get(i);

double sizeScale = ((double) s.height) / s.width;

if (Math.abs(scale - sizeScale)

aspectTolerance = Math.abs(scale - sizeScale);

preWidth = s.height;

preHeight = s.width;

}

}

if (preWidth != 0) {

parameters.setPreviewSize(preWidth, preHeight);

// mSurface.setLayoutParams(new LayoutParams(720, 1280));

Size s = parameters.getPreviewSize();

Log.e("", s.width + " " + s.height);

}

}

}

}

解决方案

10

输出下getSupportedPreviewSizes的全部值。例如1080*720

假如你竖屏是用整个手机屏幕显示预览,那么手机的长宽比例和预览返回的相差太多了。拉伸应该是不可避免。

不想拉伸的话就缩小屏幕显示的范围吧。

90

引用:

应该先设置预览参数再打开预览图。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用Camera预览显示变形问题!

android camera surfaceview 变形,使用Camera预览显示变形问题相关推荐

  1. android预览界面显示不全,Android SurfaceView Camera 预览显示不全(画面拉伸)

    释放双眼,带上耳机,听听看~! 项目当中遇到调整摄像头位置需要全屏显示摄像头预览界面,过程中发现预览界面存在无法显示全,画面被拉伸的问题.surfaceview的宽高比可能与camera设置的宽高比不 ...

  2. Android 自定义Camera(一)如何预览相机

    Android Camera之如何预览相机 1.官方Api描述 翻译后为: 使用android.hardware.Camera拍照,请使用以下步骤: 1.从open(int)获取一个Camera实例. ...

  3. Android Camera2 教程 · 第三章 · 预览

    Android Camera2 教程 · 第三章 · 预览 DarylGo关注 Android Camera 上一章<Camera2 开启相机>我们学习了如何开启和关闭相机,接下来我们来学 ...

  4. 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率

    今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...

  5. android p dp5,谷歌释出Android P第5个开发者预览版更新!

    原标题:谷歌释出Android P第5个开发者预览版更新! [PConline资讯]今天凌晨,谷歌正式推出了AndroidP的第五个开发者预览版(DP5),这标志着AndroidP终于准备好在2018 ...

  6. FileUpload控件实现单按钮图片自动上传并带预览显示

    FileUpload控件实现单按钮图片自动上传并带预览显示 1.实现原理: FileUpload控件默认不支持服务端的ONCHANGE事件,此时用一种变通的方法借用客户端的onchange事件,调用_ ...

  7. wps打印预览显示不全怎么解决?

    我们在打印wps表格时,可能会遇到打印预览显示不全的情况,遇到这种情况要如何调整呢?下面就来看看具体的解决办法. 第一步:打开打印预览显示不全的wps表格,单击"打印预览"按钮. ...

  8. 微信小程序云开发上传图片无法预览显示

    这是图片无法预览显示的情况,而且文件格式显示也不显示为图片格式 不要忘记要在起完名字后加上你希望的图片格式后缀名 加完之后就可以正常显示了

  9. plot绘图只能在工具栏的预览显示,无法全屏弹窗显示---matlab 不学无术小问题

    背景:小白在使用他人源码时,对MATLAB中的函数不熟悉,运行成功后发现plot绘图无法直接弹窗显示,只能在工具栏的预览显示. 为了解决此问题对绘图部分所有函数都进行了仔细调试,终于发现问题出在set ...

最新文章

  1. 华师大数据科学考研_2020年华东师范大学行政管理专业考研报录比、参考书目、考研经验分享...
  2. SSH安装后提示sshd_server account 用户
  3. 从终端运行python程序
  4. linux shell less 命令---转
  5. python详细的安装教程分享!
  6. ORA-29786: SIHA attribute GET failed with error
  7. 0530JavaScript基础2
  8. [线性代数] 对网络上一篇讲解特征值分解的物理意义的文章的批注
  9. Kafka源码分析-序列3 -Producer -Java NIO(Reactor VS Peactor)
  10. iOS for 和 forin 的区别 以及注意事项
  11. SAP云解决方案和企业本地部署(On-Premise)混合架构下的安全认证权限管理
  12. Ubuntu 13.10 用sogou拼音替换ibus-转
  13. php socket 读网页,PHP webSocket实现网页
  14. 【霜雪千年】MMD动作镜头下载
  15. java免费翻译api接口_多语言翻译api
  16. c语言中sub指令,sub指令(汇编语言sub用法)
  17. DTIM间隔在组播和节电方面的综合考虑
  18. Beyond Compare 4 “授权秘钥已被吊销“ 的解决办法
  19. unity显示no camera rendering
  20. 配置软路由-同时连接内网和外网

热门文章

  1. Linux--自有服务
  2. received ((None, 2) vs (None, 5))
  3. 国产触控笔哪个牌子好,哪种电容笔更好用?
  4. 图像滤镜艺术---保留细节的磨皮之C#程序实现
  5. Android 多商品订单评价(类似淘宝)
  6. 游侠联机不了服务器未响应,仁王联机补丁跳出问题解决方法 仁王游戏停止未响应怎么办-游侠网...
  7. 通过adb命令启动Android程序
  8. 技术文档之起航--QoE有关
  9. 我的世界1.8.9无需正版的服务器,我的世界1.8.9正式版
  10. vue的移动端项目打包成手机的app软件apk格式