`
isiqi
  • 浏览: 16486089 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Android Camera模块分析

阅读更多

Android应用程序编程语言是JAVA,而linux的很多服务程序,包括一些libraries都是用c 或者c++写的,应用程序使用什么样的机制去调用这些系统函数的呢?Java的虚拟机可以通过 System.loadLibrary 来加载本地库,也可以通过JNI函数 RegisterNatives来注册与类相关联的本地方法。在Android中对于一些底层平台相关的native函数大多采用注册关联的方式来调用。
系统启动后两个重要的process:
1:App_main process: 进程通过AndroidRuntime调用register_jni_procs向JNI注册模块的native函数供JVM调用。
2:Mediaserver proces:进程注册了以下几个server:
AudioFlinger, MediaPlayerServer;CameraService.

Android Camera Application调用native 函数流程:
首先Android Runtime调用register_android_hardware_Camera注册Camera相关的navtive函数到JNI。然后调用android_hardware_Camera_native_setup为Application创建一个client 通过openCameraHardware打开设备,并连接到CameraServer。Application 开启preview的过程与Application建立到CameraService之间连接相似。这个过程如下图:clip_image002

从上面可以看出在JAVA VM 与native之间存在一个非常重要的连接层JNI即JAVA Native Interface。Android1.0平台提供了Camera相关的native接口,如果这些接口不够的话,通过这种机制我们可以方便的进行扩展,但是我们自己扩展的接口是与我们的硬件平台相关的,并不是Android官方支持的。网上有人说Android1.0不支持JNI,Android无法执行本地JNI调用,但从Android源码来看是乎不存在这种情况,至少是支持注册与类相关联的本地方法。

clip_image004

Android Architecture

JAVA process 与Native process之间的通信
Native process姑且认为是以c,c++语言编写服务程序(是独立的一个进程)。JAVA process是通常说的Android Application。还是Camera模块为例。我们要建立Camera Object,与CameraService Object之间的通信。
JAVA Application调用native_setup在CameraService中创建了一个Camera客户端,客户端通过getCameraService取得CameraSevice中的IBinder对象,为JAVA Application 与CamerService之间建立了一个接口ICameraService,通过这个接口我们调用BpCameraService::connect 实际上通过前面取得的IBinder对象将调用CameraService::onTransact函数在这个函数中再调用BnCameraSrvice::onTransact至此JAVA Application与CameraService之间的消息管道建立完毕。

clip_image006

上图中,Camera.jar Camera.cpp,ICamera, ICameraService的对象都属于java application process,当两个object之间的通信建立完毕,java application通过ICamera接口向CameraService中Camera Client发送消息。
在Native层,不同进程间两个对象需要传递消息需要继承IBinder接口,如果一个对象只需要发起连接可以继承IBinder的扩展接口BpInterface,如果需要接受连接请求可以继承BnInterface接口,比如在ICamera.cpp中有两个接口BpCamera与BnCamera,BpCamera用于发送消息,BnCamera由CameraService继承,最近消息响应通过BnCamera调用CameraService::client对象处理消息。
AudioRecord,AudioFinger,MediaPlayer其底层接口实现方式与Camera类似。

分享到:
评论

相关推荐

    android Camera模块分析

    在Android系统中,Camera模块是实现拍照、录像等相机功能的核心组件。本文将详细解析Android Camera模块的架构和底层通信机制。 首先,Android应用程序主要使用Java编写,但系统的一些核心服务,如Camera服务,通常...

    Android Camera问题资料

    2. **Android Camera模块分析**: 这个文档可能深入剖析了Android Camera模块的工作原理,包括相机硬件接口、软件栈、Camera服务以及如何通过API与应用程序交互。这有助于开发者理解如何正确地配置和使用Camera API...

    Android camera模块代码分析

    ### Android Camera模块代码分析 #### 一、Android Camera模块概述 Android系统中的Camera模块主要用于处理视频输入,其设计目的是为了使应用程序能够轻松访问并利用摄像头功能。为了达到跨平台兼容的目的,...

    android framework camera分析

    通过上述分析可以看出,Android Camera模块的设计十分灵活且高效。它不仅提供了一套完整的框架供开发人员使用,还允许针对特定硬件进行定制化开发。开发者可以通过实现`CameraHardwareInterface`接口来适配不同的...

    android camera模块

    在Android平台上,相机模块是应用程序开发中的一个重要组成部分,它允许用户捕获照片、录制视频,并进行各种图像处理操作。本文将深入探讨Android相机的实现原理、图像处理技术,以及如何调节色调、饱和度和透明度。...

    android Camera框架分析.pdf

    Android Camera 框架分析 Android 的 Camera 系统是一个复杂的系统,包括取景(preview)和拍摄照片(take picture)的功能。 Camera 框架分析可以分为两个部分:Camera 构架分析和 Camera 工作流程概述。 一、...

    Android Camera 模块

    Android Camera 模块架构与实现 Android Camera 模块是 Android 系统中的一個重要组件,负责管理和控制 Camera 硬件。从架构上来看,Camera 模块可以分为客户端和服务器两个部分,它们之间使用 Binder 机制实现进程...

    Android camera 资料合集(物有所值)

    Camera模块解析驱动.pdf Android Camera的接口与架构介绍.pdf 第七章_Android_Camera架构.pdf 学习camera framework 总结.pdf Android框架下Camera的设计与实现.pdf android_Camera框架分析.pdf

    Android camera架构介绍

    ### Android Camera 架构...通过以上分析,我们可以看到 Android Camera 架构是如何通过不同层次的协同工作来实现相机功能的。这种分层的设计不仅提高了系统的可扩展性,也为开发者提供了更加灵活和高效的开发接口。

    androidCamera框架分析.pdf

    2. **库文件**:Camera模块主要包括libandroid_runtime.so、libui.so和libcameraservice.so。libui.so提供上层接口,尤其是Camera类。libcameraservice.so是服务器端的核心,实现与硬件的交互。libandroid_runtime....

    V40 camera模块使用说明

    文档中详细介绍了Camera模块的功能、相关术语、配置方法、源码结构、Android和系统配置,以及调试接口使用方法和模块调试中常见的问题。 首先,文档概述部分提到编写该说明的目的,是为了让camera驱动及应用层的...

    Android_Camera分析

    本文将深入分析Android的Camera模块,包括其架构设计、关键组件及工作流程,以帮助开发者更好地理解和应用这一功能。 #### 一、Camera架构分析 Android的Camera架构被精心设计,以确保高效性和灵活性。其核心在于...

    androidcamera系统架构源码分析.docx

    Android Camera系统架构源码分析是Android系统中Camera模块的核心组件之一,负责摄像头的图像捕获、处理和存储。下面我们将对Android Camera系统架构源码进行分析,了解其内部机制和关键组件。 一、ImgBufQueue类 ...

    Android Camera 架构学习(Binder)

    其中,Camera Framework 是 Android 操作系统中负责处理 CAMERA 相关功能的框架,Camera HAL 是 CAMERA 硬件抽象层,Camera Client 是应用程序与 Camera Framework 之间的接口。 Camera Architecture(Binder 机制...

    androidCamera框架分析定义.pdf

    下面是关于Android Camera框架的详细分析: 一、Camera架构 1. **库文件结构**: - `libandroid_runtime.so`:这是Android运行时库,不仅服务于Camera,还支持其他功能。 - `libui.so`:位于核心位置,提供...

    Android Camera Framework

    整个Android Camera Framework是一个高度模块化和层次化的系统,它允许开发者从应用程序层编写少量的代码来访问和控制底层复杂的相机硬件。通过清晰定义的接口和协议,Camera HAL允许制造商可以为自己的设备定制具体...

    android camera HAL资料及V4L2资料(含V4L2例程)

    《Android相机HAL与V4L2详解》 在Android系统中,相机功能是不可或缺的一部分...提供的文档资源,如《Android Camera结构分析》、《Android Camera HAL设计初步》以及V4L2资料,将为深入探索这些主题提供宝贵的参考。

Global site tag (gtag.js) - Google Analytics