Android(java)学习笔记258:JNI之hello.c(c代码功能实现)指针语法解析
2015-09-16 10:48
936 查看
1. 接下来我们细讲分析一下前面一讲中,c功能实现的代码:
(1)hello.c :
• jstring :数据类型就是 void*(指向一个空区域,初始化的指针)
在jni.h文件下:
typedef void* jobject;
typedef jobject jclass;
typedef jobject jstring;
• JNIEnv* env :
JNINativeInterface struct :说明JNINativeInterface是个结构体
typedef const struct JNINativeInterface* JNIEnv; :说明JNIEnv是个结构体指针(这个结构体就是JNINativeInterface)
这个时候JNIEnv* env等价于:
JNINativeInterface** env; :也就是env定义为结构体指针的指针(双重指针)
如果想利用env访问JNINativeInterface结构体的成员[b]NewStringUTF(只不过这里的[b]NewStringUTF是一个函数指针)[/b]。[/b]
(**env).NewStringUTF(JNIEnv*, const char*);
(1)hello.c :
#include <jni.h> char* getHello() { //////// return "hello Android From C"; } //jni协议给java调用 // 返回类型 方法名(Java_包名(使用"_"把包名分割)_类名_方法名 (参数) //JNIEnv* env jni的结构体数据,jni系统实现 ; obj java对象 调用该jni方法的对象 jstring Java_com_himi_helloworld_MainActivity_getHelloFromC(JNIEnv* env, jobject obj) { char* res = getHello();//获取到C代码字符串结果 /** * (**env).GetVersion(env); * (*env)->GetVerison(env); */ //jstring (*NewStringUTF)(JNIEnv*, const chat*); jstring jres = (**env).NewStringUTF(env,res); return jres; }
• jstring :数据类型就是 void*(指向一个空区域,初始化的指针)
在jni.h文件下:
typedef void* jobject;
typedef jobject jclass;
typedef jobject jstring;
• JNIEnv* env :
JNINativeInterface struct :说明JNINativeInterface是个结构体
typedef const struct JNINativeInterface* JNIEnv; :说明JNIEnv是个结构体指针(这个结构体就是JNINativeInterface)
这个时候JNIEnv* env等价于:
JNINativeInterface** env; :也就是env定义为结构体指针的指针(双重指针)
如果想利用env访问JNINativeInterface结构体的成员[b]NewStringUTF(只不过这里的[b]NewStringUTF是一个函数指针)[/b]。[/b]
(**env).NewStringUTF(JNIEnv*, const char*);
相关文章推荐
- android之BitmapFactory.Options的使用
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
- 直接启动SDK Manager: $ADNROID_HOME/tools/android
- android Service(一)
- Android实现自定义View的自定义属性的一般步骤
- Android开发之应用管理(RecyclerView的不同position使用不同的View)
- android适配器模式
- emoji表情android,ios适配转换(二)
- 项目总结android studio——assets
- android.view.WindowManager$BadTokenException & Android – Displaying Dialogs From Background Threads
- Android 多媒体应用:开启摄像头、查看相册中的照片
- Android IOS WebRTC 音视频开发总结(四二)-- webrtc开发者大会
- android 6.0新功能
- Android EditText和TextView图文混排
- Android开发之头像上传(包含拍照,从相册选择图片,裁剪等)
- Android Studio 自定义属性,命名空间
- Android 多媒体应用:视频播放之VideoView与SurfaceView
- 项目总结——zxing扫描
- Android Handler练习
- Android进程回收的先后顺序