美文网首页
JNI回调java方法

JNI回调java方法

作者: 跟跟_a5e9 | 来源:发表于2017-12-04 11:50 被阅读0次

    要回调java 类结构

    public class TrackBox {
        public String boxId;   
        public int x;       //中心点的x坐标         
        public int y;       //中心点的y坐标            
        public String localPath; //本地路径    
        /*public TrackBox() {     }*/    
    
      public TrackBox(String boxId, int x, int y, String localPath) {    
          this.boxId = boxId;                 
          this.x = x;                 
          this.y = y;                       
          this.localPath = localPath;        
      }      
    
      public void setBoxId(String boxId) {        
        this.boxId = boxId;        
      }
    }
    

    第一步:获得java类的class

    clazz = env->FindClass("com/example/track/TrackBox");
    

    第二步:获得class的实例对象

    //先获得构造方法的MethodID
    jmethodID boxMethod = env->GetMethodID(clazz, "<init>", "(Ljava/lang/String;IILjava/lang/String;)V");
    jstring boxID = env->NewStringUTF("1");
    jint x = 20;
    jint y = 30;
    jstring local = env->NewStringUTF("abc");
    jobject obj = env->NewObject(clazz, boxMethod, boxID, x, y, local);
    

    第三步:调用TrackBox 的setBoxId方法

    //先获得setBoxId 的MethodID
    jmethodID boxMethodID = env->GetMethodID(clazz, "setBoxId", (Ljava/lang/String;)V);
    jstring boxID = env->NewStringUTF("1");
    //调用
    env->CallObjectMethod(obj, boxMethodID, boxID);
    

    ------------------------分割线-----------------------------------
    有些情况是直接从java方法传递过来对象,例如接口回调
    那就省去第一步和第二步

    相关文章

      网友评论

          本文标题:JNI回调java方法

          本文链接:https://www.haomeiwen.com/subject/xmfgbxtx.html