Android JNI c/c++调用java的实例

 更新时间:2017年07月13日 16:29:07   作者:typename  
这篇文章主要介绍了Android JNI c/c++调用java的实例的相关资料,需要的朋友可以参考下

Android JNI c/c++调用java的实例

近期通过研究SDL源码 得出Android JNI  c/c++调用Java 无需新建虚拟机,这样省去很多步骤,这样调用Android JNI会变得非常容易,大家看下简单实例:

具体步骤如下

第一步获得:两个参数 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那边定义的函数的名字

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类型      对应的签名
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;

第三步 传递参数调用java 函数

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); 
///调用java函数 
 m_Env->CallStaticBooleanMethod(m_cls, midCreateGLContext,jarray); 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android自定义View实现游戏摇杆键盘的方法示例

    Android自定义View实现游戏摇杆键盘的方法示例

    Android进阶过程中有一个绕不开的话题——自定义View。最近在做项目中又遇到了,所以下面这篇文章主要给大家介绍了利用Android自定义View实现游戏摇杆键盘的相关资料,操作方式类似王者荣耀的摇杆操作,文中通过示例代码介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Android中监听未接来电的2种方法

    Android中监听未接来电的2种方法

    这篇文章主要介绍了Android中监听未接来电的2种方法,本文讲解了使用广播接收器 BrocastReceiver和使用 PhoneStateListener二种方法,需要的朋友可以参考下
    2015-04-04
  • Android实现可使用自定义透明Dialog样式的Activity完整实例

    Android实现可使用自定义透明Dialog样式的Activity完整实例

    这篇文章主要介绍了Android实现可使用自定义透明Dialog样式的Activity,结合完整实例形式分析了Android Activity自定义style的操作步骤与相关技巧,需要的朋友可以参考下
    2016-07-07
  • Android实现拍照添加时间水印

    Android实现拍照添加时间水印

    这篇文章主要为大家详细介绍了Android实现拍照添加时间水印,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Android仿淘宝物流追踪的实例代码

    Android仿淘宝物流追踪的实例代码

    本篇文章主要介绍了Android仿淘宝物流追踪的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • eclipse导入appcompat项目报错解决办法

    eclipse导入appcompat项目报错解决办法

    这篇文章主要介绍了eclipse导入appcompat项目报错解决办法的相关资料,需要的朋友可以参考下
    2017-04-04
  • Android ViewPager画廊效果详解及实例

    Android ViewPager画廊效果详解及实例

    这篇文章主要介绍了Android ViewPager画廊效果详解及实例的相关资料,这里提供实例代码及实现效果图,具有参考价值,需要的朋友可以参考下
    2016-12-12
  • Android应用App更新实例详解

    Android应用App更新实例详解

    现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新。该项目实现的就是这个功能。下面跟着小编一起来看下吧
    2017-03-03
  • flutter FadeTransition实现透明度渐变动画

    flutter FadeTransition实现透明度渐变动画

    这篇文章主要为大家详细介绍了flutter FadeTransition实现透明度渐变动画,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Android开发之如何自定义数字键盘详解

    Android开发之如何自定义数字键盘详解

    这篇文章主要给大家介绍了关于Android开发之如何自定义数字键盘的相关资料,本文语言是基于kotlin实现的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-09-09

最新评论