相机在设备上处于固定位置,无论设备是否 是手机、平板电脑或计算机。当设备方向更改时, 相机方向更改。常见的布局显示比率是 4:3。

  • 对于前置摄像头,图像缓冲区逆时针旋转(从 传感器的自然方向)
  • 对于后置摄像头,图像缓冲区顺时针旋转(从 传感器的自然方向)

相机方向

  • 前摄像头

  • 图像必须逆时针旋转 270 度,以便预览的 方向与设备方向匹配:

  • 后置摄像头将生成具有相同方向的图像缓冲区 作为上面的缓冲区,但是是 90 度。结果, 缓冲液顺时针旋转 90 度。SENSOR_ORIENTATION

因为相机图像传感器在 传感器的自然方向(横向),图像缓冲区必须旋转 相机预览指定的度数 以设备的自然方向直立显示。对于前置摄像头, 旋转是逆时针的;对于后置摄像头,顺时针方向。SENSOR_ORIENTATION

如果有兴趣了解详细的解释,点击官网查看

下面是代码分析

相机方向

前/后置预览布局 给固定的宽高(4:3),为了防止预览拉伸

           //判断是前置还是后置if (Utils.isCurOriLand(this)){//横屏if (MainActivity3.getMode()==0){//后置surfaceView.getLayoutParams().width=640;surfaceView.getLayoutParams().height=480;}else {//前置surfaceView.getLayoutParams().width=480;surfaceView.getLayoutParams().height=640;}}else {//竖屏if (MainActivity3.getMode()==0){//后置surfaceView.getLayoutParams().width=480;surfaceView.getLayoutParams().height=640;}else {//前置surfaceView.getLayoutParams().width=640;surfaceView.getLayoutParams().height=480;}}

摄像机的角度

  • int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();

  • rotation =0(Surface.ROTATION_0),如下图

  • rotation =1(Surface.ROTATION_90), 如下图

预览角度

/*** 设置 摄像头的角度* @param activity 上下文* @param cameraId 摄像头ID(假如手机有N个摄像头,cameraId 的值 就是 0 ~ N-1)* @param camera   摄像头对象*/public static void setCameraDisplayOrientation(Activity activity,int cameraId, Camera camera) {Camera.CameraInfo info = new Camera.CameraInfo();//获取摄像头信息Camera.getCameraInfo(cameraId, info);int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();//获取摄像头当前的角度int degrees = 0;switch (rotation) {case Surface.ROTATION_0:degrees = 0;break;case Surface.ROTATION_90:if (MainActivity3.getMode()==0){//后置degrees = 90;}else {degrees = 270;}break;case Surface.ROTATION_180:degrees = 180;break;case Surface.ROTATION_270:degrees = 270;break;}int result;if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {result = (info.orientation + degrees) % 360;result = (360 - result) % 360; // compensate the mirror} else {// back-facingresult = (info.orientation - degrees + 360) % 360;}camera.setDisplayOrientation(result);}
  • 竖屏后置效果图

  • 竖屏前置效果图

Android 相机预览 横屏竖屏 -- 显示相关推荐

  1. Android相机预览,指定区域显示预览框,在区域内出现人脸进行人脸识别,并抓拍人脸照片存在本地,CameraX,虹软人脸识别

    效果图: 第一种是使用camerax进行预览,android camerax预览官方文档,主要通过imageAnalysis,抓帧进行图片处理,然后通过android自带的图片人脸识别FaceDete ...

  2. android 预览和拍照成像方向不一致,Android相机预览方向深入探究

    原标题:Android相机预览方向深入探究 今日快讯 9月7日,北京市交通委召集各区管理部门和15家共享自行车企业负责人,听取共享自行车投放和管理的意见建议,研究决定并下发通知,暂停在本市新增投放共享 ...

  3. Android让所有应用都竖屏显示或者横屏显示

    1. 所有应用竖屏显示: frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java pub ...

  4. Android相机预览设置适配及显示方式

    Android相机的部分工作原理. 预览流程 相机预览是Android Camera最常用的功能之一,它是很多功能重要的输入,例如扫码.AR等. 一般而言,相机预览的整体流程,可以通过下图表示: 其中 ...

  5. Android相机预览方向

    以前对Camera了解的不是太深入,最近有需求把人脸识别 集成到项目,必然会与Camera打交道,遇到一些坑,与大家分享一下. 一.预览方向   Camera.CameraInfo info = ne ...

  6. Android相机预览页面被压缩和拉伸问题

    最近公司要求在原有的项目中添加一个扫码登录的功能,在调试好相机之后,发现相机返回到Surfaceview页面上的预览图片,与我们现实中物品的比例并不相同,在一块正方形的Surfaceview中,预览界 ...

  7. Android 相机方向传感,Nexus 5x反向横向传感器修复在Android相机预览...

    我是Android开发中的新手,所以如果我的问题很简单,我会提前道歉.在我的应用程序的一部分,我需要我的后置摄像头的实时预览,所以我创建了一个自定义类,扩展SurfaceView并实现SurfaceH ...

  8. 2022-07-21 Android 相机预览数据转Bitmap优化

    背景 在Android开发中我们有时候会需要拿到相机预览数据转成bitmap自己做处理. 常用方式 在Android API中提供了 一套转换方式: private Bitmap convertBit ...

  9. Android 相机预览方向和拍照方向

    我们知道手机 Camera 的图像数据都是来自于摄像头硬件的图像传感器(Image Sensor),这个 Sensor 被固定到手机之后是有一个默认的取景方向的,这个方向如下图所示,坐标原点位于手机横 ...

最新文章

  1. android 设置setmultichoiceitems设置初始化勾选_阿里巴巴Java开发手册建议创建HashMap时设置初始化容量,但是多少合适呢?...
  2. a*算法matlab代码_导向滤波算法及其matlab代码实现
  3. TCP/IP协议——ARP详解
  4. 直播APP开发注意事项汇总
  5. Redis持久化实践及灾难恢复模拟
  6. 基于UML的面向对象分析与设计
  7. 构造函数必须没有代码
  8. Mac版钉钉之一个新的技术electron
  9. python读mat文件_我用Python对咪蒙的1013篇历史文章做了一次深度的数据分析...
  10. Android SDK4.0(api14)安装
  11. 利用TTL转USB串口在两台PC机间进行文件传输
  12. android粘性广播删除,android 广播机制(2) 粘性广播-Go语言中文社区
  13. vue3获取当前日期和时间
  14. 突发!人人影视字幕组14人被抓,用户超800万,涉案金额超1600万!网友炸了:免费的片没了...
  15. iptable 中文学习文档
  16. 晶振PPM小参数,大作用
  17. JavaScript 测试题 (2021-6-21)
  18. windows升级新版本mysql
  19. 如何选择PXI与PXIe开关模块
  20. 跨界狂魔,量化交易界的一代宗师——詹姆斯·西蒙斯

热门文章

  1. 使用 GitHub Actions 来构建应用程序
  2. 怎么把分钟转化成秒_一分钟短视频文案范文怎么写?短视频文案必爆公式分享(附文案范文模板)...
  3. 2018 秋招 百度二轮面试---血淋淋的经历写实
  4. java ar教程_JavaFX教程整理
  5. linux 检查openssl,linux – 如何检查OpenSSL中的FIPS 140-2支持?
  6. 下载链接在微信中无法打开的解决方案
  7. CSDN日报20170317——《转行穷三年?未必!》
  8. 利用Scanorama高效整合异质单细胞转录组
  9. 清华计算机录取通知书,清华送出第一批录取通知书,这些被刷屏的学霸,有怎样的成长密码...
  10. 3. 站在使用层面,Bean Validation这些标准接口你需要烂熟于胸