android_hardware_Camera。cpp之中定义了一个JNINativeMethod(JAVA本地调用方法)类型的数组gMethods,以下所示:java
static JNINativeMethod camMethods[] = { {"native_setup","(Ljava/lang/Object;)V",(void*)android_hardware_Camera_native_setup }, {"native_release","()V",(void*)android_hardware_Camera_release }, {"setPreviewDisplay","(Landroid/view/Surface;)V",(void *)android_hardware_Camera_setPreviewDisplay }, {"startPreview","()V",(void *)android_hardware_Camera_startPreview }, {"stopPreview", "()V", (void *)android_hardware_Camera_stopPreview }, {"setHasPreviewCallback","(Z)V",(void *)android_hardware_Camera_setHasPreviewCallback }, {"native_autoFocus","()V",(void *)android_hardware_Camera_autoFocus }, {"native_takePicture", "()V", (void *)android_hardware_Camera_takePicture }, {"native_setParameters","(Ljava/lang/String;)V",(void *)android_hardware_Camera_setParameters }, {"native_getParameters", "()Ljava/lang/String;",(void *)android_hardware_Camera_getParameters } };JNINativeMethod的第一个成员是一个字符串,表示了JAVA本地调用方法的名称,这个名称是在JAVA程序中调用的名称;第二个成员也是一个字符串,表示JAVA本地调用方法的参数和返回值;第三个成员是JAVA本地调用方法对应的C语言函数。
register_android_hardware_Camera 函数将gMethods注册为的类"android/media/Camera",其主要的实现以下所示。android
int register_android_hardware_Camera(JNIEnv *env) { // Register native functions return AndroidRuntime::registerNativeMethods(env, "android/hardware/Camera", camMethods, NELEM(camMethods)); }"android/hardware/Camera"对应JAVA的类android。hardware。Camera。