转载请标明出处:
http://blog.csdn.net/michael1112/article/details/56672288

江东橘子的博客

前面讲到了Java和native数据类型,这里就开始做一下使用:

第一步:新建工程

第二步:书写 java方法:

public class NativeMethod {static {System.loadLibrary("com_nedu_jni_jnidemo5-jni");
    }public native boolean getBoolean(boolean b);

    public native byte getByte(byte b);

    public native char getChar(char c);

    public native short getShort(short s);

    public native int getInt(int i);

    public native long getLong(long l);

    public native float getFloat(float f);

    public native double getDouble(double d);
}  

第三步:调用javah命令生成h文件。

第四步:补充native方法,如下

#include<stdio.h>
#include <stdlib.h>
#include "com_nedu_jni_jnidemo5_NativeMethod.h"    

/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getBoolean
 * Signature: (Z)Z
 */
JNIEXPORT jboolean JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getBoolean(JNIEnv *e, jobject thiz, jboolean b){return b;
}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getByte
 * Signature: (B)B
 */
JNIEXPORT jbyte JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getByte(JNIEnv *e, jobject thiz, jbyte by){return by;
}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getChar
 * Signature: (C)C
 */
JNIEXPORT jchar JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getChar(JNIEnv *e, jobject thiz, jchar c){return c;

}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getShort
 * Signature: (S)S
 */
JNIEXPORT jshort JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getShort(JNIEnv *e, jobject thiz, jshort s){return s;
}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getInt
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getInt(JNIEnv *e, jobject thiz, jint i){return i;
}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getLong
 * Signature: (J)J
 */
JNIEXPORT jlong JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getLong(JNIEnv *e, jobject thiz, jlong l){return l;
}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getFloat
 * Signature: (F)F
 */
JNIEXPORT jfloat JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getFloat(JNIEnv *e, jobject thiz, jfloat f){return f;
}/*
 * Class:     com_nedu_jni_jnidemo5_NativeMethod
 * Method:    getDouble
 * Signature: (D)D
 */
JNIEXPORT jdouble JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getDouble(JNIEnv *e, jobject thiz, jdouble d){return d;
} 

第五步 调用native 方法

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView text=(TextView)findViewById(R.id.text);
    NativeMethod method=new NativeMethod();

    text.setText("返回boolean:"+method.getBoolean(true)+"\n"+"返回byte:"+method.getByte((byte) 0)+"\n"+"返回char:"+method.getChar('c')+"\n"+"返回short:"+method.getShort((short) 1)+"\n"+"返回int:"+method.getInt(1)+"\n"+"返回long:"+method.getLong(9)+"\n"+"返回float:"+method.getFloat((float) 1.0)+"\n"+"返回double:"+method.getDouble(2.0)+"\n");
} 

运行结果:

总结:JNI中传过来的java基本类型可以直接使用。

/**
* @author 江东橘子
* 邮箱:whtchl@126.com
*/

Android JNI入门第六篇——基本数据类型使用相关推荐

  1. Android JNI入门第五篇——基本数据类型使用

    前面讲到了java和native数据类型,这里就开始做一下使用: 第一步:新建工程 第二部:书写 java方法: [java] view plaincopyprint? public class Na ...

  2. Android JNI入门第六篇——C调用Java

    本篇将介绍在JNI编程中C调用Java实现. ×××地址:http://download.csdn.net/detail/xyz_lmn/4868265 关键代码: java: public clas ...

  3. Android JNI入门第七篇——C调用Java

    关键代码: java: [java] view plaincopy print? public class CCallJava { public static String getTime() { L ...

  4. Android JNI入门第五篇——Android.mk分析

    转载请标明出处: http://blog.csdn.net/michael1112/article/details/56671708 江东橘子的博客 Android.mk文件是在使用NDK编译C代码时 ...

  5. Android JNI入门第四篇——jni头文件分析

    转载请标明出处: http://blog.csdn.net/michael1112/article/details/56666407 江东橘子的博客 一. 首先写了java文件: public cla ...

  6. Avalonia跨平台入门第六篇之Grid动态分割

    前面玩耍了ListBox多选,今天在他的基础上对Grid进行动态分割;这个效果其实在Xamarin中已经实现过了;其实都没太大区别;直接看效果吧: 在ListBox中选择了具体的布局后进行Grid布局 ...

  7. java script 6 折线_Java入门第六篇:Java script(js)的事件

    [js中的事件分类] 1.鼠标事件 onclick.ondbclick.onmouseover.onmouseout 等 2.HTML事件: onload/onunload/onsubmit/onre ...

  8. WPF入门第六篇 WPF的Binding

    WPF的Binding 在传统的Windows软件中,大部分都是UI驱动程序的模式,也可以说事件驱动程序.WPF作为Winform的升级,它把UI驱动程序彻底改变了,核心回到了数据驱动程序的模式上面, ...

  9. Android入门第七篇之ListView (二)

    Android入门第六篇之ListView (一) ,讲的是如何制作一个具有两行文本的 自定义控件 ,作为ListView的Item的使用方法.这篇接下来也是围绕ListView和Item,更加深入地 ...

最新文章

  1. 单链表-两个线性表的合并1(破环原链表+尾插法)
  2. pythonurllib微博登录怎么删_Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据...
  3. 【cocos2d-x 手游研发----地图活起来了】
  4. php中mysqli用法举例
  5. 存储过程不可以封装_【小知识】功率半导体器件之10功率器件的封装可靠性
  6. java freemarker_Java: FreeMarker的配置和使用
  7. MYSQL数据库中导入中国各个省份编号和省份
  8. django ajax 简书,Django中ajax上传图片详细步骤
  9. NiFi 1.16.3 生产使用的更新及BUG。
  10. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3, 编程找出 1000 以内的所有完数。
  11. 增加关键词密度不要堆积
  12. 传说中的100句子记忆7000单词(51-100句)
  13. 铁威马F2-NAS2评测(家用云存储NAS)
  14. Linux(6)RedHat7 基本命令五-hwclock(clock)命令详解
  15. 新零售mysql设计 订单表 订单详情表
  16. 控制科学与工程(自动化)保研经验【2】——南开、同济篇
  17. Insert语句的语法
  18. splice、slice详解
  19. 24.线程系列- google提供的一些好用的并发工具类
  20. 作为一个技术Leader,要如何去提升团队的技术氛围

热门文章

  1. vue点击改变data值_vue 中自定义指令改变data中的值
  2. centos重启网络失败Job for network.service failed,ping不通网络
  3. 在此服务器找不到请求的url,在此服务器上找不到请求的URL /.阿帕奇
  4. mysql查询数字比字符串快,与字符串相比,MySQL在where子句中使用数字更快吗?
  5. MATLAB读取二进制文件------fread
  6. serverless mysql_Serverless 解惑——函数计算如何访问 MySQL 数据库
  7. IsIconic(判断窗口是否最小化)
  8. C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
  9. 第 6 章 Harddisk IO
  10. 安全漏洞“心脏出血”继续 原因是“丘比特”