Instead of doing JNI calls, send Android messages between NDK and Framework threads.
There is the setup of MessageHandler on both sides, but long term they are more productive than JNI boilerplate.
One example would be SDL, although they use a mix of JNI and messages (search for SDLCommandHandler).
http://hg.libsdl.org/SDL/file/abb47c384db3/android-project/a...
http://hg.libsdl.org/SDL/file/abb47c384db3/src/core/android/...
EDIT: Sorry forgot about the C side (counterpart is Android_JNI_SendMessage).