2.4 JNI层MediaScanner的分析
最后更新于:2022-04-02 05:48:11
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函数呢?下面就来回答这个问题。
';