1.cpp掉java非static方法 无参数 无返回值  

 (1).头文件引入

  1. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)  
  2. #include   
  3. #include "platform/android/jni/JniHelper.h"  
  4. #include   
  5. #endif   

 

(2).按钮事件代码

调用非静态方法的关键代码 

CallStaticVoidMethod

getMethodInfo 

  1. void HelloWorld::menuCloseCallback(CCObject* pSender) {  
  2.     JniMethodInfo minfo;  
  3.     bool isHave = JniHelper::getMethodInfo(minfo,  
  4.             "org/test/ActivityTest""playVedio""()V");  
  5.     if (isHave) {  
  6.         minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);  
  7.     }  
  8. }

 

(3).java非static方法

  1. void playVedio()  
  2.     {  
  3.           
  4.         System.out.println(" playVedio  playVedio  playVedio  ");  
  5.           
  6.     }  

 

2. cpp调用java static方法

cpp 

getStaticMethodInfo

CallStaticVoidMethod

CallStaticIntMethod

 

 

CallStaticObjectMethod

 

string(string) 

            
  1. void HelloWorld::menuCloseCallback(CCObject* pSender) { 
  2.     bool isHave; 
  3.     const char* msgRet; 
  4.     JniMethodInfo minfo; 
  5.     const char* fileName = "testWei"
  6.  
  7.     isHave = JniHelper::getStaticMethodInfo(minfo, "org/test/MoneyStatic"
  8.             "sendWeibo""(Ljava/lang/String;)Ljava/lang/String;"); //string参数返回string
  1.     if (isHave) { 
  2.         jstring jTitle = minfo.env->NewStringUTF(fileName); 
  3.         jobject obj = minfo.env->CallStaticObjectMethod(minfo.classID, 
  4.                 minfo.methodID, jTitle); 
  5.         jstring jRet = (jstring) obj; 
  6.         msgRet = (minfo.env)->GetStringUTFChars(jRet, NULL); 
  7.     } 

 

int(int)

bool isHave = JniHelper::getStaticMethodInfo(minfo, "org/test/MoneyStatic" "buyNumber""(I)I");

jint  _int = minfo.env->CallStaticIntMethod(minfo.classID, minfo.methodID 333);

void(void)

bool isHave = JniHelper::getStaticMethodInfo(minfo, "org/test/MoneyStatic" "judgeUsers", "()V");

minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID); 

java

            
  1. //string(string)
  2. public static String sendWeibo(String pCon) { 
  3.  
  4.         System.out.println("sendWeibo  :  " + pCon); 
  5.         Message msg = mHandler.obtainMessage(); 
  6.         msg.what = Demo.SHOW_DIALOG; 
  7.         msg.sendToTarget(); 
  8.  
  9.         return ""
  10.  
  11.     } 

    //int(int)

  12. public static int buyNumber(int _int) {

    System.out.println("buyNumber  :  " + _int);
  13.  return _int+1000;

  14. }

 

3.java调用cpp

原理:通过native调用cpp的可以返回参数

java

 public static native void cardJudge(int pJudge); //其他方法调用此方法 类名.方法名

 public static native void displayProgress(String numString); //

cpp 

 

//pJudge上面传过来的参数

//org_test包名、MoneyStatic类名、cardJudge方法名

 

返回参数int

extern "C" {

void Java_org_test_MoneyStatic_cardJudge(JNIEnv *env, jobject thiz,  jint pJudge){

if (pJudge == 1) {

} else { }

}

}

返回参数string 

extern "C" {

void Java_org_mm_MyStatic_displayProgress(JNIEnv *env, jobject thiz, jstring text) {

const char* pszText = env->GetStringUTFChars(text, NULL);

}

}

 

 4.转换

http://blog.csdn.net/lizhiguo0532/article/details/7219357

 (1) jstring-->const char*  

const char* pszText = env->GetStringUTFChars(text, NULL);

(2)const char*--> jstring  

 

jstring str = env->newStringUTF("HelloJNI");

 

(3)jint --- int 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

更多相关文章

  1. Android-NDK开发之基础--Android(安卓)JNI实例代码(四)-- JNI中
  2. android基础面试
  3. Android(安卓)判断是否能真正上网(避免连入wifi无网的状态)【亲
  4. SmartImageView初接触
  5. android对界面某一部分进行截图的方法
  6. Android在桌面创建快捷方式
  7. Android(安卓)AIDL实现跨进程Activity与Service的通信
  8. Android(安卓)Studio 编译慢解决方法
  9. 【Android(安卓)开发教程】Fragment的生命周期

随机推荐

  1. android之ContentProvider和Uri详解
  2. Android学习路线(二十八)保存文件
  3. Android设备之间通过Wifi通信的示例代码
  4. Android App多个入口的实现方法
  5. 开发自己的监控系统三、移动篇(android)
  6. Android应用市场付费比例35% 天气应用最
  7. Android仿人人客户端(v5.7.1)——新鲜事之
  8. ANDROID中按键的添加配置(linux按键到andr
  9. Android平台架构及特性(1)
  10. 解决scrollview嵌套ImageView时,出现除顶