android系统
文章平均质量分 90
armwind
这个作者很懒,什么都没留下…
展开
-
Android-2016后半年的学习计划
转眼间工作已两年了,这期间收获很多,只是没有写成博客和大家分享出来(其实我一直在本地用为知笔记软件记录的笔记)。后面我会坚持写博客的,把自己的一些心得感悟分享出来,也许这也是一种学习吧。首先分享工作和学习经历吧,呵呵一、工作第一年(2014-2015.5)这一年做的是硬件方面的工作,领导和同事都很热情,只是画板终究不是我喜欢的。这一年画了N多块PCB板,画板方面进步很快。此原创 2016-06-24 21:18:43 · 3205 阅读 · 1 评论 -
Android Binder学习(三)之defaultServiceManager()的分析
Android Binder学习(三)之defaultServiceManager()的分析 文章还是按着函数调用的顺序来分析的。这里我们就在mediaServer进程中研究一下,serviceManage代理对象的获取过程。首先看到的就是mediaServer进程中的main函数了。下面可以看到meidaServer进程注册很多和多媒体相关的服务。int main(int argc __unus原创 2017-06-01 09:25:52 · 5467 阅读 · 0 评论 -
Android Camera fw学习(一)-类之间的关系和作用
Android Camera学习(一)-类之间的关系和作用备注:本文基于Android 5.1分析,可能已经过时了,不过里面的原理和现在7.0基本一样。博文为个人看代码笔记,如有问题,请发表意见大家一起学习,进步。后续的博文会沿着下面几步来走,把自己对Camera分析总结一下。1.简单介绍Camera几大接口类,以及相关类的继承关系(也就当前博文)2.app->jni->native详细分析op原创 2017-06-06 23:29:48 · 4114 阅读 · 5 评论 -
Android graphics 学习-生产者、消费者、BufferQueue介绍
备注:博文根据Android5.1代码分析,为个人学习笔记。如有问题,欢迎指正。 博文是后续理解Camera preview,recording buffer流转的基础。要不然后续Camera buffer部分不好分析。这是这几天看的笔记,也算是对BufferQueue有了新的认识,仍有许多地方需要探索。首先从整体上初步认识一下graphics组件(图片来源于Android官方文档)。原创 2017-06-18 22:52:50 · 14968 阅读 · 1 评论 -
Android源码中学习文档如何查看
备注:源码中的docs包是Android7.0中的docs包。 Android源码中其实已经给开发者提供好了开发文档。我们常常需要翻墙上google官网查阅一些资料。但是今天发现其实Android源码中已经自带了google官网的学习文档,我们本地使用google_appengine引擎就可以在本地查阅google的学习文档了。1、下载google_appengine源码包这个在CSDN上可以下载原创 2017-06-07 13:25:55 · 2434 阅读 · 0 评论 -
Android Binder学习(四)之addService流程分析
Android Binder学习(四)之addService流程分析备注:本文基于Android5.1分析 该篇博文去年年底就基本整理完毕,年后几个月太忙,最近才有时间整理一下发表出来。博文是边看代码边整理的,本人能力有限,前后花了三个星期的苦逼夜晚整理。博文是按着代码的执行流程来分析的。以mediaServer添加camera服务为例来分析数据打包传递过程,中间穿插一些我自己理解画出来的图,原创 2017-06-03 15:57:23 · 8908 阅读 · 2 评论 -
Android camera fw学习(二)-open camera操作过程&准备工作分析。
备注:本文基于Android5.1、Camera hal3学习,默认情况下参考代码都是5.1的,如有其它版本的源码,我会标出来的。博文是看代码分析和一些工作经验的总结,如有疑问,大家可以相互讨论,共同进步。 当前博文主要是为后续的StartPreview,takepicture等流程分析做铺垫的,在open camera->start preview过程中,其实做了很多事情。这里不去叙述上层app原创 2017-06-10 12:32:40 · 5680 阅读 · 2 评论 -
Android Camera fw学习(三)-startPreview流程分析
Android Camera fw学习(三)-startPreview流程分析备注:本文是Android5.1学习笔记。博文按照软件启动流程分析。 如果看过前面的两篇博文,我们应该已经知道,在进行preview之前,我们创建了客户端的java和native Camera对象,在mediaServer进程创建了对应客户端的本地对象(Camera2Client),此外也获取到底层HAL3默认信息,原创 2017-06-24 14:58:02 · 8456 阅读 · 0 评论 -
Android Camera fw学习(四)-recording流程分析
Android Camera fw学习(四)-recording流程分析 备注:备注:本文是Android5.1学习笔记。博文按照软件启动流程分析。 且行且惜,一步一个脚印,这次学习camera Video.虽然标题是recording流程分析,但这里很多和preview是相似的(包含更新,创建Stream,创建Request),这里主要分析MediaRecorder对象创建、video原创 2017-06-25 12:14:20 · 5755 阅读 · 0 评论 -
Android Camera fw学习(六)-takepicture(ZSL)流程分析
备注:博文仍然是分析Android5.1 API1代码的学习笔记。 这次笔记主要是来分析ZSL流程的。ZSL(zear shutter lag)即零延时,就是在拍照时不停预览就可以拍照.由于有较好的用户体验度,该feature是现在大部分手机都拥有的功能。 下面不再贴出大量代码来描述过程,直接上图。下图是画了2个小时整理出来的Android5.1 Zsl的基本流程,可以看到与ZSL密切原创 2017-08-20 14:08:28 · 6795 阅读 · 6 评论 -
Android Camera fw学习(五)-takepicutre(STILL_TAKEPICTURE)流程分析
备注:博文仍然是分析Android5.1的代码所写的学习笔记。 前面已经了解过API1大概过程,这里直奔主题。与TakePicture息息相关的主要有4个线程CaptureSequencer,JpegProcessor,Camera3Device::RequestThread,FrameProcessorBase如下面的代码可以发现,在Camera2client对象初始化后,已经有3个线程已经原创 2017-08-06 11:40:15 · 3118 阅读 · 1 评论 -
Android camera framework7.0和6.0 主要差异
目前差异主要体现在接口封装和进程分离方面。1.代码结构1).android6.0代码 目前Android6.0的代码,本地没有源代码,这里就拿服务器上版本了。可以发现在Android6.0上,接口都是在native层以源码方式实现了。由于以I开头的文件都具有binder通信作用。所以在android7.0中,这些接口都以aidl文件来描述,不过它们本质上没什么区别,用起来都是一样的。Android原创 2017-10-23 17:40:00 · 1230 阅读 · 3 评论 -
Android O 学习(一)之HAL类型
备注:这里已Camera模块为例,如问题,欢迎讨论。 以往的hal和framwork的代码紧密联系起来的,为此google为了framework 升级的方便在Android 8.0 上对 Android 操作系统底层进行了重新架构。新的架构已经了解一部分,但仍需要不断学习,加上最近需要将一些项目升级到Android O,所以决定该好好看看了,阅读代码过程中发现存在一种后缀为.hal的文件,该原创 2017-11-03 15:06:46 · 10093 阅读 · 3 评论 -
linux v4l2学习之-常用结构体介绍
标签:v4l2学习文章目录一、v4l2粗略线条二、v4l2关联的几个重要文件三、重要的结构体1.struct v4l2_device2.struct v4l2_ctrl_handler3.struct v4l2_ctrl5.struct v4l2_ctrl_opsstruct v4l2_fh8.meida_device8.medi_devnode四media_device注册过程1.v4l2_d...原创 2019-05-14 21:48:27 · 2452 阅读 · 0 评论 -
linux v4l2学习之-消息机制
linux v4l2学习之消息机制标签(空格分隔):v4l2学习文章目录linux v4l2学习之消息机制@[toc]一、v4l2消息队列理解准备条件1.1 struct v4l2_event1.2 struct v4l2_event_subscription1.3 struct v4l2_fh1.4 struct v4l2_subscribed_event二、Queue消息Dequeu消息...原创 2019-05-14 21:48:57 · 7449 阅读 · 1 评论 -
Android Binder学习(二)之ServiceManager进程-我想成为管理员
ServiceMange在binder通信中充当一个管理员的角色,后面就称呼它为sm。当系统启动时,各种server进程将自己的service对象和service名字注册到sm中。后面client进程想使用相应的服务时,就可以根据对应服务的名字,在sm中查找到对应服务,找到之后就会在kernel中创建一个binder引用对象,并将引用对象的描述符返回给client,以让它创建一个服务代理对象。这样原创 2017-06-01 07:06:33 · 1511 阅读 · 0 评论 -
android底层库libutils之string8,string16研究
在之前看android camera framework代码时,发现代码中大量使用了string8、string16类。由于之前学习的是C#,java等高级面向对象语言唯独没有认真研究过C++。所以对C++中的string比较陌生。虽然他们的用法都是一样的,但是这里还是想认真研究一下底层实现原理。原创 2016-07-24 21:16:25 · 24002 阅读 · 0 评论 -
Android Camera之CameraMetadata分析
感兴趣可以加QQ群85486140,大家一起交流相互学习下!一、camera_metadata简介Camera_metadata数据结构在Camera流程中起到了很大重要,可以说所有的自顶层下发给hal层的参数都是通过camera_metadata传递的。今天我们就来好好看看它到底如何保存的,以及它的数据组织形式如何表现。和Camera_metadata数据结构相关的主要有以下几个文件:...原创 2016-07-25 20:03:50 · 21088 阅读 · 6 评论 -
Camera ISO、快门、光圈、曝光这几个概念
转载自知乎:https://www.zhihu.com/question/21427664种田要知节气,开车要懂离合,任何一样手艺都有行话。虽然我觉得尽量从实际问题说起,尽量不要说的很专业,但有几个词却是谈到摄影无法避开的词,它们是:光圈,快门, 曝光,焦距, ISO,景深。 一、ISO(感光度)与图片质量 ISO -- 感光度,是一个曝光率极高的词,我们在超市买饼干的时候转载 2016-09-02 13:27:17 · 12770 阅读 · 2 评论 -
详解YUV数据格式
在博客园看到有大神写了一篇关于YUV图像格式的博客,图文分析很不错,这里就转载过来了。但排版有些乱,所以我就在原博文的基础上做了一些排版,加上一些自己的理解。希望我们能共同进步。come on!!一.YUV数据的定义个采集方式YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点转载 2016-08-14 11:30:23 · 9365 阅读 · 3 评论 -
android底层库libutils之thread研究
Thread 类其实就是对Linux api做的一个封装,它的代码是在/sysem/core/libutils/thread.cpp。在Android service和camera 流处理中我们都会发现它的影子。就我个人来说,在没看研究thread类时,虽然我知道它是一个线程类,但是用起来还是心里发虚。例如在Camera service中,各种帧流都会开一个线程来处理,代码在framewo原创 2016-09-24 09:39:00 · 3918 阅读 · 0 评论 -
android底层库libutils之Mutex,Autolock研究
1)认识Mutex,AutolockMutex其实是对linux 线程互斥锁做了一层封装,由下面的类定义中可以发现pthread_mutex_t mMutex,这一点充分说明这一点。而在Mutex之上又做了一层封装,就出现了自动锁。自动锁在面向对象编程时,更能有效的释放锁,防止程序猿忘了释放锁,导致花时间调试。class Mutex {public: enum {原创 2016-09-24 14:35:42 · 2180 阅读 · 0 评论 -
android底层库libutils之Condition研究
博文是自己学习总结所得,如有错误,欢迎大家指正,大家一起学习,共同进步!1)contidion认识线程1做初始化工作,而其它线程例如线程2,线程3,必须等待初始化工作完成之后才能进行后续的操作,那么此时线程2,线程3在等待同一个条件。当线程1完成初始化工作之后,它会触发这个条件,那么线程2,线程3就有机会被唤醒。如果有多个线程在等这个条件的话,那么只能唤醒一个线程。由类实现可以看到原创 2016-09-24 16:22:51 · 894 阅读 · 0 评论 -
Android makefile文件调试方法
最近有一个bug问题,本以为解起来分分钟就可以搞定,却耽误了大半天。借这个机会,记录一下自己的学习心得。这里先来描述一下应用场景。1.应用场景isp在调试af时需要将af一些配置文件(xml文件)读取到out目录下,但是有的工程在开发时是没有af功能的,所以就不许要添加这些配置文件。为了统一性,以及避免每个工程都要在拷贝环境变量中添加af的配置文件,所以在每个工程配置文件里面都添加了如下判原创 2016-12-01 20:36:21 · 1304 阅读 · 0 评论 -
Android6.0 由PDK-TestingCamera 学习apk布局
一、场景今天研究android 6.0 pdk目录下testingcamera时遇到了一个布局文件的问题,本人是做底层的,研究了1个多小时才搞明白,特记录下笔记。如果有理解不到位的地方,欢迎指正,大家一起学习。在一开始打开TestingCamera应用进行preview时,屏幕上只有一个preview预览界面。如下图所示。当我打开CallbackProcess时,屏幕上出现原创 2016-12-13 12:24:49 · 1104 阅读 · 0 评论 -
android camera动态库加载过程
1.android camera库的加载 我们知道android调用hal的接口的时候,都要将对应的动态库加载进内存才可以使用,这个加载过程大家也许有些陌生,现在就已camera动态库的加载来探索一下动态库的加载过程。1)camera库是由cameraservice负责加载的,它的加载过程是在onFirstRef()中实现的。在CameraService服务类中定义了一个camera原创 2016-07-31 08:50:17 · 2718 阅读 · 0 评论 -
Android之ION内存管理分析
备注:图片中的双向箭头表示他们是链表,前后链接起来的,单向箭头表示指针指向谁。 感兴趣可以加QQ群85486140,大家一起交流相互学习下! 做Camera都快2年了,对buffer流转,buffer queue 等一些细节方面,还是不太明白。虽然也知道怎么用,但是不知道更深层次的工作机制,内心有点忐忑不安。所以决定拿一个周末好好研究了一下ION。下面就对这个周末先做个笔记...原创 2017-05-30 09:10:16 · 28449 阅读 · 7 评论 -
Android Binder学习(一)之Binder中的数据结构
备注:双向箭头表示双向链表,各成员是串联起来的。 感兴趣可以加QQ群85486140,大家一起交流相互学习下! 在分析Android framework代码时,遇到最多的就是binder进程间通信了。如果只知道怎么用,也不影响我们日常的工作。但如果你想阅读binder源码,就需要花点时间了。相对与linux内核来说,Android可以理解成一个“应用”了,所以分析起来大家一定要...原创 2017-05-30 11:14:18 · 3284 阅读 · 1 评论 -
linux v4l2学习之-v4l2设备注册过程及各个设备之间的联系
3.video_register_device注册过程static inline int __must_check video_register_device(struct video_device *vdev, int type, int nr){ return __video_register_device(vdev, type, nr, 1, vdev->fops->o...原创 2019-05-14 21:49:25 · 7806 阅读 · 1 评论