文档介绍:Camera分析
话说camera模块,从上层到底层一共包含着这么几个部分:
1、 apk java 语言
2、 camera 的 java 接 U——java 语言
frameworks/base/core/java/android/hardware/
I 11 11 JI 1 L J l J
it zxg@ /home/zxg/N818S_bak/frameworks/base/core/java/android/hardware/
2014/9/26 15:06:00 156,762 bytes Java Source ▼ ANSI ▼ PC
311
public static Camera open() {
312
int numberOfCameras = getNumberOfCameras();
313
Cameralnfo cameralnfo = new Cameralnfo();
314
for (int i = 0; i < numberOfCameras; i++) {
315
getCameraInfo(cameralnfo);
316
if ( ==
■BACK) {
317
return new Camera(i);
318
}
319
}
320
return null;
321
322
}
123
Camera(int camerald) {
324
mShutterCallback = null;
325
mRawImageCallback = nullj|
32G
mDpegCallback = null;
327
mPreviewCallback = null;
328
mPostviewCallback = null;
329
330
mZoomListener = null;
321
Looper looper;
332
if ((looper = ()) != null) {
333
mEventHandler = new EventHandler(this, looper);
334
} else if ((looper = ()) != null)
335
mEventHandler = new EventHandler(this, looper);
i36
} else {
337
mEventHandler = null;
33&
}
340
native_setup(new WeakReference<Camera>(this)> camerald);
S41
342
}
3、camera 的 java 接11 的体实现,即所谓的 JNI (java—〉C++)
******@ /home/zxg/N818S-bak/frameworks/base/core/jni/android-hardware-
L4/9/26 15:06:00 34,656 bytes C,C++,C#,ObjC Source ▼ ANSI ▼ PC
467 static void android一hardware一 Camera一native_setup(]NIEnv *envj jobject thiz^
4©8 jobject weak—this, jint camerald)
40S {
sp<Camera> carera = Camera:: connect (camera Id);//i^fflp^l^frame^rks/base/libs/camera/Camera. cpp
471
if (camera == NULL) {
jniThrowRuntimeException(env> "Fail to connect to camera service");
native_setup(Object camera_this,int camerald);此处通过红色 native 字段叶以确定 native_setup 调用的就是 jni 接 •体实现丫这个函数,U:我们來符石它足足如何转接
这个函数的.
4、camera客户端 C++语言
20