如源码java文件:
frameworks/base/Java下 :
android.hardware.Camera:
有方法:
private native final void native_release();
如果调用次方法会直接进jni的方法?
cpp文件:
frameworks/base/jni下:
android_hardware_Camera.cpp:
有方法:
void JNICameraContext::release()
{
   //内容不说
}如何新加一个自己jni方法?
我的做法:java文件:
frameworks/base/Java下 :
android.hardware.Camera:
新建方法:
private native final int native_new_method();cpp文件:
frameworks/base/jni下:
android_hardware_Camera.cpp:
新的方法:
static jint native_new_method(JNIEnv *env, jobject clazz){
jint ntextright = 1000;
return ntextright;
}并加入:
static JNINativeMethod method_table[] = {
    { "native_release","()V",(void*)android_hardware_Camera_release }, //之前的那个方法也再这里注册了
    { "native_new_method", "()I", (void*)native_new_method},           //为我们的方法注册
};
但是我怎么每次调用都会报连接没有定义的错误(UndefinitionLinkError)?

解决方案 »

  1.   

    UndefinitionLinkError?
    你有把实现的native方法和头文件加mk文件一起编译成so库供自己调用吗??
      

  2.   

    在java文件调用的地方也要load一下so文件的
      

  3.   

    需要registry一下你的这个method_table吧
      

  4.   


    我全局make生成的system.img文件  不行吗?
      

  5.   


    我是直接再系统源码当中做的   想帮它多添加个jni方法    
      

  6.   

    都是要通过调用so来实现jni方法的
    你编译的整个img 文件,你可以看下system/lib下面有没有你的那个so
      

  7.   

    你可以用mm来编译指定模块,也就是你要实现的jni方法,编译成so文件供自己调用
      

  8.   

    我的意思是编译成system.img 然后讲这个system.img刷机  调用那个自己 添加的jni方法  UndefinitionLinkError
      

  9.   

    我在做相机开发,想设置其焦距
    Camera.getParameters().isZoomSupported() -->true
    Camera.getParameters().isSmoothZoomSupported() -->false这种情况下,我怎么才能实现变焦呢??