private static HiWorld hiWorld = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
hiWorld = this;
if (detectOpenGLES20()) {
// get the packageName,it's used to set the resource path
String packageName = getApplication().getPackageName();
super.setPackageName(packageName);
// set content
setContentView(R.layout.game_demo);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,
R.layout.window_title);
mGLView = (Cocos2dxGLSurfaceView) findViewById(R.id.game_gl_surfaceview);
mGLView.setTextField((Cocos2dxEditText) findViewById(R.id.textField));
mGLView.setEGLContextClientVersion(2);
mGLView.setCocos2d
xRenderer(new Cocos2dxRenderer());
task = new TimerTask() {
@Override
public void run() {
// HiWorld.shoot(hiWorld);
Log.e("-------------------", "-------------------");
// 调用c++中的方法
System.out.println("------------------------"
+ stringZjy1());
}
};
timer = new Timer();
timer.schedule(task, 5000);
} else {
Log.d("activity", "don't support gles2.0");
finish();
}
static {
System.loadLibrary("game");
}
// c++中 用的方法
public static Object rtnActivity() {
System.out.println("----------rtnActivity");
return hiWorld;
}
// c++中 用的方法,传String类型
public void showText(final String msg) {
// 添加到主线程
hiWorld.runOnUiThread(new Runnable() {
public void run() {
System.out.println("----------msg:"+msg);
}
});
}
//c++中 用的方法,传String类型和int类型
public String showText(final String msg,final int index) {
// 添加到主线程
hiWorld.runOnUiThread(new Runnable() {
public void run() {
System.out.println("----------msg:"+msg+"; index="+index);
}
});
return "okey String showText(final String msg,final int index)";
}
//c++中 用的方法,传String[]类型和int类型
public String[] showText(final String[] msg,final int index) {
String[] strArr = {"1","2","3","4","5"};
// 添加到主线程
hiWorld.runOnUiThread(new Runnable() {
public void run() {
for(String _str:msg){
System.out.println("----------String[] msg:"+_str+"; index="+index);
}
}
});
return strArr;
}
//c++中 用的方法,传int[]类型和int类型
public void testArr(final int msg[],final int index) {
// 添加到主线程
hiWorld.runOnUiThread(new Runnable() {
publi
C++调用Java(四)
y(len,minfo.env->FindClass("java/lang/String"),0);
for(i=0;iNewStringUTF(sa[i]);
minfo.env->SetObjectArrayElement(args,i,str);
}
//minfo.env->GetStringArrayRegion(args,0,10,buf);
//jintArray jmsg = {1,2,3};
//minfo.env->NewStringUTF("msg okey! return string");
jint index = 0;
minfo.env -> CallObjectMethod(jobj,minfo.methodID,args,index);
}*/
/* 测试用方法,无返回类型,有java类型的int[]和int参数方法 */
/*isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","testArr", "([II)V");
if (isHave) {
jint buf[]={7,5,8,9,3};
jintArray jintArr; //定义jint数组
jintArr = minfo.env->NewIntArray(5);
minfo.env->SetIntArrayRegion(jintArr,0,5,buf);
jint index = 0;
minfo.env -> CallVoidMethod(jobj,minfo.methodID,jintArr,index);
}*/
/* 测试用方法,无返回类型,有java类型的byte[]和int参数方法 */
isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","testArr", "([BI)V");
if (isHave) {
jbyte buf[]={7,5,8,9,3};
jbyteArray jbyteArr; //定义jbyte数组
jbyteArr = minfo.env->NewByteArray(5);
minfo.env->SetByteArrayRegion(jbyteArr,0,5,buf);
jint index = 0;
minfo.env -> CallVoidMethod(jobj,minfo.methodID,jbyteArr,index);
}