1.创建工程,添加jni

2. main.cpp

#include

struct test_data

{

char name[256];

int num;

double average;

};

extern "C" {

JNIEXPORT jobject JNICALL Java_com_re_struct_MainActivity_call(JNIEnv * env, jobject obj, jobject classobj);

};

JNIEXPORT jobject JNICALL Java_com_re_struct_MainActivity_call(JNIEnv * env, jobject obj, jobject classobj)

{

jclass objectClass = env->FindClass("com/re/struct/test_data");

jfieldID name = env->GetFieldID(objectClass, "name", "Ljava/lang/String;");

jfieldID num = env->GetFieldID(objectClass, "num", "I");

jfieldID average = env->GetFieldID(objectClass, "average", "D");

env->SetObjectField(classobj, name, env->NewStringUTF("hello world"));

env->SetIntField(classobj, num, 10);

env->SetDoubleField(classobj, average, 2.5);

return classobj;

}

3. test_data.java

package com.re.struct;

public class test_data {

public String name;

public int num;

public double average;

}

4. MainActivity.java

package com.re.struct;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

public class MainActivity extends Activity {

static{

System.loadLibrary("main");

}

private native test_data call(test_data data);

private test_data data = new test_data();

private static final String TAG="######";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

data = call(data);

Log.e(TAG, "name:" + data.name);

Log.e(TAG, "num:" + data.num);

Log.e(TAG, "average:" + data.average);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

5. 效果:

6. 补充:

Java类型

符号

boolean

Z

byte

B

char

C

short

S

int

I

long

L

float

F

double

D

void

V

objects对象

Lfully-qualified-class-name;        L类名;

Arrays数组

[array-type [数组类型

methods方法

(argument-types)return-type(参数类型)返回类型

android jni 结构体_Android——- jni返回结构体-Fun言相关推荐

  1. jni java共享变量_Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量

    JNI访问 Java 实例变量和静态变量 Java 中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过类名.变量名来访问. ...

  2. C语言中函数如何返回结构体?

    //#include "stdafx.h"//If the vc++6.0, with this line. #include "stdio.h" #inclu ...

  3. 为什么C语言函数不能返回数组,却可以返回结构体?

    C语言函数为什么不能返回数组? 在C语言程序开发中,我们不可以编写下面这样的代码: char f(void)[8] { char ret; // ...fill... return ret; } in ...

  4. 为什么C语言函数不能返回数组,却可以返回结构体

    C语言函数为什么不能返回数组? 在C语言程序开发中,我们不可以编写下面这样的代码: char f(void[8]{ char ret;// ...fill... return ret; }int ma ...

  5. 关于返回结构体的函数

    [前言]写作本文,源于最近回复的 <汇编中函数返回结构体的方法> 一文.在网络上也已经有一些相关文章和相关问题,有的文章已经给出了一部分结果,但总体而言还缺少比较重要的结论.本文以分析 V ...

  6. c语言返回结构体,(C/C++) 用函数返回一个结构体

    方法一: 参数里含有指向指针的指针. 注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的.原因在于在编译的时候,会对入参p产生一个备份_p. 参考此文:http://www.c ...

  7. IOS 内购IAP 自动订阅收据验证返回结构体

    exclude-old-transactions 参数等于true时. 数据通过json_decode()转换后 1.首次订阅支付通过票据进行验单的返回结构体: Array ([status] =&g ...

  8. Android sdk-29版本上使用 jni mkdir创建文件夹失败返回-1

    Android sdk-29版本上使用 jni mkdir创建文件夹失败返回-1 + compileSdkVersion 29buildToolsVersion "29.0.2"d ...

  9. Android JNI(一)——NDK与JNI基础

    前言 ndk开发是高级Android 开发必备的技能,也是很多Android开发工程师难以逾越的门槛,因此,学习ndk开发已经是高级Android必备技能,所以我尝试把自己ndk开发经验记录下来,不知 ...

最新文章

  1. 关于 android 环信无法正确获取昵称的问题
  2. 输出200-299之间的所有素数
  3. 比特币base58源码解析_中本聪源码早期版本流出:区块链原名时间链,比特币内置虚拟扑克游戏...
  4. 8.类定义、属性、初始化和析构
  5. ML面试1000题系列(91-100)
  6. Tomcat系列(4)——Tomcat 组件及架构详细部分
  7. 安装linux后找不到系统文件夹,安装ubuntu时“没有定义根文件系统”错误
  8. Tortoise SVN 汉化(官网下载汉化包)
  9. 微型计算机安装调试维修中级题库,调试维修工中级题库(答案).doc
  10. Endnotex8 运行时出现错误 unknown error -0xA84c的解决办法
  11. R语言读取(加载)txt格式数据为dataframe、按照指定字段(数据列)对dataframe进行升序排序(ascending)、返回行索引的位置向量
  12. 离散数学中关于自反与反自反的通俗解释
  13. dft中X(K)的k的含义
  14. 3分钟为你的应用添加声波通讯功能
  15. 苹果各版本手机更换电池的视频
  16. Java-AQI计算
  17. 使用python实现mysql测试数据的准备(大批量导入数据)
  18. 图解Java数据结构之双向链表
  19. 泰凌微蓝牙芯片8267 SRAM剩余大小以及是否溢出----分析计算方法
  20. 学生免费领取、配置阿里云服务器

热门文章

  1. 沼跃鱼早已看穿了一切 C/C++
  2. An Introduction to Our Code Breaking Team
  3. cp命令的编写——浅谈系统调用
  4. 自学笔记:计时器Chronometer
  5. 如何删除隐藏着的网卡
  6. CMOS图像传感器——图像传感器噪声
  7. PrimeTime指南——概述和基本流程
  8. stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。
  9. faster rcnn学习之rpn训练全过程
  10. android自定义画板,android 自定义控件 -- 画板