![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
冻云-FrozenCloud
这个作者很懒,什么都没留下…
展开
-
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 · 735 阅读 · 0 评论 -
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 · 692 阅读 · 0 评论 -
2.6camera session创建过程
如第一章所述,得到CameraDevice对象后就可以创建session了,还是以createCaptureSession为例,这是一个抽象方法,我们已经介绍过,它的实现在CameraDeviceImpl中。方法首先将传入的Surface构建OutputConfiguration,OutputConfiguration是输出的Surface的配置,包含一些基本的配置信息。随后调...原创 2019-12-23 17:45:47 · 1522 阅读 · 2 评论 -
2.5 Camera open拾遗
前面把Camera open在Framework的流程已经梳理清楚,但是还有一些细节值得一提。CameraDevice.StateCallback与Executor在open方法中传入了一个Executor对象,这个对象是在执行Callback时使用的。作为一个接口, CameraDeviceImpl中有一个静态内部类CameraHandlerExecutor作为实现。外部调用ch...原创 2019-12-16 18:04:50 · 461 阅读 · 0 评论 -
2.4camera多进程互斥控制
上一节我们提到过handleEvictionsLocked方法是处理相机进程互斥的。这是一个比较重要的方法,随着现在安卓设备的发力点集中到相机上,同一个应用内的多相机的调用,甚至是不同应用打开不同相机的需求都开始出现,从Framework层面来说就是这里在进行管理。根据相机使用的经历,我们应该有以下几个经验两个应用不能同时打开一个camera; 同一个应用,根据平台不同(高通、MTK),...原创 2019-12-09 16:31:08 · 2655 阅读 · 2 评论 -
2.3camera service的connectDevice的过程
在上一节中,我们梳理了camera open在framework中涉及的类和它们的主要功能,但是我们跳过了一些关键的细节,所以在这一章节中,我们将首先来分析connectDevice的过程。首先我们来看在ICameraService.aidl中的定义,接口定义了四个变量callbacks、设备id、应用的包名、clientUid,如果是从openCamera方法调用的,这里就是-1...原创 2019-12-02 16:24:11 · 2071 阅读 · 0 评论 -
2.2Camera open在Framework中的过程
在前面的内容中,我们提到过CameraManager类的主要用途是open camera,这一节我们将详细梳理这一过程在Framework中的类和逻辑。SDK提供的方法最终调用openCameraDeviceUserAsync方法,通过观察我们可以知道最核心的代码只有两行,其中第一句获取了CameraService对象,随后调用了它的connectDevice方法,并返回了一个ICa...原创 2019-11-27 17:51:01 · 732 阅读 · 0 评论 -
2.1 Android启动与CameraService进程加载
从这一章节开始,笔者将对Camera的Framework框架进行分析。对于Camera Framework框架而言,其核心就是CameraService,所以本节将首先探究Camera service是什么,Camera Service是怎么来的。Android框架启动过程Android在开机时,首先装载BootLoader引导程序,进行硬件上电,从初始代码处开始执行初始化,再进行第二...原创 2019-11-25 16:04:12 · 1411 阅读 · 0 评论 -
1.4Metadata与Characteristics
在上一节我们已经学习过Camera的参数通过Session下发到HAL层,这一节我们将详细探索CameraMetadata。在公开的SDK中,除了CameraMetadata类之外,还存在三个继承它的子类,分别是CameraCharacteristics、CaptureRequest、CaptureResult类。通过名字,我们可以轻易地分析出看出CameraCharacteristi...原创 2019-11-20 11:17:10 · 792 阅读 · 0 评论 -
1.3Camera2 Session机制详解及Camera1的对比
想要理解API2的Session机制,不能简单的只从Camera看,而是要结和Sesion本身的概念来看。一、Session机制1、Web应用中的Session计算机领域的Session概念主要来自于Web通信,在网络应用中,称为会话控制。“Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失...原创 2019-11-18 18:31:11 · 1792 阅读 · 0 评论 -
1.2Camera Preview流程及源码分析
Camera API2的预览实现在网上有非常多的代码可以参考,包括Google官方提供的Demo。直接看代码,模仿、改写当然是最快的实现方式,但如果其中的逻辑关系可能没有捋顺清楚,在没有参考代码的情况下,能否同样实现相关功能就值得商榷了。1API2架构图这个图是一个常见的用于展示API2架构的图,但事实上这个图并不能对架构和开发起到很好的帮助。这个图的主要问题是无法搞清楚Came...原创 2019-11-14 18:29:43 · 1556 阅读 · 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 · 1295 阅读 · 0 评论 -
Android多线程断点续传下载
在上一篇文章 Java、Android中的多线程异步下载 中并没有完成断点续传的功能。所谓的断点续传,主要就是使用一个记录下载进度的文件,每次下载开始时,先判断进度文件是否存在,并读取其中的进度。下面的代码就是在Android上实现短线续传下载功能的代码:package test.multdownload;import java.io.BufferedReader;impor原创 2015-06-02 16:33:38 · 604 阅读 · 0 评论 -
第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/文章来源:http://www.cnblogs.com/smyhvae/p/4456420.html联系方式:smyhvae@163.com 【系列】第一次使用Android Studio时你应该知道的一切配置第一次使用Android Stu转载 2015-12-13 12:25:15 · 1069 阅读 · 0 评论 -
Android广播机制知识概要
关键字:Broadcast用于发送广播;BroadcastReciver用于接收广播。广播的意义:简言之,群发消息,定点接收,分别处理。所以在理解广播时存在以下几个问题:1)谁发广播?怎么发?2)信息如果传递?3)谁接收广播?怎么接收?首先,来说明第二个问题。在Android中,Intent(意图)被用于在各个组件中传递消息。Intent包含aciton(行原创 2015-12-20 21:50:56 · 625 阅读 · 0 评论 -
Google Gallery for Android 4.4源码分析以及主UI修改——Gallery整体结构
最近在做原生Gallery的UI修改和和功能改进工作,所以大约半个月的工作,终于对Gallery的主UI部分有了一定了解,对Gallery的整体结构有了一定认识。在修改的过程中遇到了各种各样的坑,好在UI修改部分的工作已经接近尾声,下一阶段主要是新功能的添加。常言道:好记性不如烂笔头。所以将Gallery相关的内容做一次细致的梳理,相信这对同样做系统原生应用的同学也能有所帮助。一、原创 2016-04-20 20:51:28 · 2141 阅读 · 2 评论 -
关于安卓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 · 2881 阅读 · 0 评论 -
textview圆角只有左上角有效的问题
今天遇到一个坑爹的问题在使用android studio的时候,设置了一个textview的圆角,然后在preview中进行预览。我擦,明明只设置了上面两个圆角的值,结果下面两个也变成了直角了,并且只有修改左上角的值才有效果。到网上查了一下发现有人遇到了同样的问题,但是没有给出解决方案,而且这个东西api上根本没有。一度怀疑是系统bug,但是最后还是发现了真相—————原创 2015-09-18 23:47:38 · 1080 阅读 · 0 评论 -
Android studio中配置androidannotations框架
马上要开始一个新项目,老板让我搭建android版的基础架构,感觉压力还不小的,项目时间比较紧迫,所以想要加快开发速度,第一个想到的就是注解的开发方式。一查找果然Android上也有一些注解,衡量了一下决定使用androidannotations框架。第一件事就是在自己电脑上搭建一个demo,用来测试可行性,结果真是命途多舛,用了一周的时间才整明白他是怎么回事。在Android s原创 2015-09-15 00:39:01 · 1639 阅读 · 0 评论 -
两种Context的区别,Activity 和Application
Application(getApplicationContext()) Context是和应用程序关联的,在应用的生命周期内总是一样的。Activity(this) Context是关联在某个获得上的随着Activity的销毁而被销毁多次。在观看黑马视频的时候,老师也提到了这个问题下面内容摘自博客 http://liuyun025.iteye.com/blog/11399原创 2015-06-04 12:33:04 · 3256 阅读 · 0 评论 -
Handler、Message、Looper等Android线程通信
public class LooperThread extends Thread { public void run() { Looper.prepare(); ... Looper.loop(); }}Looper用于管理消息队列,具有以下特点:每个线程最多只有一个Looper,UI线程有系统创建,子线程需要手原创 2015-05-22 15:03:34 · 403 阅读 · 0 评论 -
Java、Android中的多线程异步下载
在多线程异步下载中,各种语言都是类似的。单重字面看异步所以需要线程;多线程所以需要有多个线程Tread;下载所以需要把Http请求写入文件。按照这样的思路就需要建立http链接,建立下载的临时文件;需要计算每个线程的下载开始和结束位置,并进行请求。下面给出完整的例子:package download;import java.io.File;import java.io.I原创 2015-06-01 21:30:29 · 1283 阅读 · 0 评论 -
HttpUtils介绍
在了解了java和Android的多线程断点续传之后,再来介绍一个github上的开源库HttpUtils。这个库本身有许多功能,这里只介绍下载相关的部分。库地址:https://github.com/wyouflf/xUtils也可以直接到github上查看,上面的介绍也很详细。下面直接上代码,主要部分都添加了注释。package test.multdownload;原创 2015-06-02 16:59:47 · 1597 阅读 · 1 评论 -
Fragemnt、FragmentActivity、ListFragment等需要注意的一些问题
这几天学习fragment的相关知识,结果第一个应用就发生了下面这个错误:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfragmentmm/com.example.myfragmentmm.MainActivity}:android.view.InflateExce原创 2015-05-31 23:35:57 · 855 阅读 · 0 评论 -
Android学习提纲
通过一段时间对Android的自学,发现在没有实际进行项目的情况下,很容易陷入没有抓手的情况。目前在网上教程以及学习视频主要都是UI,四大组件,数据存储等。下面列出一些知识点:1.Android应用框架结构 src,assets,gen,res,AndroidManifest.xml2.电话拨号器 Intent,权限,3.短信发送器 Pendi原创 2015-05-18 20:51:28 · 486 阅读 · 0 评论 -
android.os.Build的一些使用方法
最近正在以某亿级APP源码为模板学习android的各方面内容,包括设计、开发、各种类的使用,已经最重要的就是思路。在官方文档中可以查到Build类中有如下常量:public static final StringBOARDThe name of the underlying board, like "goldfish".主板名称public原创 2015-05-06 14:37:33 · 21564 阅读 · 0 评论 -
SQLiteDatabase、SQLiteOpenHelper以及封装
这几天学习Android,对UI和数据库有了一些基本的认识,所以尝试的做了一个记事本。记事本的思路是一个ListView用于展示日记,一个编辑页面用于添加、修改、删除一条日记信息。首先是SQLiteOpenHelper类package com.frozencloud.mynote.date;import android.content.Context;import android原创 2015-05-13 18:55:51 · 1329 阅读 · 0 评论 -
Android签名
关于Android包签名的内容网路上也有很多。这里简单记录几点意义签名就是应用程序的唯一标识。google推荐同一个开发者的多个应用尽可能的使用同一个数字证书。这样做的好处是可以通过权限在多个程序间共享数据和代码。签名步骤创建Key,使用这个Key对APK签名。Eclipse签名方式1、右键点击项目——>Export——>Android—原创 2015-06-04 11:41:15 · 383 阅读 · 0 评论 -
Fragment里onActivityResult()无回调的问题
最近工作,接手了项目,测试发现有一个bug,就是在Fragment中使用startActivityForResult(Intent intent,int requestcode) 方法调用其他activity,重写onActivityforResult方法,但是onActivityforResult并没有被调用。这个问题的解决思路就是两个方面。先从onActivityforResu原创 2015-06-27 23:41:12 · 1099 阅读 · 0 评论 -
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 · 948 阅读 · 0 评论 -
Hybrid App开发
现在移动应用开发主流都采用Hybrid App模式,例如淘宝、微信、手机QQ、携程、去哪儿、手机百度等都使用了Hybrid APP开发模式。一、 hybrid App的三种解决方案方案一:使用PhoneGap、AppCan之类的中间件,以WebView作为用户界面层,以Javascript作为基本逻辑,以及和中间件通讯,再由中间件访问底层API的方式,进行应用开发。这种架构一般会非常依原创 2015-09-06 22:12:06 · 2072 阅读 · 1 评论 -
Android线程
Android系统会为应用创建一个main进程,程序的所有组件都运行在这个进程里Andoid的单线程模式必须遵守两个规则:1.不要阻塞UI线程。2.不要在UI线程之外访问Andoid的UI组件包。为了能够在其他线程中方为UI线程,Android提供了几种方法:Activity.runOnUiThread(Runnable)View.post(Runnab原创 2015-07-31 15:29:34 · 430 阅读 · 0 评论 -
自动对焦拍照,以及可移动方框定位
最近工作中遇到一个这样的功能,自动对焦拍照后将照片显示在当前页面,并出现两个长方形框体对照片的选中区域进行定位,获取其坐标。这里就主要涉及到以下四个功能:拍照、照片显示、可移动的长方形框体、定位。开始没有什么思路,于是从界面下手,1.首先做出可移动框体,自定义一个view重写ondraw方法;2.然后在这界面添加控制方向的按钮;3.为了拍照,需要有一个SurfaceView,为原创 2015-07-16 20:41:37 · 1718 阅读 · 0 评论 -
AChartEngine添加到View中
package com.example.myacedemo;import java.util.Random;import org.achartengine.ChartFactory;import org.achartengine.GraphicalView;import org.achartengine.chart.PointStyle;import org.achartengine原创 2015-07-08 15:42:04 · 656 阅读 · 0 评论 -
Activity面试题集
1.什么是Activity?Activity是android的四大组件中最常见的部分,是Android用于交互的部分。Activity有四种状态:Active/Runing、Paused、Stoped、Killed。主要有七个生命周期方法。通过Intent与其他Activity或者组件通信。2.请描述一下Activity生命周期。参考Activity生命周期3.两个原创 2015-06-12 14:57:13 · 7073 阅读 · 1 评论 -
Activity生命周期
关于Activitiy生命周期的过程官方SDK和网路上都有很多说明,这里要说的是Activitiy生命周期方法原创 2015-06-10 22:04:55 · 3791 阅读 · 0 评论 -
android studio,gradle的问题
这一周在三个地方都分别安装了不同版本的android studio,导入相同的项目,都发生了build失败的问题。其中在A地修改的方法是降低了sdk版本;在B地采用的方法是更新SDK和Build Tools到最新版;最后在家中折腾了一晚上,前两种方法都不行,一直报错不断。一会儿说android()不存在,一会又Gradle怎么着的,一会又是support-7不能解析。于是一样一原创 2015-06-28 00:25:33 · 1746 阅读 · 0 评论 -
Android清单文件,权限说明
原文出处:http://blog.csdn.net/kbest/article/details/7495154但是原作者复制了8遍,看起来好乱。。。访问登记属性android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限获取错略位置android.perm转载 2015-05-04 15:00:40 · 1050 阅读 · 0 评论