BambooSlips' blog

Home

About

Archives

loading..
Android

Android Camera

An Overview of Activation of Android CameraWhen a Android device boots up, the kernel will be loaded first. And then, CameraProvider will load CameraHAL, after which CameraService is able to communicate with CameraProvider to make use of CameraHAL. When a APP trys taking control of the camera, Camera2 API will try getting CameraService, which will activat..

Read more
loading..
Android

HIDL

OverviewCamera框架分为五层,即APP、Service、Provider、Driver及Hardware: 由上图可知,HIDL位于Service和Provider层之间。HIDL即HAL接口定义语言(Hardware Interface Definition Language, 发音为“hide-l”),它是用于指定HAL和用户之间接口的一种接口描述语言(IDL)。但根据google官方资料,从Android之后,HIDL已被废弃,Android将在其所有位置改用AIDL。 HIDL旨在用于进程间的通信(IPC),它成功地将Camera Hal MOdule从Camera Service中解耦出来,并承担着对Camera HAL的封装工作,减轻并降低了开发者的工作量和开发难度。 HIDL开发..

Read more
loading..
Android

CamX & Chi

OverviewCamX-CHI架构是为了更精细化控制底层硬件,同时方便手机厂商自定义一些功能而提出的。它将一些高度统一的功能性接口抽离出来放到CamX中,将可定制化的部分放到CHI中供厂商修改以实现各自独有的特色功能。这样做的好处是:即便开发者对CamX不是很了解,也可以很方便地加入自定义的功能,从而降低开发者在高通平台的开发门槛。 目录结构 图中CamX代表了功能性接口的代码实现集合,CHI则代表了可定制化需求的代码实现集合。CamX对上作为HAL3接口的实现,对下通过V4L2框架与Kernel保持通讯,并以互相dlopen so库的方式与CHI交互以获取对方的操作接口。 各个目录的用途待续…… 各个部件UsecaseUsecase是CamX-CHI中最大的抽象概念,其中包含这多条用于实现特定功能的Pi..

Read more
loading..
Android

Android Anatomy

Android三窥首先,分别从Android的层次结构、服务模型和源代码这三个不同的角度一窥Android系统。 Android Layer Cake下图是Android系统的层次模型,其左半部分可以看作一个如同Ubuntu的一般的Linux发行版本,而右半部分则是Android系统的特定组成部分。 该模型将Android分为四个主要层次,每一层都基于其下一层,从下至上依次是:硬件层、Linux内核层、系统库层以及应用和系统服务层。目前,大多数的Android开发者主要的工作集中于上图的“Android Applications”区域,他们将时间用于学习和利用Android系统提供的环境。而本文的主要内容是关于如何自定义Android系统本身以使其适用于新的硬件。 硬件层硬件层即物理设备,它处于当前模型..

Read more
loading..
SE

软件测试 Software Testing

软件测试的概念软件软件=程序+文档 软件测试软件测试(Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 缺陷什么是软件缺陷 没有实现《需求规格说明书》中需要实现的功能 实现了《需求规格说明书》中没有提到的功能 实现了基本功能,但未实现一些虽未明确规定但应该实现的目标,如软件难以理解,不易使用,运行缓慢等 产生原因 软件产品说明书(需求) 设计 编写代码 其它 测试用例 定义:在测试执行之前设计的一套详细的测试方案,包括测试环境、测试步骤、测试数据和预期结果 测试用例=..

Read more
loading..
C++

C++ 11 & C++14

语言可用性强化nullptr 与 constexpr类型推导在传统 C 和 C++中,参数的类型都必须明确定义,尤其是当我们面对一大堆复杂的模板类型时,必须明确的指出变量的类型才能进行后续的编码。 C++ 11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型。这使得 C++ 也具有了和其他现代编程语言一样,某种意义上提供了无需操心变量类型的使用习惯。 autoauto 在很早以前就已经进入了 C++,但是他始终作为一个存储类型的指示符存在,与 register 并存。 不使用auto书写迭代器: for(vector<int>::const_iterator itr = vec.cbegin(); itr != vec.cend(); ++itr)..

Read more