🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
MediaScanner(简称“MS”)的JNI层代码在android_media_MediaScanner.cpp中,如下所示: **android_media_MediaScanner.cpp** ~~~ //①这个函数是native_init的JNI层实现。 static void android_media_MediaScanner_native_init(JNIEnv *env) { jclass clazz; clazz= env->FindClass("android/media/MediaScanner"); ...... fields.context = env->GetFieldID(clazz, "mNativeContext","I"); ...... return; } //这个函数是processFile的JNI层实现。 static void android_media_MediaScanner_processFile(JNIEnv*env, jobject thiz,jstring path, jstring mimeType, jobject client) { MediaScanner*mp = (MediaScanner *)env->GetIntField(thiz, fields.context); ...... constchar *pathStr = env->GetStringUTFChars(path, NULL); ...... if(mimeType) { env->ReleaseStringUTFChars(mimeType, mimeTypeStr); } } ~~~ 上面是MS的JNI层代码,不知道读者看了以后是否会产生些疑惑? 我想,最大的疑惑可能是,怎么会知道Java层的native_init函数对应的是JNI层的android_media_MediaScanner_native_init函数呢?下面就来回答这个问题。