欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android JNI c/c++調(diào)用java的實(shí)例

 更新時(shí)間:2017年07月13日 16:29:07   作者:typename  
這篇文章主要介紹了Android JNI c/c++調(diào)用java的實(shí)例的相關(guān)資料,需要的朋友可以參考下

Android JNI c/c++調(diào)用java的實(shí)例

近期通過(guò)研究SDL源碼 得出Android JNI  c/c++調(diào)用Java 無(wú)需新建虛擬機(jī),這樣省去很多步驟,這樣調(diào)用Android JNI會(huì)變得非常容易,大家看下簡(jiǎn)單實(shí)例:

具體步驟如下

第一步獲得:兩個(gè)參數(shù) JNIEnv和jclass

void Java_com_Test_Audio_Init( JNIEnv* env,jclass cls, jobject thiz ) 
{ 
 InitJNI(env,cls); 
} 
bool InitJNI(JNIEnv* env,jclass cls) 
{ 
 m_Env=env; 
 m_cls=cls;  
} 

第二步

獲得java那邊定義的函數(shù)的名字

jmethodID midCreateGLContext = env->GetStaticMethodID(cls,"Test_Audio","([B)Z"); 
midCreateGLContext = m_Env->GetStaticMethodID(m_cls,"Test_Audio","([B)Z"); 
midInitSound=m_Env->GetStaticMethodID(m_cls,"init","()V"); 
midLoadSound=m_Env->GetStaticMethodID(m_cls,"load","(Ljava/lang/String;I)V"); 
midLoadMedia=m_Env->GetStaticMethodID(m_cls,"load","(Ljava/lang/String;)V"); 

ava類型      對(duì)應(yīng)的簽名
boolean Z
byte B
char C
shrot S
int I
long L
float F
double D
void V
Object L用/分割包的完整類名;  Ljava/lang/String;
Array [簽名       [I       [Ljava/lang/String;

第三步 傳遞參數(shù)調(diào)用java 函數(shù)

char *str="god_is_a_girl.mp3"; 
char str[]="nihao"; 
 jbyte *by = (jbyte*)str; 
 jbyteArray jarray = m_Env->NewByteArray(strlen(str)); 
 m_Env->SetByteArrayRegion(jarray, 0, strlen(str), by); 
///調(diào)用java函數(shù) 
 m_Env->CallStaticBooleanMethod(m_cls, midCreateGLContext,jarray); 

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論