I've found that in the source code of VLC, the JNI calls are clearly defined (by "native" keyword), while the reverse JNI calls are not clearly defined. For example, on line 232 of libvlcjni.c, this call is not well defined in Java (if someone mistakenly change the code of that Activity, something terrible would happen).
I believe a better solution is to add an interface in Java to make the reverse JNI calls clear. Since interface is created, the developers have to obey the rules created by C program developers.
PS. Another question, is there any way (for example, Github), to contact with developers directly?