JNI回调java方法

要回调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方法传递过来对象,例如接口回调
那就省去第一步和第二步

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,068评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,822评论 25 708
  • 我最喜欢的一本书是《假如给我三天光明》。这本书的主人公,是历史著名人物:海伦·凯勒。 每当我翻开这本书...
    梦雅爱吃糖阅读 306评论 0 0
  • 我还没意识到呢,突然让我发觉我真的长大了的,是倏然间来到我面前,我曾经觉得十分遥远的事。 所以,爱...
    尾星阅读 361评论 0 0
  • 每一个人自打出生,其实容貌是确定了的。因为都有的XY染色体已经各就其位了,除非后天改变,我想。这已经是板上钉钉改变...
    跟我一起走吧阅读 392评论 0 0

友情链接更多精彩内容