WEB开发网
开发学院手机开发Android 开发 android Camera模块分析 阅读

android Camera模块分析

 2010-09-27 01:57:00 来源:WEB开发网   
核心提示:Android Camera Module Architecture and Bottom layer communication mechanism---albertChenAndroid应用程序编程语言是JAVA,而linux的很多服务程序,android Camera模块分析,包括一些libraries都是用c

Android Camera Module Architecture and Bottom layer communication mechanism

-----------albertChen

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之间连接相似。这个过程如下图:

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

Android Architecture

JAVA process 与Native process之间的通信

Native process姑且认为是以c,c++语言编写服务程序(是独立的一个进程)。JAVA process是通常说的Android Application。还是Camera模块为例。我们要建立Camera Object,与CameraService Object之间的通信。

1 2  下一页

Tags:android Camera 模块

编辑录入:coldstar [复制链接] [打 印]
赞助商链接