前面讲到了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. nginx gzip on

    # Gzip settings. gzip on; gzip_http_version 1.0;默认值是1.1 gzip_comp_level ; #压缩级别,1压缩比最小处理速度最快,9压缩比最大但 ...

  2. tag标签添加删除并把值存入到一个input的value内

    html: <input type="text" id="tagValue" style="display: none;" /> ...

  3. python基础学习笔记5--对象

    对象(object) 1.对象(object): 面向对象程序设计重要术语. 对象的特性:多态性.封装性.继承性 >>def add(x,y): return x+y 对于很多类型的参数都 ...

  4. Win7下超级管理员创建普通权限任务

    已转至新的博客 http://www.raysoftware点击打开链接.cn/?p=49 项目中用到一个功能,Win7下超级管理员创建普通权限任务. 试了几种办法,例如获取资源管理器的Token,然 ...

  5. Android studio之更改快捷键及自动导包

    更改AS中的代码提示快捷键,AS做的也挺智能的,在Keymap中可以选择使用eclipse的快捷键设置,但是虽然设置了,对有些快捷键还是不能使用,那么就需要我们手动去修改了. 在代码提示AS默认的快捷 ...

  6. 转 C语言面试题大汇总

    转 C语言面试题大汇总,个人觉得还是比较全地!!! \主 题:   C语言面试题大汇总,个人觉得还是比较全地!!!  作 者:   free131 (白日?做梦!)   信 誉 值:   100    ...

  7. HDU 3336 Count the string

    题解:利用next数组来保存前缀位置,递推求解. #include <cstdio> #include <cstring> char pat[200005]; int next ...

  8. 用css3画企鹅

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...

  9. Web Service 入门例子

    在网上很常见的一个列子,实现计算器,看完总得自己练练,不然一段时间不接触又忘了 新建一个空网页,因为.net framework 4.0 不能直接建web 服务,只能在项目中添加 然后在项目中添加We ...

  10. Objective-c 字典对象

    oc 中的 NSDictionary 的作用同 java 中的字典类相同,提供了 “键-值”对的组合.比如,是用字典类实现对学生姓名和学号的存放,编号是一个键(唯一性),姓名是值.它的方法有: 下面通 ...