貌似你还是要看jni
还是要那样做好像有个jna开源项目可以不写c文件

解决方案 »

  1.   

    1.对于C++的代码,一般需要引入jniUtils.h和onLoad.cpp两个文件,找一个通用的参考,然后在onload.cpp\JNI_OnLoad()函数中注册你的C++ Native 接口,比如
    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(...)使用了。
    }