欧美自拍小视频_国产片在线免费观看_中文字幕啪啪_成人av高清在线_欧美一区二区视频免费观看_亚洲国产激情

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:Android學習開發4--Android在C++中調用java(3)

1樓
wangxinxin 發表于:2010-12-3 11:51:12

5.2 java類的實例化
都知道java需要 obj var = new obj();這樣一個過程,我們在C++中調用java類的成員函數,當然也要先示例話一個類。
示例化的函數如下所示
jobject getInstance(JNIEnv* env, jclass obj_class)
{
    jmethodID construction_id = env->GetMethodID(obj_class, "<init>", "()V");
    jobject obj = env->NewObject(obj_class, construction_id);
    return obj;
}
這個函數中的env表示環境參數,jclass表示一個java類的句柄。
jmethodID construction_id = env->GetMethodID(obj_class, "<init>", "()V");
GetMethodID的參數分別為(類句柄,方法名稱,參數名稱)
這個是為了獲取java類中某個方法的句柄,有一點需要特別注意的,在獲取構造方法的句柄和別的方法的句柄是不一樣的。
獲取一般方法的句柄所填寫“方法名稱”參數直接就是這個方法的名稱,而構造函數的話就必須填寫"<init>"。除了這點區別外,就沒有區別了。
而我們的“參數名稱”似乎寫的就有些奇怪了。但是細說下他的規律也就不怪了。
參數名稱的書寫規則為 (參數1類型,參數2類型….)返回類型。而相應類型的表示如下所示
圖片點擊可在新窗口打開查看

比如我們要找個int func(double)類型的函數,就該這么寫:
jmethodID construction_id = env->GetMethodID(obj_class, " func ", "(D)I");
找到了構造函數的方法之后我們直接調用構造函數,然后把生成的類返回即可
jobject obj = env->NewObject(obj_class, construction_id);
其中obj_class為類的句柄construction_id為構造函數的句柄,而類的實例被該函數返回。

5.3 調用java類的其他函數
JNIEXPORT jstring JNICALL Java_com_hm_hello_CActivityMain_stringFromJNI
(JNIEnv* env, jobject)
{
   jstring str;
   jclass java_class = env->FindClass("com/hm/hello/CForCall");
    if (java_class == 0)
    {
       return env->NewStringUTF("not find class!");
    }
   jobject java_obj = getInstance(env, java_class);
   if (java_obj == 0)
   {
       return env->NewStringUTF("not find java OBJ!");
   }
   jmethodID java_method = env->GetMethodID(java_class, "GetJavaString", "()Ljava/lang/String;");
   if(java_method == 0)
   {
       return env->NewStringUTF("not find java method!");
   }
   str = (jstring)env->CallObjectMethod(java_obj, java_method);
   return str;
}
看完了構造函數的介紹,這段代碼其實很容易就看懂了,我們發現調用java中的函數的步驟無非幾步:
1找到類句柄
2找到類的方法的句柄
3實例化類
4調用實例化類的方法。
而以上代碼中只有一段沒說過,就是
jclass java_class = env->FindClass("com/hm/hello/CForCall");
看名字就知道,是在找相應的類的句柄,其中com.hm.hello準備調用類的完整包名(把.轉換為/),而CforCall就是我們要調用的類的名稱。
至此,編譯,然后在Android調試,可愛的機器人又出現了,哈哈,屏幕上顯示出現了12345,成功!

共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .01563 s, 2 queries.
主站蜘蛛池模板: 亚洲国产日韩欧美 | 四虎影院国产精品 | 男人猛吃奶女人爽视频 | 熟妇女人妻丰满少妇中文字幕 | 欧美性天天影院欧美狂野 | 国产一区亚洲二区三区毛片 | 人人澡人人曰人人摸看 | 久久人人爽人人人人爽av | 欧美最猛黑人xxxxx猛交 | a在线观看欧美在线观看 | 91影视在线观看 | 精品国产三级a∨在线欧美 精品国产三级a在线观看 | 久久伊人中文字幕 | 女人被男人躁得好爽免费视频 | 青青草国产成人久久91网 | 亚洲三区在线观看内射后入 | 亚洲欧美第一成人网站7777 | 久久精品爱国产免费久久 | 精品人妻潮喷久久久又裸又黄 | 大地资源在线观看官网第三页 | 国产最新自拍视频 | a免费观看 | 男人的天堂亚洲 | 亚洲高清在线观看播放 | 99久热在线精品视频播放6 | 精品日韩欧美国产一区二区 | 精品日韩一区二区 | 国产精品国产成人国产三级 | 曰韩免费视频 | 欧美日韩亚洲一区二区三区 | 亚洲欧美二区三区久本道 | 四虎成人网 | 久久夜色精品国产噜噜麻豆 | 亚洲精品毛片久久久久久久 | 国产精品卡一卡二卡三 | 毛片一区二区三区 | 成人黄18免费网站 | 亚洲国产成人无码av在线播放 | 亚洲精品免费在线 | 亚洲午夜精品久久久久久人妖 | 亚洲精品高清在线一区二区三区 |