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

第一步:新建工程

第二部:书写 java方法:

  1. public class NativeMethod {
  2. static {
  3. System.loadLibrary("com_nedu_jni_jnidemo5-jni");
  4. }
  5. public native boolean getBoolean(boolean b);
  6. public native byte getByte(byte b);
  7. public native char getChar(char c);
  8. public native short getShort(short s);
  9. public native int getInt(int i);
  10. public native long getLong(long l);
  11. public native float getFloat(float f);
  12. public native double getDouble(double d);
  13. }

第三部:调用javac、javah命令生成h文件。

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

  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include "com_nedu_jni_jnidemo5_NativeMethod.h"
  4. /*
  5. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  6. * Method:    getBoolean
  7. * Signature: (Z)Z
  8. */
  9. JNIEXPORT jboolean JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getBoolean
  10. (JNIEnv *e, jobject thiz, jboolean b){
  11. return b;
  12. }
  13. /*
  14. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  15. * Method:    getByte
  16. * Signature: (B)B
  17. */
  18. JNIEXPORT jbyte JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getByte
  19. (JNIEnv *e, jobject thiz, jbyte by){
  20. return by;
  21. }
  22. /*
  23. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  24. * Method:    getChar
  25. * Signature: (C)C
  26. */
  27. JNIEXPORT jchar JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getChar
  28. (JNIEnv *e, jobject thiz, jchar c){
  29. return c;
  30. }
  31. /*
  32. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  33. * Method:    getShort
  34. * Signature: (S)S
  35. */
  36. JNIEXPORT jshort JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getShort
  37. (JNIEnv *e, jobject thiz, jshort s){
  38. return s;
  39. }
  40. /*
  41. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  42. * Method:    getInt
  43. * Signature: (I)I
  44. */
  45. JNIEXPORT jint JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getInt
  46. (JNIEnv *e, jobject thiz, jint i){
  47. return i;
  48. }
  49. /*
  50. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  51. * Method:    getLong
  52. * Signature: (J)J
  53. */
  54. JNIEXPORT jlong JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getLong
  55. (JNIEnv *e, jobject thiz, jlong l){
  56. return l;
  57. }
  58. /*
  59. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  60. * Method:    getFloat
  61. * Signature: (F)F
  62. */
  63. JNIEXPORT jfloat JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getFloat
  64. (JNIEnv *e, jobject thiz, jfloat f){
  65. return f;
  66. }
  67. /*
  68. * Class:     com_nedu_jni_jnidemo5_NativeMethod
  69. * Method:    getDouble
  70. * Signature: (D)D
  71. */
  72. JNIEXPORT jdouble JNICALL Java_com_nedu_jni_jnidemo5_NativeMethod_getDouble
  73. (JNIEnv *e, jobject thiz, jdouble d){
  74. return d;
  75. }

第五步:制作mk文件

  1. LOCAL_PATH := $(call my-dir)
  2. include $(CLEAR_VARS)
  3. LOCAL_MODULE    := com_nedu_jni_jnidemo5-jni
  4. LOCAL_SRC_FILES :=NativeMethod.c
  5. include $(BUILD_SHARED_LIBRARY)

第六步:调用native方法

  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.main);
  4. TextView text=(TextView)findViewById(R.id.text);
  5. NativeMethod method=new NativeMethod();
  6. text.setText("返回boolean:"+method.getBoolean(true)+"\n"+
  7. "返回byte:"+method.getByte((byte) 0)+"\n"+
  8. "返回char:"+method.getChar('c')+"\n"+
  9. "返回short:"+method.getShort((short) 1)+"\n"+
  10. "返回int:"+method.getInt(1)+"\n"+
  11. "返回long:"+method.getLong(9)+"\n"+
  12. "返回float:"+method.getFloat((float) 1.0)+"\n"+
  13. "返回double:"+method.getDouble(2.0)+"\n");
  14. }

运行截图:

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

/**
* @author 张兴业
* 邮箱:xy-zhang#163.com
* android开发进阶群:278401545
*
*/

Android JNI入门第五篇——基本数据类型使用的更多相关文章

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

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

  2. Android JNI入门第三篇——jni头文件分析

    一. 首先写了java文件: public class HeaderFile { private native void  doVoid(); native int doShort(); native ...

  3. Android JNI入门第四篇——Android.mk文件分析

    ndroid.mk文件是在使用NDK编译C代码时必须的文件,Android.mk文件中描述了哪些C文件将被编译且指明了如何编译.掌握Android.mk文件的编写主要是掌握其里头将要使用的一些关键字, ...

  4. JavaMail入门第五篇 解析邮件

    上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...

  5. Hadoop入门第五篇:Hive简介以及部署

    标签(空格分隔): Hadoop Hive hwi 1.Hive简介   之前我一直在Maxcompute上进行大数据开发,所以对数仓这块还算比较了解,在接受Hive的时候基本上没什么大的障碍.所以, ...

  6. Visualforce入门第五篇_2017.3.1

    Visualforce添加过滤器,实现数据的筛选 参考原文:https://trailhead.salesforce.com/modules/visualforce_fundamentals/unit ...

  7. JavaMail入门第四篇 接收邮件

    上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...

  8. JavaMail入门第三篇 发送邮件

    JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Mes ...

  9. java入门第五步之数据库项目实战【转】

    在真正进入代码编写前些进行一些工具的准备: 1.保证有一个可用的数据库,这里我用sql server 2000为例,2.拥有一个ide,如ecelise或myeclipse等,这里我使用的是myecl ...

随机推荐

  1. java使用验证码进行登录验证

    随机生成4位验证码,将生成的4位数字字母数字放入session private static void outputVerifyCode(HttpServletRequest request, Htt ...

  2. 1 2 5 10 20 --> 800

    用1元 2元 5元 10元 20元的钞票凑成800元的方法种数计算,使用了动态规划. 结果没打出来,只是保留在函数里各个vector中,调试可看所有结果. 优点:快 缺点:占空间占内存 耗时时间测试: ...

  3. Pro/Engineer wildfire 5.0 野火版系列下载及安装方法

    三.PTC Pro/Engineer wildfire 5.0 M030 野火版最新版 DVD 下载(多国语言) 1.野火下载站下载32&64位下载:[32位] http://down.pro ...

  4. 通过一个模拟程序让你明白WCF大致的执行流程

    原文http://www.cnblogs.com/artech/archive/2011/12/07/wcf-how-to-work.html 在<通过一个模拟程序让你明白ASP.NET MVC ...

  5. 关于webroot与web-inf

    struts.xml中配置redirect重定向路径的问题,要把转发的页面放到WebRoot下才能访问到,要是放在WEB-INF下面就访问不到.

  6. Android开发(26)--补间动画(Tween)的实现

    补间动画(Tween Animation) 补间动画与逐帧动画在本质上是不同的,逐帧动画通过连续播放图片来模拟动画的效果,而补间动画则是通过在两个关键帧之间补充渐变的动画效果来实现的.补间动画的优点是 ...

  7. uva 10763 Foreign Exchange(排序比较)

    题目连接:10763 Foreign Exchange 题目大意:给出交换学生的原先国家和所去的国家,交换成功的条件是如果A国给B国一个学生,对应的B国也必须给A国一个学生,否则就是交换失败. 解题思 ...

  8. java 学习 ——计算器小程序

    简易计算器小程序代码: package jisuanqi; //声明须要插入的包 import java.awt.*; import java.lang.Object; import java.lan ...

  9. dubbo架构演变之路

    背景 (#) 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时, ...

  10. R语言学习笔记之外部文件读取

    在win32位的系统下,RODBC包内的函数是可以直接运行的,但在win64位的系统则不支持! 1.读取外部文件read.table()---csv,txt,excel 最基本函数是read.tabl ...