自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苦心人天不负

明知不可能,还是要继续告诉自己。

  • 博客(91)
  • 资源 (2)
  • 收藏
  • 关注

原创 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 688

原创 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 656

原创 2.6camera session创建过程

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

2019-12-23 17:45:47 1440 2

原创 2.5 Camera open拾遗

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

2019-12-16 18:04:50 432

原创 2.4camera多进程互斥控制

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

2019-12-09 16:31:08 2417 2

原创 2.3camera service的connectDevice的过程

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

2019-12-02 16:24:11 1958

原创 2.2Camera open在Framework中的过程

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

2019-11-27 17:51:01 695

原创 2.1 Android启动与CameraService进程加载

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

2019-11-25 16:04:12 1332

原创 1.4Metadata与Characteristics

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

2019-11-20 11:17:10 726

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

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

2019-11-18 18:31:11 1714

原创 1.2Camera Preview流程及源码分析

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

2019-11-14 18:29:43 1488 1

原创 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 11:00:43 1204

原创 Android Camera开发完全手册

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

2019-11-12 16:36:00 1414

原创 关于安卓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:21:28 2817

原创 写在一七年底

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

2017-12-27 22:40:17 320

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

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

2016-04-20 20:51:28 2095 2

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

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

2016-04-11 23:15:06 9195 1

原创 夯实基础——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 5093

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

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

2016-03-20 12:37:28 445

原创 夯实基础——static关键字

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

2016-03-20 11:59:34 400

原创 夯实基础——类、抽象类和接口的关系

类和对象是面向对象语言的核心概念。类是Java封装性的提现,外部不需要知道类中方法的实现过程,只需要通过对象调用方法。/** * 1.接口只能被实现,不能被继承; * 2.接口只能继承接口,不能继承一般类、抽象类; * 3.抽象类与一般类类似,可以继承抽象类,实现接口; * 4.抽象类可以继承一般类; *//** * 抽象类示例 */abstract class

2016-03-20 11:11:58 400

原创 夯实基础——从键盘输入的两种方式

从键盘中输入内容是人机交互的一部分,在写一些小程序的时候也经常会被用到。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;/** * @author frozen cloud * @从键盘输入的两种方法

2016-03-18 22:38:19 758

原创 夯实基础——流程控制

/** * @author frozen cloud * @一切语言的流程控制都是无外乎三点: * @1.顺序; * @2.条件; * @3.循环; */public class ProcessControl { public static void main(String[] args) { // 结合上一篇的基本数据类型来演示以下三种流程控制,以及相关的关键字用法 /

2016-03-15 14:48:08 706

原创 夯实基础——Java基本数据类型、应用类型和转换

年后回来又换工作了,面试了几家因为没有太多做准备,在一些基础问题上卡了壳,这是一个比较闹心的问题。工作的时候往往有一些是接触不到的问题,但是偏偏又很重要也很基本。所以趁着还没有开始下一份工作的这段时间快速的把java基础、数据接口、算法什么的串一遍,由于是想到什么写什么所以可能不那么有逻辑性。那么废话不多说直接上代码,知识点都在注释里面了。/** * @author

2016-03-15 12:52:58 551

原创 Duplicate files copied in APK META-INF/license.txt

今天在尝试使用AndroidAnnotations框架的REST API时,在导入Spring for android包后仅编译的话不会报错,但是当运行时无法编译通过,并报一下错误:Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.> com.android.build.api.

2016-01-10 13:41:29 3601

原创 Android广播机制知识概要

关键字:Broadcast用于发送广播;BroadcastReciver用于接收广播。广播的意义:简言之,群发消息,定点接收,分别处理。所以在理解广播时存在以下几个问题:1)谁发广播?怎么发?2)信息如果传递?3)谁接收广播?怎么接收?首先,来说明第二个问题。在Android中,Intent(意图)被用于在各个组件中传递消息。Intent包含aciton(行

2015-12-20 21:50:56 594

转载 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/文章来源:http://www.cnblogs.com/smyhvae/p/4456420.html联系方式:[email protected]  【系列】第一次使用Android Studio时你应该知道的一切配置第一次使用Android Stu

2015-12-13 12:25:15 1051

原创 Python安装第三方模块的方法

1.在命令符窗口进入模块所在目录,执行python setup.py install命令。  如果使用这个命令时报错,需要安装setuptools库,安装方法同上。2.使用pip安装第三方库。3.easy_install方式。  用于安装egg扩展名的包,egg可以认为就是zip,只是扩展名不同。

2015-11-19 23:27:56 720

原创 面向对象编程以及Python面向对象

一、面向对象编程面向对象编程(OOP)作为一种方式,相对于面向过程更加的贴近人的思维习惯。面向对象是将一个整体问题划分为若干个模块,通过块与快之间的交流来解决问题;而面向过程编程是将一个问题按照解决的步骤一二三四的一个个方法去解决。面向对象有三大特点:多态、封装、继承。两个主要概念:类,对象。个人理解面向对象是一个总分的结构,从一个模块中提取出共同的部分就是类,这个类有

2015-11-04 22:59:14 1370

原创 scrapy学习——选择器

之前已经学习过HTML页面解析的一些内容,其中介绍了选择器的相关知识,接下来深入的学习选择器。Scrapy的选择器是基于lxml,也就是说二者在原理和速度上是一致的。构造选择器Scrapy selector是以 文字(text) 或 TextResponse 构造的Selector 实例。其根据输入的类型自动选择最优的分析方法(XML vs HTML):>>

2015-10-11 23:17:26 2493

原创 scrapy学习--内置Spiders简介

有段时间没有学习Scrapy了,工作很紧所以时间大部分都投入到了android的学习上了。今天有点时间继续学习Scrapy,接上一篇scrapy学习--Spiders继续学习内置Spiders。1.XMLFeedSpiderXMLFeedSpider被设计用于通过迭代各个节点来分析XML源(XML feed)。迭代器可以从iternodes、xml、html选择。鉴于xml和htm

2015-10-02 10:01:21 1007

原创 textview圆角只有左上角有效的问题

今天遇到一个坑爹的问题在使用android studio的时候,设置了一个textview的圆角,然后在preview中进行预览。我擦,明明只设置了上面两个圆角的值,结果下面两个也变成了直角了,并且只有修改左上角的值才有效果。到网上查了一下发现有人遇到了同样的问题,但是没有给出解决方案,而且这个东西api上根本没有。一度怀疑是系统bug,但是最后还是发现了真相—————

2015-09-18 23:47:38 1065

原创 Android studio中配置androidannotations框架

马上要开始一个新项目,老板让我搭建android版的基础架构,感觉压力还不小的,项目时间比较紧迫,所以想要加快开发速度,第一个想到的就是注解的开发方式。一查找果然Android上也有一些注解,衡量了一下决定使用androidannotations框架。第一件事就是在自己电脑上搭建一个demo,用来测试可行性,结果真是命途多舛,用了一周的时间才整明白他是怎么回事。在Android s

2015-09-15 00:39:01 1602

原创 android studio 的SHA1查看

最近项目开发用到了高德地图,需要申请key才能在应用中使用。而申请key需要用到sha1。在eclipse中sha1很容易查看但是Android studio中就有一些麻烦。1.获取sha1信息android studio获取sha1的方法有两种。一个是直接使用android studio 中的tool ——》Terminal中获取;另一种是使用window的命令提示符获取。

2015-09-14 22:45:04 897

原创 Hybrid App开发

现在移动应用开发主流都采用Hybrid App模式,例如淘宝、微信、手机QQ、携程、去哪儿、手机百度等都使用了Hybrid APP开发模式。一、   hybrid App的三种解决方案方案一:使用PhoneGap、AppCan之类的中间件,以WebView作为用户界面层,以Javascript作为基本逻辑,以及和中间件通讯,再由中间件访问底层API的方式,进行应用开发。这种架构一般会非常依

2015-09-06 22:12:06 2037 1

原创 scrapy学习--list回顾

记得以前看过一些文章将的是学习知识的记忆是螺旋式上升的,所以需要不停的巩固已有的知识。在学习Scrapy的过程中,我会时不时地写一些python基础知识的回顾篇,用于回顾一些常用的知识点。当然作为回顾,我不会写的特别详细,可以作为一个学习的提纲,然后去翻阅资料,这也是一个学习的过程。还有就是第一手资料应该是官方文档。1. append 用于在列表的尾部追加新的内

2015-08-25 22:43:26 802

原创 scrapy学习--Spiders

一、爬虫的工作流程1.通过调用start_request()中的URL获取初始的request,并以parse为回调函数生成Request。2.在parse方法中分析返回的内容,返回Item对象或者Request或者一个可迭代容器。3.在parse内可以使用选择器分析网页内容,并生成item。4.由pipeline将返回的item存储到数据库或者使用Feed exports存入

2015-08-25 22:30:53 2856

原创 scrapy学习--python字典回顾

由于scrapy的items与字典存在较紧密的联系,并且items的Field对象就是内置字典的一个别名。所以想要熟练使用items内容,良好的字典的基础就是必要的。字典类似于java中的Map,由键值对组成。键和值之间用“:”分隔,项与项之间用逗号(,)分隔,整个字典是由大括号括起来。键是唯一的。 获取字典中的一项:>>> dict2 = {'name': 'ea

2015-08-22 22:28:45 753

原创 scrapy学习笔记--Items

Item对象是一种简单容器,用于结构化的保存抓取的数据。Item使用简单的class定义语句一级Field对象来声明。import scrapyclass FirstspiderItem(scrapy.Item): # define the fields for your item here like: name = scrapy.Field()Field对象指明了每个

2015-08-20 23:16:25 3029

原创 Pycharm删除项目

按照网上查找到的方法基本上都是:删除本地项目,重新打开Pycharm。这样做在打算彻底删除时是有效的,但是如果只是打算从pycharm中删除,而不是删除本地项目就出现问题。而且重新建立一个同名文件夹,pycharm中又会出现这个项目。正确的方式应该是:1.在用户\XXX\.Pycharm40\config\options目录下,查找到recentProjectDirectori

2015-08-20 22:23:28 17778

判断坐标是否在多边形内

注意其他资源下载出来也是用的java.awt库,android上用不了,看到这个名字的绕道就行了

2023-08-16

自动对焦拍照,以及可移动方框定位

自动对焦拍照,以及可移动方框定位。涉及到拍照、自定义view、可移动选择框,以及组件定位等知识点。

2015-07-16

Android的简单记事本实现

这个例子主要涉及到了以下一些知识点:ListView,自定义Adapter、SQLiteDatabase,并且对menu做了简单处理。

2015-05-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除