Android 相机预览 横屏竖屏 -- 显示

news2024/11/24 1:35:07

相机在设备上处于固定位置,无论设备是否 是手机、平板电脑或计算机。当设备方向更改时, 相机方向更改。常见的布局显示比率是 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-facing
            result = (info.orientation - degrees + 360) % 360;
        }
        camera.setDisplayOrientation(result);
    }

  • 竖屏后置效果图
  • 竖屏前置效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机械硬盘如何克隆至固态硬盘,如何把硬盘系统克隆到固态硬盘

由于电脑的磁盘空间是既定的,随着使用年限越来越长,电脑磁盘空间已经不满足实际的需求了。为了拓展磁盘空间,就可以使用磁盘克隆的方法来扩展磁盘空间。因此,在本文中,易我小编将讲解硬盘克隆的相关理论知识&#xff0…

非零基础自学Golang 第7章 函数 7.5 匿名函数和闭包

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.5 匿名函数和闭包7.5.1 定义和使用匿名函数7.5.2 闭包的定义7.5.3 闭包的“记忆力”第7章 函数 7.5 匿名函数和闭包 匿名函数即在需要函数时定义函数,匿名函数能以变量方式传递,它常常被用于…

【图像评价】图像质量评价【含GUI Matlab源码 1373期】

⛄一、简介 理论知识参考文献:图像印刷质量的客观评价——以报纸印刷为例 ⛄二、部分源代码 function varargout IQA(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton 1; gui_State struct(‘gui_Name’, mfilename, … ‘gui_Singleton…

C++模板(初阶)

本章主要讲解三个部分:泛型编程、函数模板、类模板 目录 泛型编程 函数模板 函数模板概念 函数模板的格式 函数模板的原理 函数模板的实例化 隐式实例化 显式实例化 模板参数的匹配原则 类模板 泛型编程 先来大致说一下什么是泛型编程. 在计算机程序设计领…

如何安装第三方的Python包?

目录 什么是第三方包 常见的第三方包 如何安装 方法1:命令行 方法2:在IDE中用图形界面操作 什么是第三方包 我们知道,在Python中包就是把一些同类型的功能封装到一处,包含了函数、类、变量等可供外界使用。使用的方法就是在文…

肠道微生物群、营养与长期疾病风险:母婴视角

谷禾健康 怀孕的母亲与体内的胎儿是息息相关的。由于婴儿接触母体微生物群,母亲和孩子之间的微生物联系在怀孕期间形成。而宿主与微生物群的联系在出生后成熟,并进化成为个体生命中最重要的共生关系之一,对响应营养和环境刺激的稳态调节至关重…

【Git】“分支” 如何管理和使用?这一篇就够了~

目录 一、什么是分支? 二、分支的操作 2.1、查看分支 2.2、创建分支 2.3、切换分支 和 修改分支 2.4、合并分支 2.4.1、正常合并 2.4.2、合并冲突 三、创建分支和切换分支的底层原理 一、什么是分支? 在版本控制中,我们可以针对每个任…

单调队列算法 - 滑动窗口问题(常见模型:找出滑动窗口中的最大值/最小值)

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点✔ 蓝色文字表示&#xff1a…

ASEMI肖特基二极管MBR10100FCT图片,MBR10100FCT大小

编辑-Z ASEMI肖特基二极管MBR10100FCT参数: 型号:MBR10100FCT 最大重复峰值反向电压(VRRM):100V 最大RMS电桥输入电压(VRMS):70V 最大直流阻断电压(VDC)…

SpringBoot整合Druid数据源

SpringBoot整合Druid数据源1.使用Druid数据源2.完整的Druid配置3.为 DruidDataSource 绑定全局配置文件中的参数4.配置Druid数据源监控5.配置 filter 过滤器1.使用Druid数据源 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency><gr…

方差分析 / 主成分分析 / 因子分析 / 聚类分析

一.方差分析 水平&#xff1a;因素的不同状态&#xff0c;分组是按照因素的不同水平划分的 因变量&#xff1a;在分组试验中&#xff0c;对试验对象所观测记录的变量&#xff0c;它是受各因素影响的变量 常见的方差分析类型&#xff1a;单因素方差分析&#xff0c;多因素方差…

RK3568平台开发系列讲解(调试篇)如何跟踪系统事件

🚀返回专栏总目录 文章目录 一、ltrace二、strace三、ptrace沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文我们要介绍 Linux 上两个非常有用的工具:ltrace 和 strace。在分析软件的运行过程、调试疑难 Bug、执行性能分析和调优等方面,它们都是非常有用的辅助…

肠道核心菌属——优/真杆菌属(Eubacterium),你为什么要关心它?

谷禾健康 Eubacterium 通常翻译为真杆菌属或优杆菌属 Eubacterium&#xff0c;革兰氏阳性细菌&#xff0c;属于真杆菌科&#xff0c;厚壁菌门。 Eubacterium 是在健康人结肠中发现的一种重要的肠道细菌&#xff0c;它是人类肠道微生物群的核心菌属之一&#xff0c;并显示…

SPI通信协议详解

一&#xff0c;SPI的简介 SPI&#xff0c;是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM&#xff0c;FLASH&#xff0c;实时时钟&#xff0c;AD转换器&#xff…

【力扣刷题】预测赢家

&#x1f517; 题目链接 题目描述 给你一个整数数组 nums 。玩家 1 和玩家 2 基于这个数组设计了一个游戏。 玩家 1 和玩家 2 轮流进行自己的回合&#xff0c;玩家 1 先手。开始时&#xff0c;两个玩家的初始分值都是 0 。每一回合&#xff0c;玩家从数组的任意一端取一个数…

leetcode热题HOT100汇总——持续更新中

文章目录前言1. 两数之和2. 两数相加3.无重复字符的最长子串4. 寻找两个正序数组的中位数5. 最长回文子串10. 正则表达式匹配11. 盛最多水的容器15. 三数之和17. 电话号码的字母组合19. 删除链表的倒数第 N 个结点20. 有效的括号21. 合并两个有序链表前言 为了学习本文捋顺lee…

再多学一点Spring之过滤器与拦截器的区别

学习和使用Spring这么久了&#xff0c;我们都用过过滤器和拦截器&#xff0c;但是真要被问到过滤器和拦截器有什么区别&#xff0c;我又一脸懵逼了&#xff0c;回答不上来。今天我们就来学习一下&#xff0c;过滤器和拦截器。 过滤器 通过实现javax.servlet.Filter接口来自定义…

网站被篡改 收录一些非本网站快照跳转如何解决

在实际的网站运营维护过程中&#xff0c;经常发生网站被HACK攻击等情况&#xff0c;尤其网站的标题被篡改为中文关键词<title>&#xff0c;使得网站在百度搜索的索引结果非常的明显&#xff0c;直接在浏览器里打开网站&#xff0c;用肉眼看到的是未被篡改的首页标题。根据…

计算机学徒等级划分

目录 第一级&#xff1a;菜鸟级 第二级&#xff1a;新手级 第三级&#xff1a;入门级 第四级&#xff1a;精通级 第五级&#xff1a;巅峰级 第一级&#xff1a;菜鸟级 概述&#xff1a;你问他计算机是干什么的&#xff1f;他说&#xff1a;“打游戏的&#xff0c;看电影的…

地下水监测系统的构成,优势是什么?

平升电子地下水监测系统由地下水自动监测站监测设备和监测中心平台软件组成。监测设备自动采集、存储地下水水位、水温、水量、水质数据&#xff0c;通过4G/NB-IoT/北斗无线通信网络定时上报至省/市/县级监测中心平台&#xff0c;平台自动接收和存储数据&#xff0c;并对地下水…