Android framwork cpp调用java function
来源:互联网 发布:手机淘宝如何注销账户 编辑:程序博客网 时间:2024/04/27 02:30
这里以android_view_PointerIcon.cpp的函数getSystemIcon为例。
1、在gPointerIconClassInfo的结构体中,定义了jmethodID getSystemIcon,并且在
GET_STATIC_METHOD_ID(gPointerIconClassInfo.getSystemIcon, gPointerIconClassInfo.clazz,
"getSystemIcon", "(Landroid/content/Context;I)Landroid/view/PointerIcon;");
第一个传入参数会被初始化为java层的getSystemIcon引用,第三个参数即是java层函数名,第四个是java层函数的输入输出参数描述
3、使用:
1、在gPointerIconClassInfo的结构体中,定义了jmethodID getSystemIcon,并且在
register_android_view_PointerIcon中进行初始化设置;
static struct { jclass clazz; jfieldID mStyle; jfieldID mBitmap; jfieldID mHotSpotX; jfieldID mHotSpotY; jmethodID getSystemIcon; jmethodID load;} gPointerIconClassInfo;int register_android_view_PointerIcon(JNIEnv* env) { FIND_CLASS(gPointerIconClassInfo.clazz, "android/view/PointerIcon"); GET_FIELD_ID(gPointerIconClassInfo.mBitmap, gPointerIconClassInfo.clazz, "mBitmap", "Landroid/graphics/Bitmap;"); GET_FIELD_ID(gPointerIconClassInfo.mStyle, gPointerIconClassInfo.clazz, "mStyle", "I"); GET_FIELD_ID(gPointerIconClassInfo.mHotSpotX, gPointerIconClassInfo.clazz, "mHotSpotX", "F"); GET_FIELD_ID(gPointerIconClassInfo.mHotSpotY, gPointerIconClassInfo.clazz, "mHotSpotY", "F"); GET_STATIC_METHOD_ID(gPointerIconClassInfo.getSystemIcon, gPointerIconClassInfo.clazz, "getSystemIcon", "(Landroid/content/Context;I)Landroid/view/PointerIcon;"); GET_METHOD_ID(gPointerIconClassInfo.load, gPointerIconClassInfo.clazz, "load", "(Landroid/content/Context;)Landroid/view/PointerIcon;"); return 0;}
GET_STATIC_METHOD_ID(gPointerIconClassInfo.getSystemIcon, gPointerIconClassInfo.clazz,
"getSystemIcon", "(Landroid/content/Context;I)Landroid/view/PointerIcon;");
第一个传入参数会被初始化为java层的getSystemIcon引用,第三个参数即是java层函数名,第四个是java层函数的输入输出参数描述
2、register_android_view_PointerIcon是在AndroidRuntime.cpp中运行的;
extern int register_android_view_PointerIcon(JNIEnv* env);static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_view_MotionEvent), REG_JNI(register_android_view_PointerIcon), REG_JNI(register_android_view_VelocityTracker),};
3、使用:
jobject android_view_PointerIcon_getSystemIcon(JNIEnv* env, jobject contextObj, int32_t style) { jobject pointerIconObj = env->CallStaticObjectMethod(gPointerIconClassInfo.clazz, gPointerIconClassInfo.getSystemIcon, contextObj, style); if (env->ExceptionCheck()) { ALOGW("An exception occurred while getting a pointer icon with style %d.", style); LOGW_EX(env); env->ExceptionClear(); return NULL; } return pointerIconObj;}
1 0
- Android framwork cpp调用java function
- Camera framwork调用结构
- JAVA调用FUNCTION实例
- java c/cpp互相调用实例----------c/cpp调用java
- Java JNI 调用c/cpp
- Android Java Framwork显示Toast(无Activity和Service
- google android volley framwork
- linux/android sdcard framwork
- Java Collection FramWork
- Java Collection FramWork
- Oracle Function调用java代码
- java 程序调用Oracle Function
- java 程序调用Oracle Function .
- java 程序调用Oracle Function
- java c/cpp互相调用实例
- CPP通过JNI调用JAVA函数Demo
- java jni 调用cpp文件中的方法
- java调用cpp的jni规则
- rhel 6.3 建立centos yum
- Ubuntu 11.04 下安装极点五笔的方法
- 反映现实生活情感的一种艺术就是音乐
- 乐又是一种听觉艺术
- Cximage 切图部分代码mark
- Android framwork cpp调用java function
- mysql cluster 节点增加和减少
- 仿百度文库文档上传页面的多级联动分类选择器
- Opencv cvAbs函数
- POJ - 1101 The Game DFS
- 音乐作品不像文学或绘画那样
- Java 线程池
- Linux文件系统-3个重要数据结构及相互间的关系
- Coherence(2)配置