JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)(四)

2014-11-24 07:25:48 · 作者: · 浏览: 3

if (isHave) {
jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
}
//CCLog(" jobj存在");
/* 测试用方法,非静态无参数无返回值方法 */
/*isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "()V");
if (isHave) {
minfo.env -> CallVoidMethod(jobj,minfo.methodID);
}*/
/* 测试用方法,非静态有java类型的String参数无返回值方法 */
/*isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "(Ljava/lang/String;)V");
if (isHave) {
jstring jmsg = minfo.env->NewStringUTF("msg okey!");
minfo.env -> CallVoidMethod(jobj,minfo.methodID,jmsg);
}*/
/* 测试用方法,返回java类型的String,有java类型的String和int参数方法 */
/*isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "(Ljava/lang/String;I)Ljava/lang/String;");
if (isHave) {
jstring jmsg = minfo.env->NewStringUTF("msg okey! return string");
jint index = 0;
minfo.env -> CallObjectMethod(jobj,minfo.methodID,jmsg,index);
}*/
/* 测试用方法,返回java类型的String[],有java类型的String[]和int参数方法 */
/*isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "([Ljava/lang/String;I)[Ljava/lang/String;");
if (isHave) {
jobjectArray args = 0;
jstring str;
jsize len = 5;
const char* sa[] = {"Hi,","World!","JNI ","is ","fun"};
int i = 0;
args = minfo.env->NewObjectArray(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);
}
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.setCocos2dxRenderer(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