android封装在独立so,Android-Camera-架构及应用简析(补汉6个汉字字).pdf

Android Camera 架构及应用简析

1. 前言

整体看一下Android Camera 部分的代码,从APP 层的Camera 到Framework 的

Camera 应用框架,再到 Hardware 的Camera HAL ,再到 Kernel 的 Camera

Driver。

2. 架构概述

要了解Android Camera 架构,还是得先从Android 本身的架构说起。

图1 Android 架构图

从Android 框架看,分为四层:应用层、应用框架层、库层、内核层。

应用层主要工作在Android SDK 之上,利用Android 提供的API 进行开发,生成

APK 包。

应用框架层整合了Android 自带各种控件和类,为应用开发提供高效、方便的API 接

口。这个对上实现统一的接口,对下也提供统一的标准方便各种库的移入。

库层是Android 与底层硬件通信接口,它封装底层硬件接口实现该模块的具体逻辑,

并以服务的形式通过Binder 通讯机制暴露给应用框架。

内核层则是直接与硬件联系的一层,可以理解为设备驱动。

3. Camera 层次简析

说完Android 整体框架,我们以Camera 为例来说明一下Camera 在各层是如何实现。

下图是Camera 部分在Android 上各层的分布图

图2 Camera 结构分布图

➢ 3.1 应用层

Camera 的应用层在Android 上表现为直接调用SDK API 开发的一个Camera 应用

APK 包。代码在\android\packages\apps\Camera 下。主要是Java 写的基于

android.hardware.Camera 类调用的封装,并且实现Camera 应用的业务逻辑和UI 显

示。android.hardware.Camera 就是Android 提供给上层调用的Camera 类。这个类

用来连接或断开一个Camera 服务,设置拍摄参数,开始、停止预览,拍照等。它也是

Android Camera 应用框架封装暴露出来的接口。一个Android 应用中若要使用这个类,

需要在Manifest 文件声明Camera 的权限,另外还需要添加一些元素

来声明应用中的Camera 特性,如自动对焦等。具体做法可如下:

➢ 3.2 应用框架层

Camera 框架层将应用与底层的实现隔离开来,实现了一套Android 定义的对上对下

接口规范,方便应用及底层硬件的开发和移植。这一层对上以Java 类的形式包装出

android.hardware.Camera ,提供给应用层调用;对下在

CameraHardwareInterface.h 头文件中定义了Camera 硬件抽象层的接口,这是一个

包含纯虚函数的类,必须被实现类继承才能使用。这个实现类也即是下层中将讲到的用户库

层,它继承CameraHardwareInterface 接口,实例化对底层硬件驱动的封装,最终生成

libcamera.so 供框架的libcameraservice.so 调用。这样做的好处是让Camera 的应用

框架代码独立,不受底层硬件驱动改变的影响,方便在不同平台上porting 驱动代码,而

保持上层的代码不用变化。

从代码上看,这一层包含Java 到JNI 到C++的代码。

\android\frameworks\base\core\java\android\hardware\Camera.java

这个类作为Android SDK Camera 部分提供给上层应用,并通过JNI 的方式调用本地

C++代码。

\android\frameworks\base\core\jni\android_hardware_Camera.cpp

Camera 的JAVA 本地调用部分,是承接JAVA 代码到C++代码的桥梁。编译生成

libandr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值