貌似你还是要看jni
还是要那样做好像有个jna开源项目可以不写c文件
还是要那样做好像有个jna开源项目可以不写c文件
解决方案 »
- android jni 用skia画图,运行后模拟器上没显示,求解啊
- 发个小贴!共享点资料!无需下载分!
- 菜鸟求助!!!!怎么固定ListView大小!!!!!!!
- 求一套能用的android开发环境
- 有没有办法制作固定宽与高的Dialog?
- 动态调整TextView宽度
- NullPointerException 的错误??
- 请问怎么及时更新用户头像
- android studio 新建项目 没有android 项目
- android关于ViewPager加载多个(多达1000个)Fragment黑屏现象。
- 如何能在apk下载安装后执行某些动作
- 简单问题,怎么在非Activity类里执行安装程序的操作
jint JNI_OnLoad(JavaVM* vm, void* reserved) {
.....
//注册Native接口函数
if(register_android_media_AVIGen(env) != JNI_OK) {
__android_log_print(ANDROID_LOG_ERROR, TAG, "can't load android_example_AVIGen");
goto end;
}
.....
}2. 新建一个文件实现register_android_media_AVIGen()函数
如新建c++文件 com_example_media_AVIGen.cpp,加入如下代码static void AVIGen_set_file(JNIEnv *env,jobject obj,jstring avi_file){
...
return;
}
/*
* JNI registration.
*/
static JNINativeMethod methods[] = {
{ "native_avi_set_file","(Ljava/lang/String;)V",(void*)AVIGen_set_file},
....
};
//关于(Ljava/lang/String;)V参数定义,可以参考
//http://zhougaofeng.ixiezi.com/2010/05/11/android-jni/int register_android_media_AVIGen(JNIEnv *env) {
return jniRegisterNativeMethods(env, "com/example/test/SaveJpegAVI", methods, sizeof(methods) / sizeof(methods[0]));
}特别注意com/example/SaveJpegAVI是你需要调用JNI Native函数的类的路径和名称,这样JNI ENV才知道该和哪一个Class去对应Native函数接口。3. 在AVIGen_set_file()中就可以实现JNI native函数的逻辑了,可以调用你目前的程序逻辑。4. 在生成.so后,放在工程目录的\libs\armeabi\,在Java中Load它,同时需要在对应的Java类中定义native的方法public class SaveJpegAVI {
//Load so 文件
static {
System.loadLibrary("AVIGen-jni");
}
//声明Native函数
private native void native_avi_set_file(String file_name);
...... //然后就可以直接Call native void native_avi_set_file(...)使用了。
}