范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C语言回调java代码

  说明:
  在实际开发中,调用的本地方法不一定会在当前的类中,以此种形式,示例如下:
  创建工程,指定布局文件(3个点击按钮),对应3个方法:
  一、c调用java空方法
  二、c调用java中带有两个int参数的方法
  三、c调用java中参数为String的方法
  1、创建调用的方法
  在其他类中创建3个调用的方法【helloFromJava(); Add();printString()】
  2、创建3个本地方法
  在其他类中创建本地方法:
  如在DataProvider类中:
  //本地方法
  public native void nativeCallback1();
  public native void nativeCallback2();
  public native void nativeCallback3();
  3、生成头文件
  ①cd到当前工程文件src的目录中
  ②使用javah编译为.h文件,会在src目录下生成.h文件
  ③将.h文件拷贝到jni目录下,在jni中创建对应的.c文件
  4、配置.mk文件
  ①Android.mk:
  LOCAL_PATH := $(call my-dir)
  include $(CLEAR_VARS)
  LOCAL_MODULE := Hello #在静态代码块加载数据链接库时的参数
  LOCAL_SRC_FILES := com_itheima20_ndk4_DataProvider.c
  LOCAL_LDLIBS += -llog
  include $(BUILD_SHARED_LIBRARY)
  ②Application.mk:
  APP_ABI := x86
  5、加载数据链接库
  static{
  //加载链接库
  System.loadLibrary("Hello");
  }
  6、写c代码,分别调用三个方法:
  一)、调用空方法:
  1)、指定方法所在类的类名
  由于给linux系统查找的,是需要将点改为斜杠
  如:char* classname = "com/itheima/callback/DataProvider";
  2)、找到指定方法所在类
  //使用jclass (*FindClass)(JNIEnv* env, const char*)
  3)、在指定的类中找指定的方法
  使用jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
  参数1:JNIEnv:jni上下文对象
  参数2:jclass:指定在哪个类中查找方法
  参数3:const char*:指定查找的方法名称
  参数4:const char*:方法签名
  返回值:imethodID:查询到的方法ID
  4)、执行方法
  使用方法:void (*CallVoidMthod)(JNIEnv*, jobject, jmethodID...)
  参数2:jobject:调用方法的java对象
  参数3:jmethodID:要执行的方法
  参数4:…..可变参数,根据V前括号中是否传递参数指定
  Tips:
  其中的obj代表dataProvider对象,即调用本地方法的对象
  代码:
  //调用空方法
  JNIEXPORT void JNICALL Java_com_itheima_callback_DataProvider_nativeCallback1
  (JNIEnv * env, jobject obj){
  //1、指定方法所在类的类名
  char* classname = "com/itheima/callback/DataProvider";
  //2、找到指定方法所在类
  //使用jclass (*FindClass)(JNIEnv*, const char*)
  jclass clazz = (**env).FindClass(env, classname);
  //3、在指定的类中,查找指定的方法
  //使用jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
  jmethodID method = (**env).GetMethodID(env, clazz, "helloFromJava", "()V");
  //4、执行方法
  //使用方法:void (*CallVoidMthod)(JNIEnv*, jobject, jmethodID...)
  (**env).CallVoidMethod(env, obj, method);
  }
  二)、c调用java中带有两个int参数的方法
  使用的方法:jint (*CallIntMethod)(JNIEnv*, jobject, jmethodID, …)
  JNIEXPORT void JNICALL Java_com_itheima_callback_DataProvider_nativeCallback2
  (JNIEnv * env, jobject obj){
  //1、指定方法所在类的类名
  char* classname = "com/itheima/callback/DataProvider";
  //2、找到指定方法所在类
  //使用jclass (*FindClass)(JNIEnv*, const char*)
  jclass clazz = (**env).FindClass(env, classname);
  //3、在指定的类中,查找指定的方法
  //使用jmethodID (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
  jmethodID method = (**env).GetMethodID(env, clazz, "add", "(II)I");
  //4、执行方法
  //使用方法:void (*CallVoidMthod)(JNIEnv*, jobject, jmethodID...)
  int result = (**env).CallIntMethod(env, obj, method, 5, 20);
  LOGI("result = %d", result);
  }
  三)、c调用java中参数为String的方法
  注意:中文乱码问题
  JNIEXPORT void JNICALL Java_com_itheima_callback_DataProvider_nativeCallback3
  (JNIEnv * env, jobject obj){
  //1、指定方法所在类的类名
  char* classname = "com/itheima/callback/DataProvider";
  //2、找到指定方法所在类
  jclass clazz = (**env).FindClass(env, classname);
  //3、在指定类中,查找指定的方法
  jmethodID method = (**env).GetMethodID(env, clazz, "printString", "(Ljava/lang/String;)V");
  //4、执行方法
  //将java字符串转换为C的字符串
  char* cstr = (**env).NewStringUTF(env, "C调用了java中的方法");
  (**env).CallVoidMethod(env, obj, method, cstr);
  }
  7、交叉编译:ndk-build,刷新工程
  8、创建提供本地方法的类的对象,调用其中的方法,执行
  如:创建DataProvider对象,调用nativeCallback1方法
  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  provider = new DataProvider();
  }
  //C调用java空方法
  public void click1(View view){
  provider.nativeCallback1();
  }
  //C调用java中的带两个int参数的方法
  public void click2(View view){
  provider.nativeCallback2();
  }
  //C调用java中参数为string的方法
  public void click3(View view){
  provider.nativeCallback3();
  }

滴滴退市背后的信号中国不再需要华尔街滴滴退市!相关话题这几天在市场上不断发酵。纽约时报也对此事进行了报道,并发文称滴滴从美国退市发出一个信号中国不再需要华尔街!作为世界第二大经济体,中国拥有充足的资金,吸引更多外资也如何免费搭建内部知识库系统?比较快的方式是在你机器上安装docker,然后再到dokerhub上找个知识库系统的镜像,然后把镜像启动起来就好了。这中间有什么疑问可以留言,我有空完善一下。一流的SaaS业务在内买手机不要抠搜,目前这4部旗舰机最值得买,畅玩三五年不卡顿想要手机用得久,就不应该省钱,更不要抠搜,毕竟一分钱一分货,所以你直接给自己安排旗舰机就好了。换一个说法,买旗舰机或许还更省钱,你买个两三千的手机,用个两三年就又要换新手机了,又开租货轮建机队高薪佣工亚马逊这样克服物流危机据西班牙经济学家报网站报道,亚马逊本应被历史上最大的货运危机吓得瑟瑟发抖。但是,由杰夫贝索斯创立的这家公司没有受到太大影响,反而部署了一整套战略,从目前的形势中变得更加强大。在美国多线程中无法注入ServiceMapper等接口Slf4jpublicclassSpringUtilimplementsApplicationContextAwareprivatestaticApplicationContext川观评论知网,学术垄断的生意别太过了来源四川日报川观新闻川观新闻评论员刘志杰拿我的知识去赚钱,89岁的中南财经政法大学退休教授赵德馨,前段时间和知网打起了官司,他起诉知网擅自收录他的100多篇论文,他没拿到一分钱稿费拥有一台thinkpad是一种怎样的体验?至于电脑的体验,我觉得贵的电脑那体验自然是更好,对于您使用一台半国产电脑,我觉得可以用几个字来形容,骄傲,自豪。在2006年买过ThinkPadT60,当时IBM刚刚将笔记本电脑业百度竞价怎么做?您好一看问题,这又是一个超级大的问题,能问这种问题的想必你也不是老手,那我就从大的思维方向给你简单介绍一下1。首先要建立清晰的营销思维,所谓思维不对努力白费。,做百度竞价更是在营销曝6。3英寸屏幕小屏旗舰小米12X,小米11面临低价疯抢,网友欢呼曝光新一代旗舰级别小米12系列将有三款机型闪亮登场,其中小屏旗舰小米12X新机是一款6。3英寸屏幕手机,小屏旗舰小米12X新机搭载骁龙870处理器,标准版小米12和高配置旗舰新机小身边的人都在用高端机,而自己拿着千元低端机。是一种什么感受?我用的就是千元的低端机,红米的,没感觉比别人矮半截。也有朋友惊诧过,说你挣那么多钱,为啥不买个好的呢?我回答说红米的功能足够我用了。再说,你不是喜欢看我的微语吗?它们可都是用红米发台湾芯片封测厂商比拼电动车业绩,明年扩展车用芯片比重据台湾中央社12月12日报道,汽车电子化和电动车应用带动半导体芯片需求,后段封测台湾厂商也积极扩展车用比重,包括日月光投控南电顺德界霖中探针等,明年扩充电动车芯片封测业绩。据报道,
8。1小米线上直播见面会小米手机816感恩季活动8月2号小米线上直播见面会,这次将会带给我们1雷军担任第一期主讲人这是一档专为米粉打造的全新视频直播栏目2小米官方重要信息即将发布雷总想要亲口告诉你,敬请期待3神秘主讲团在线集结你雷军将于八月十号时候展开小米年度演讲诈尸?锤子升级安卓11科技两分钟爆料我全知,欢迎收看本期子楠科技的子楠资讯。喜欢的话,就点个关注吧。雷军将于8月10日时候展开小米年度演讲雷军公布今年的年度演讲重点1。目前考虑每年都办一场年度演讲2。演张国富北京越野将赋予越野文化新定义和生态引言十万公里正青春,包含的不仅仅是北京越野BJ系列产品的超高稳定可靠安全耐造在系列官方配套改装等服务的加持下,BJ系列车主用户的玩法改法也将得到持续升级,你的爱车也可以越开越新越改最便宜的电动版保时捷?Macan命不久矣在保时捷首款纯电车型Taycan成功亮相市场之后,另一款纯电SUV也将被锁定。不过这次并不是新开发的车型,而是在保时捷品牌中销量仅次于卡宴的车型Macan。据扉旅汽车小编获悉,保时圈粉的蔚来为什么卖不动车了?洗牌,在新能源市场频频现身。不仅送走了众多PPT车企,如今仍不断迭新,在这个魔幻的市场下,王座从不属于任何一家车企。9月初,又是一轮洗牌日。蔚来,也再一次在排名中,被刷了下来,离曾第二代长安CS55PLUS,为了轻年的UP真是操碎了心新UP打开方式?9月6日,长安汽车第二代CS55PLUS上市发布会在重庆举行,官宣正式上市。提起重庆这个城市,你会想到什么?山城雾都火锅?其实还有年轻。它不是上海广州那般快节奏的年向东平担起江铃福特背锅侠扶阿斗?在汽车圈,似乎任何一位舵手都能找到与之匹配的形容词。如果没有,就说他是汽车某某领域的全才。8月23日,被媒体冠以汽车营销全才的向东平加盟江铃汽车,担任江铃汽车副总裁兼江铃福特乘用车KiWiEV,宝骏神话的又一次尝试?五菱宏光MINIEV的成功,让不少车企动了向微型电动车领域拓展的心思。而这一次的主角,正是同门师兄宝骏。近日,宝骏KiWiEV上市,其探讨度异常热闹。其一,宝骏能否再成神车?其二,王传福缺乏将才,比亚迪人才基石不稳内斗严重?引言一山不容二虎,同一体系里久而久之内耗内卷会加重。王传福的分权而治,既是顺应业务需求,更是深刻洞察人心的无奈之举。从夏治冰到侯雁,从舒酉星到赵长江,从赵长江再到路天张卓李云飞高子长安欧尚X7PLUS炼成记,赛道同时约架蔚小理?真金不怕火炼,长安欧尚X7PLUS赛道一挑三!众所周知,1015万元价位的SUV市场,是国产品牌兵家必争之地,为了不断巩固在这一细分市场的江湖地位,包括长安欧尚在内的各大厂商,纷纷陆逸接棒杨嵩三个月,长安福特要靠营销战术求生?引言三十年河东河西。过了几年苦日子的长安福特,现在明显加快了产品的更新换代及电动智能网联化的转型步伐,还能逆袭上演王者归来吗?产品是船,营销是帆,产品力不行的时候,该咋办?近年来在