12 冻云-FrozenCloud

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 4w+

1.6API2拍摄RAW图

在前一节我们分析了yuv数据的获取方法,这一节进行的raw数据拍照,实际上与yuv数据没有本质的区别。区别仅仅是ImageReader的format为ImageFormat.RAW_SENSOR,并且在createCaptureSession方法中将这个ImageReader的surface传入,其他就与正常拍照流程一致了。需要注意的是RAW的文件保存一般为“.dng”文件格式。由于实现比较简单,这里直接附上Google的官方demo。https://github.com/googlearc

2020-06-04 15:12:59

1.5 Camera API2输出yuv数据

在前面我们已经知道createCaptureSession方法的第一个参数会传入一个list,一般这个list会有三个值,用于preview的SurfaceView的surface,用于保存拍照数据的ImageReader的surface,和缩略图的surface。如果是拍照模式,ImageReader的surface就替换为MediaRecoder的surface。但是在实际开发中,我们经常需要输出YUV数据,这个数据要如何得到呢。一、Preview的YUV数据对于Preview而言,输出YU

2020-06-03 17:56:44

2.6camera session创建过程

如第一章所述,得到CameraDevice对象后就可以创建session了,还是以createCaptureSession为例,这是一个抽象方法,我们已经介绍过,它的实现在CameraDeviceImpl中。方法首先将传入的Surface构建OutputConfiguration,OutputConfiguration是输出的Surface的配置,包含一些基本的配置信息。随后调...

2019-12-23 17:45:47

2.5 Camera open拾遗

前面把Camera open在Framework的流程已经梳理清楚,但是还有一些细节值得一提。CameraDevice.StateCallback与Executor在open方法中传入了一个Executor对象,这个对象是在执行Callback时使用的。作为一个接口, CameraDeviceImpl中有一个静态内部类CameraHandlerExecutor作为实现。外部调用ch...

2019-12-16 18:04:50

2.4camera多进程互斥控制

上一节我们提到过handleEvictionsLocked方法是处理相机进程互斥的。这是一个比较重要的方法,随着现在安卓设备的发力点集中到相机上,同一个应用内的多相机的调用,甚至是不同应用打开不同相机的需求都开始出现,从Framework层面来说就是这里在进行管理。根据相机使用的经历,我们应该有以下几个经验两个应用不能同时打开一个camera; 同一个应用,根据平台不同(高通、MTK),...

2019-12-09 16:31:08

2.3camera service的connectDevice的过程

在上一节中,我们梳理了camera open在framework中涉及的类和它们的主要功能,但是我们跳过了一些关键的细节,所以在这一章节中,我们将首先来分析connectDevice的过程。首先我们来看在ICameraService.aidl中的定义,接口定义了四个变量callbacks、设备id、应用的包名、clientUid,如果是从openCamera方法调用的,这里就是-1...

2019-12-02 16:24:11

2.2Camera open在Framework中的过程

在前面的内容中,我们提到过CameraManager类的主要用途是open cam­era,这一节我们将详细梳理这一过程在Framework中的类和逻辑。SDK提供的方法最终调用openCameraDeviceUserAsync方法,通过观察我们可以知道最核心的代码只有两行,其中第一句获取了CameraService对象,随后调用了它的connectDevice方法,并返回了一个ICa...

2019-11-27 17:51:01

2.1 Android启动与CameraService进程加载

从这一章节开始,笔者将对Camera的Framework框架进行分析。对于Camera Framework框架而言,其核心就是CameraService,所以本节将首先探究Camera service是什么,Camera Service是怎么来的。Android框架启动过程Android在开机时,首先装载BootLoader引导程序,进行硬件上电,从初始代码处开始执行初始化,再进行第二...

2019-11-25 16:04:12

1.4Metadata与Characteristics

在上一节我们已经学习过Camera的参数通过Session下发到HAL层,这一节我们将详细探索CameraMetadata。在公开的SDK中,除了CameraMetadata类之外,还存在三个继承它的子类,分别是CameraCharacteristics、CaptureRequest、CaptureResult类。通过名字,我们可以轻易地分析出看出CameraCharacteristi...

2019-11-20 11:17:10

1.3Camera2 Session机制详解及Camera1的对比

想要理解API2的Session机制,不能简单的只从Camera看,而是要结和Sesion本身的概念来看。一、Session机制1、Web应用中的Session计算机领域的Session概念主要来自于Web通信,在网络应用中,称为会话控制。“Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失...

2019-11-18 18:31:11

1.2Camera Preview流程及源码分析

Camera API2的预览实现在网上有非常多的代码可以参考,包括Google官方提供的Demo。直接看代码,模仿、改写当然是最快的实现方式,但如果其中的逻辑关系可能没有捋顺清楚,在没有参考代码的情况下,能否同样实现相关功能就值得商榷了。1API2架构图这个图是一个常见的用于展示API2架构的图,但事实上这个图并不能对架构和开发起到很好的帮助。这个图的主要问题是无法搞清楚Came...

2019-11-14 18:27:41

1.1Android Camera源码路径及类简介

Camera API是Android APP开发的主要方式,Android 9.0主要有1.0和2.0两个版本。目前Google在全面推API2,但是应用市场上的主流应用大部分依然使用的是1.0,如QQ、微信等;而一般手机自带的相机应用都是Camera API 2. 本文及后续都将以API2为主,涉及代码部分将以Kotlin为主,Android源码部分以官方开源版本为准。一...

2019-11-13 10:59:15

Android Camera开发完全手册

随着Android版本迭代,Camera的重要性也日益凸显。Camera的数量从后置单颗发展到最新的后置五颗模组;分辨率从后置200万发展到惊人的一亿像素。Android Camera几乎每一代都在发生翻天覆地的变化。这些变化是作为终端用户直观感受得到的,而作为从业者同样能够感受到来自软硬件的巨大变化。 Google将Camera SDK从API1升级到API2;Came...

2019-11-12 16:35:19

关于安卓Android studio Didn't find class "com.xx.MainActivity" on path: DexPathList[[zip……的一种解决

这样的问题,现象基本上都是一个运行好好的程序有一天突然在某一款手机上无法运行,打开就会crash,并报错。看网上的原因很多。由于没有使用MultDex,所以不是相关原因;没有引入任何.so文件,所以不是相关原因;Android Studio 3.5没有找到instant run设置;删除.gradle和.idea文件夹,clean project没有效果;代码在其他手机上运...

2019-09-05 15:13:15

写在一七年底

回头去看,上一次在CSDN上写博客已经是一年半以前了。每一次回首去看,总觉得心里空落落的;年龄越是增长,心里就越发的焦虑。玩了三年的手游感觉肝不动卖了号;买了几本书没能翻几页就弃之不理了;十年的网游已经几个月没有在登陆过了;试着交往了一个女朋友,总觉得不是我想要的相处方式,一年还是分手了;这一年的身体也出现了一些状况,可就是查不出有什么问题。进退失据应该是最适合的形容词。做事情依然

2017-12-27 22:40:17

Google Gallery for Android 4.4源码分析以及主UI修改——Gallery整体结构

最近在做原生Gallery的UI修改和和功能改进工作,所以大约半个月的工作,终于对Gallery的主UI部分有了一定了解,对Gallery的整体结构有了一定认识。在修改的过程中遇到了各种各样的坑,好在UI修改部分的工作已经接近尾声,下一阶段主要是新功能的添加。常言道:好记性不如烂笔头。所以将Gallery相关的内容做一次细致的梳理,相信这对同样做系统原生应用的同学也能有所帮助。一、

2016-04-20 20:51:28

python登陆百度网盘并读取自己的所有文件,输出到文本文件中

这两天帮一个朋友写了一个小程序,需求是导出他自己的百度网盘所有文件的目录结构。以前注册过一个百度开发者,知道有PCS服务,里面有提供类似的接口,所以就一口答应下来,但是我too naive。去查文档的时候发现百度已经关闭了pcs服务。此时,我的心情是崩溃的,因为已经有段日子没写Python了。但已经答应了总得实现了,百度不提供接口只好自己来。按照需求,需要先登陆百度账户,然

2016-04-11 23:15:06

夯实基础——Java常用包和第三方jar包

一、Java常用包java.lang--语言包:Java语言的基础类,包括Object类、Thread类、String、Math、System、Runtime、Class、Exception、Process等;java.io--输入输出包:提供与流相关的各种包;java.awt--抽象窗口工具包:Java的GUI类库,一般网络开发用不上……java.util--实用工具

2016-03-20 14:25:55

夯实基础——继承、super和final关键字

Java通过单继承降低复杂度,又通过对接口的实现间接地实现多继承。/** * @author frozen cloud * @继承是面向对象的又一个重要特征,Java使用extends关键字类实现继承,java是单继承。 * @被final关键字和private修饰的成员不可以被继承; */public class ExtendsKeyWord { public static

2016-03-20 12:37:28

夯实基础——static关键字

static 关键字是常见关键字之一,static关键字的一个常见场景就是单例模式,本文仅提供static的基本用法和注意点。/** * @author frozen cloud * @static关键字修饰的成员是静态成员,未被static修饰的成员是实例成员; * @也就是说static修饰的成员可以直接被调用无需创建对象实例。 * @1.static修饰的方法中不能使用thi

2016-03-20 11:59:34

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。