首页 > 编程语言 >Android游戏开发cocos2d-x调用Java层代码

Android游戏开发cocos2d-x调用Java层代码

时间:2022-12-27 10:32:26浏览次数:46  
标签:jni Java 导入 cocos2d msg methodInfo Android message


通过JNI调用
准备工作:
首先用VS工程导入$cocos2d_Root\cocos2dx\platform\android\jni\JniHelper.h
接着导入$Java\jdk1.6.0_10\include\jni.h
再导入$Java\jdk1.6.0_10\include\win32\jni_md.h
C++层代码
通过JNI调用
准备工作:
首先用VS工程导入$cocos2d_Root\cocos2dx\platform\android\jni\JniHelper.h
接着导入$Java\jdk1.6.0_10\include\jni.h
再导入$Java\jdk1.6.0_10\include\win32\jni_md.h
C++层代码
在点击事件中添加如下代码


#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)//条件编译语句
{
const char *message = "坑爹";//需要传递到Java层的字符串
JniMethodInfo methodInfo;
bool isHave = JniHelper::getStaticMethodInfo(methodInfo,
"com/kengdie/test/Test",//需要调用的Java文件
"showMessageFromNative",//调用的方法名
"(Ljava/lang/String;)V");//参数
if(isHave){
CCLog("the showMessage method is exits");
jstring StringArg = methodInfo.env->NewStringUTF(message);
methodInfo.env->CallStaticVoidMethod(methodInfo.classID, methodInfo.methodID, StringArg);
}else{
CCLog("the showMessage method is not exits");
}
}
#endif


Java层代码


public class Test extends Cocos2dxActivity{
......
private static LinkUp context;
......
protected void onCreate(Bundle savedInstanceState){
......
context = this;
......
}
public static void showMessageFromNative(String message){ Message msg = new Message();
msg.what = 1;
msg.obj = message;
handler.sendMessage(msg);
}
static Handler handler = new Handler(){
@Override
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
String message = (String) msg.obj;
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
break;
default:
break;
}
};
};
}


注:C++代码需要保存为UTF-8

标签:jni,Java,导入,cocos2d,msg,methodInfo,Android,message
From: https://blog.51cto.com/u_15923385/5971516

相关文章

  • Android .SO 文件的兼容和适配
    开发Android应用时,有时候Java层的编码不能满足实现需求,就需要到C/C++实现后生成SO文件,再用System.loadLibrary()加载进行调用,这里成为JNI层的实现。常见的场景如:......
  • 第十四届模拟赛第二期试题【Java解析】
    目录​​✏️写在前面​​​​✨历史回顾​​​​......
  • android源代码在线查看
    国内网络在线查看:​​http://androidxref.com/​​​ ​​​https://www.androidos.net.cn/sourcecode​​​ ​​​https://github.com/aosp-mirror​​Android官方的网......
  • JAVA学习网站
    英文网站http://www.javaalmanac.com-Java开发者年鉴一书的在线版本.要想快速查到某种Java技巧的用法及示例代码,这是一个不错的去处.http://......
  • JAVA中如何实现代码优化(技巧讲解)
    1.用String.format拼接字符串不知道你有没有拼接过字符串,特别是那种有多个参数,字符串比较长的情况。比如现在有个需求:要用get请求调用第三方接口,url后需要拼接多个参数。以......
  • Java——方法
    Java——方法什么是方法?System.out.println(),那么它是什么呢?1.System是一个类,out是一个staticPrintStream对象。由于它是"静态"的,所以不需要我们创建任何东西,所以只需......
  • 利用java实现QQ空间相册特效,一段代码就能搞定了哦!
    利用java实现QQ空间相册特效,一段代码就能搞定了哦!Hi,大家好,我是小雨!微信和QQ是目前主流的两款社交工具。有人说微信已经完全替代了QQ,已经没有人玩QQ了。但是小雨却不这么认......
  • java——IO流
    文件的基本操作什么是文件?文件就是保存数据的地方,比如大家经常使用的word文档,txt文档,Excel文件。。。。 在我们java编程中会经常提到流的概念,这里的流指的就是文件流......
  • rk字符串匹配算法java实现
      /***rk字符串匹配算法,主要引入了hash的概念,*利用子串的hash值依次对比主串相应长度的子串hash值*并对hash值相同的子串进行匹配对比*/publicclassRKS......
  • Java基础类String学习分析
    目录1String不可变性2不可变的好处3String+和StringBuilder效率差异4String,StringBufferandStringBuilder5String与JVM内存管理6Stringapi方法1String不可变......