1.CallVoidMethod

static void android_media_MediaRecorder_setCamera(JNIEnv* env, jobject thiz, jobject camera)
{
    // we should not pass a null camera to get_native_camera() call.
    if (camera == NULL) {
        jniThrowNullPointerException(env, "camera object is a NULL pointer");
        return;
    }
    #ifdef MEIG_UVC_CAMERA
    jclass clz = env->GetObjectClass(thiz);
    jmethodID setCameraFromJni = env->GetMethodID(clz,"setCameraFromJni","(Landroid/hardware/Camera;)V");
    env->CallVoidMethod(thiz,setCameraFromJni,camera);
    #else
    sp<Camera> c = get_native_camera(env, camera, NULL);
    if (c == NULL) {
        // get_native_camera will throw an exception in this case
        return;
    }
    sp<MediaRecorder> mr = getMediaRecorder(env, thiz);
    process_media_recorder_call(env, mr->setCamera(c->remote(), c->getRecordingProxy()),
            "java/lang/RuntimeException", "setCamera failed.");
    #endif
}

2.CallObjectMethod 参数输入,参数返回

jclass clz = env->GetObjectClass(thiz);
jmethodID jsonSizesFromJni = env->GetMethodID(clz,"jsonSizesFromJni","(Ljava/lang/String;)Ljava/lang/String;");
jstring params_size = (jstring)env->CallObjectMethod(thiz,jsonSizesFromJni,env->NewStringUTF(size.string()));
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐