Android 深入系统完全讲解(27)

news2024/11/15 10:32:46

讲完了这块,我们来说下相机相关的,再说之前一定记得,先要有框架思维,这点一直是我
强调的。
相机是什么,硬件采集数据上来,解析完成,上层绘制,在绘制的时候,同步可以做特效,
而特效的处理方式,可以在底层驱动,也可以在上层 APP。
先知道总体框架,这样子遇到问题,知道它属于哪部分,如何攻克,找代码思考的时候有方
向。然后在学习代码的时候,一定要注意,从已知接口,相关类去深入,利用调试,网络的
分析,汇总成自己的流程图。
下来我们来看下相机预览:
SurfaceView surfaceView;
Camera camera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.surface_view);
surfaceView.getHolder().addCallback(this);
// 打开摄像头并将展示方向旋转 90 度
camera = Camera.open();
camera.setDisplayOrientation(90);
}
//------ Surface 预览 ------- @Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h)
{
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
camera.release();
}
这里就能够明显的看到,我们在思考问题的时候,一定是利用核心逻辑, 输入–控制–输出。
这个大的框架永远不变。 这里就是 相机硬件采集的数据,进行转化,在界面显示。
而硬件采集上来的数据格式是 NV21 和 YV12 ,安卓默认的格式是 YCbCr_420_SP 的格式
(NV21),格式之间的转化我们用 SDL2.0 库解决,里面写好了各种格式的转化。
默认画布的格式是 ARGB8888 ,32 位的格式。
下来我们又要说一些别的了。数据不做解析说明就是一堆垃圾,无意义的。数据存放读取
出来,是需要按约定的读取方式获取,否则解析出来就是错误的。
所以,文件都是由两部分组成:在这里插入图片描述
很简单,却是很明确,文件头代表什么?算法,文件内容代表数据。各种格式表示后续的数
据该怎么处理,解析。
而音视频中一样,视频格式,音频格式,mp4,wav,都是这里的文件头,表明了后续的文
件内容的读取方式。
解码器支持的格式,就是能够解决几种编码,说到底就是对这些格式进行算法运算,输出
正确的画面,还有声音。

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

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

相关文章

iOS 国际化(多语言)

一、应用程序国际化 包括app名称和各种权限的提示文字。 1.1 创建工程,再在“PROJECT”的“Info”里面,添加所需语言。 1.2 从代码中分离出文本 创建一个 “.strings” 扩展名的文件 来本地化字符串,需要把这些字符串全部放在一个单独的文…

【医学数据融合文本方向 思路整理】

Scalable and accurate deep learning for electronic health records【2018】 本论文在于介绍 Google Medical Brain 项目的目标、方法和规划。 思路: 用病情描述,预测疾病诊断,预测死亡率 用病情描述加治疗方案,预测复诊率和住院…

Elasticsearch7.8.0版本高级查询—— 查询所有文档

目录一、初始化文档数据二、查询所有文档示例一、初始化文档数据 在 Postman 中,向 ES 服务器发 POST 请求 :http://localhost:9200/user/_doc/1,请求体内容为: {"name":"张三","age":22,"sex…

Zookeeper 【下载与安装,基本使用】

目录 1. 什么是zookeeper 2. zookeeper下载与安装 3. Zookeeper 测试 1. 什么是zookeeper zookeeper实际上是yahoo开发的,用于分布式中一致性处理的框架。最初其作为研发Hadoop时的副产品。 由于分布式系统中一致性处理较为困难,其他的分布式系统没有…

SAP MTO/MTS操作步骤及月末结算

一、MTO/MTS操作步骤 【MTO核算方式】 是以销售订单触发生产的方式。 创建销售订单 VA01 运行物料需求计划 MD01 查询物料需求 MD04 计划订单转化为生产订单 MD04/CO01 生产订单成本计算以及下达 CO02 生产订单发料 MB1A 生产报工 CO11N 完成品入库 MB31 非限制库存转移到销售…

C# opencv多模板匹配实战应用例程

C# 多模板匹配例程 最近在做项目的时候为了检测某一种物品的齐套性,以及为了和写c#的软件负责人配合自己研究了一下opnencv C# 版的模板匹配,对基础的例程做了一下改进,留一份例程。 因为工作性质原因不能直接放项目的实际图片我用visio简单…

我的个人微信也迅速接入了 ChatGPT

本文主要来聊聊如何快速使用个人微信接入 ChatGPT,欢迎 xdm 尝试起来,仅供学习参考,切莫用于做不正当的事情 关于 ChatGPT 我们每个人都可以简单的使用上,不需要你有很强的技术背景,不需要你有公众号,甚至…

Chat GPT 创建APP: 开发人员要被替代了吗?

我们又要被人工智能取代了吗?GitHub Copilot 于 2021 年 10 月发布,整个开发社区都为之疯狂。有些人发表言论说我们很快就会失业,而其他人(比如我),认为虽然这个工具很有趣,但距离替代人工还很远…

【Django框架】——25 Django视图 07 状态保持Session

文章目录1.session流程图2.session语法与案例3.session配置cookie不安全,会把所有敏感数据放到浏览器保存。 session是把敏感数据存到自己的服务器中给浏览器一把钥匙就行了(是基于cookie完成的)。 Django 提供对匿名会话(session)的完全支…

Cisco Packet Tracer 8.2.x Crack

Cisco Packet Tracer 是一个网络模拟器。有了这款功能强大的软件,用户可以在模拟和安全的环境中学习所有网络主题,而无需花费很多钱。它是网络主题模拟和培训领域中最受欢迎的应用程序之一,因为它提供了这样做所需的所有功能。Packet Tricer …

Java方法(函数)

文章目录Java方法(函数)一、方法介绍二、方法的定义和调用格式1. 快速入门2. Debug查看方法的执行流程3. 方法调用内存图解4. 带参数方法的定义和调用1)定义和调用格式2)形参和实参5. 带返回值方法的定义和调用6. 方法通用定义格式三、方法常见问题四、方…

MIPI 摄像头的原理

1. 摄像头sensor 的原理 定时脉冲生成器会生成clock,用于访问image sensor 阵列中的行,预充电,并且按顺序采样像素阵列中的所有行。在一个行的预充电和采样的时间段里,像素的电荷量会随着曝光时间而逐渐减少。这就是快门结构中的曝…

擎创技术流 | ClickHouse实用工具—ckman教程(10)

一、前言 哈喽~友友们,转眼农历新年就在眼前,ckman系列也终于迎来了最后一期,非常感谢大家的喜欢,让up主有动力做完这个系列,也感谢一路走来,大家给予的反馈,让这个系列越做越好。 接下来&…

4-Spring使用

目录 1.存储Bean对象到Spring容器中 1.1.创建Bean 1.2.将Bean注册到Spring容器中 1.2.1.第一次存储Bean(可选,如果是第二次及以后,此步骤忽略) 1.2.2.添加Bean标签 2.从Spring容器中获取并使用Bean对象 2.1.创建Spring上下…

剑指 Offer 04. 二维数组中的查找 [C语言]

目录题目思路代码结果该文章只是用于记录考研复试刷题题目 在一个 n * m 的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数&#xff…

[leetcode 1723] 完成所有工作的最短时间

题目 题目:https://leetcode.cn/problems/find-minimum-time-to-finish-all-jobs/description/ 该题和 [leetcode 2305] 公平分发饼干 完全相同。 解法 回溯剪枝 感觉和 [leetcode 198] 划分为k个相等的子集 有点相似,这题更像是划分为k个尽量相等的子…

easypoi 模板导入、导出合并excel单元格功能

easypoi 模板导入、导出合并单元格功能 参考: java使用poi读取跨行跨列excel springboot集成easypoi并使用其模板导出功能和遇到的坑 Easypoi Excel模板功能简要说明 easypoi 模板导出兼容合并单元格功能 ExcelUtil package com.yymt.utils;import cn.aftertu…

linux系统中利用QT实现环境传感器的数据获取方法

大家好,今天主要和大家分享一下,如何使用QT实现对三合一环境传感器的数据的获取和实现。 目录 第一:资源介绍 第二:具体代码的详细实现 第三:源文件“mainwindow.h”实现 第四:Linux应用接口获取数据 第…

大趋势:科技赋能产业

能整合传统产业资源的老板大优势! 三大趋势: 科技赋能产业链 乡村振兴 文化复兴 纯技术类企业在产业链方面不占优势 趣讲大白话:时势造英雄 ******** 消费互联网竞争太卷了 竞争向产业升级方向转移 向高质量发展导向 乡村振兴是整合分散的集…

容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件

容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件 1、Docker简介 1、简介 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&a…