(转)JNI参数传递|Surface

http://blog.csdn.net/stefzeus/article/details/6622011

char* Get_Surface(JNIEnv *env, jclass cls, jobject param, int sdk_version)
{
        // Java层
        jfieldID surface = env->GetFieldID(cls, "mSurface", "Landroid/view/Surface;");
        jobject surface_cls = env->GetObjectField(param, surface);

        // Native层
       jclass surface_class = env->FindClass("android/view/Surface");
       jfieldID surface_native = env->GetFieldID(surface_class, "mSurface", "I"); //"I"指整型

        // the JNI also supports other functions such as GetIntField and SetFloatField for accessing instance fields of primitive types.
        return (char*)(Surface*)env->GetIntField(surface_cls, surface_native);

}

理解GetIntField
(char*)(Surface*)env->GetIntField(surface_cls, surface_native);

Once you have obtained the field ID, you can pass the object reference and the field ID to the appropriate instance field access function:

 jstr = (*env)->GetObjectField(env, obj, fid);
时间: 2024-10-25 06:41:00

(转)JNI参数传递|Surface的相关文章

java与c/c++之间的数据交互-----jni点滴

淡泊明志.宁静致远 A Diamond is just a piece of Coal that did well under Pressure. java与c/c++之间的数据交互-----jni点滴[转] 最近作一个tiemsten数据库的项目,用到了jni技术.在这个项目中,我们用java来写界面和业务逻辑,用c语言写数据库odbc访 问.单纯的odbc其实没有什么难的,但是在java和c之间进行数据传递是比较麻烦的事情.两者之间数据的传递有这样几种情况:java和c之间基本数 据类型的交

Jni中C++和Java的参数传递

Jni中C++和Java的参数传递 如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:利用VC++6.0实现JNI的最简单的例子 JNI入门教程之HelloWorld篇SUN JNI Tutorial谢谢大家的回复,有人说类型不对,己修正.类型请参照: http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.

java JNI 二维数组作为方法参数传递给本地

java里面有如下本地定义: private static native int setFilter(final int fd, final int[][] array_filter); c++中对应的函数如下: JNIEXPORT jint JNICALL Java_JniSocketCan_setFilter  (JNIEnv *env, jclass obj, jint fd, jobjectArray array_filter){    struct can_filter *pFilte

Android : Camera HAL3的参数传递(CameraMetadata)

一.camera_metadata简介 Camera API2/HAL3架构下使用了全新的CameraMetadata结构取代了之前的SetParameter/Paramters等操作,实现了Java到native到HAL3的参数传递.引入了管道的概念将安卓设备和摄像头之间联系起来,系统向摄像头发送 Capture 请求,而摄像头会返回 CameraMetadata,这一切建立在一个叫作 CameraCaptureSession 的会话中. 二.Framework到HAL层的转换 Camera2

【转】 Android的NDK开发(1)————Android JNI简介与调用流程

原文网址:http://blog.csdn.net/conowen/article/details/7521340 ******************************************************************************************** * author:[email protected]大钟                                                                      

JNI java 调c++动态库函数,多值回传及乱码问题

一,JNI java 调c++动态库函数的问题 1.多参数回传 2.参数传递出现乱码 二,解决 1.使用byte[]数组传入c++,在生成的头文件里就会变成jbyteArray 类型 例如,java 中参数:byte[]account,头文件里参数变成jbyteArray account, 通过c++修改完account的值后,java要获取该值,直接使用 jbyte* jbAccount = (env)->GetByteArrayElements(env, account, 0); char*

JNI 详解

JNI其实是Java Native Interface的简称,也就是java本地接口.它提供了若干的API实现了和Java和其他语言的通信(主要是C&C++).也许不少人觉得Java已经足够强大,为什么要需要JNI这种东西呢?我们知道Java是一种平台无关性的语言,平台对于上层的java代码来说是透明的,所以在多数时间我们是不需要JNI的,但是假如你遇到了如下的三种情况之一呢? 你的Java代码,需要得到一个文件的属性.但是你找遍了JDK帮助文档也找不到相关的API. 在本地还有一个别的系统,不

android6.0 Activity(四) Surface创建

 原文:http://blog.csdn.net/luoshengyang/article/details/8303098,原文代码比较老了,但是核心不变.在原文基础上修改了一些代码,以及加入自己少量的理解. 在上一篇博客中,我们分析了应用程序窗口连接到WindowManagerService服务的过程.在这个过程中,WindowManagerService服务会为应用程序窗口创建过一个到SurfaceFlinger服务的连接.有了这个连接之后,WindowManagerService服务就

cocos2d-x之jni使用(对接Android各种sdk)

游戏弄完了,要发布到各个平台,ios.Android是肯定少不了的,那么本文就来讲讲Android平台对接代理商付费sdk.各渠道.五大运营商.广告.分享.数据统计等等少不了的jni调用,接sdk真是各种麻烦事儿啊... 首先,这么多sdk,功能各有不同,所以得有一个统一的sdk管理类来管理,然后游戏中需要用到什么功能的时候调用指定接口,接口实现时,不同的平台在调用不用的sdk~ 然后,c++调用java层:(拿显示广告来举例) //===============================