前面讲到了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. BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )

    考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...

  2. Collections之sort的两个方法(自然排序和自定义比较器排序)

    Collections是个服务于Collection的工具类(静态的),它里面定义了一些集合可以用到的方法. 本文演示了Collections类里sort()的两个方法.第一种只需传入被排序的集合,便 ...

  3. Hbase Region Server 启动失败

    错误如下:Master rejected startup because clock is out of sync org.apache.hadoop.hbase.ClockOutOfSyncExce ...

  4. 一句话美化你的下拉框之jQuery.selectMM插件

    之前很喜欢 jquery.Dropkick 这个老外美化框插件,但是:IE情况下如果数据多滚动条出现的时候就滚不了,作者也没修复 于是准备自己写一款(确切的说是修改一款吧!!).这款插件是在16素材网 ...

  5. ListView 条目加载上滑下滑首尾缩放动画实现

    要实现这个效果,只需要再适配器getView之前,给每个条目的view设置相应的动画即可. 首先需要2个动画的xml文件. 在res下新建anim文件夹:(res/anim) 第一个动画xml文件: ...

  6. Android 仿360桌面小人

    首先自定义FloatsWindowView,用于显示动画小人. import android.annotation.SuppressLint; import android.content.Conte ...

  7. 一周学会Mootools 1.4中文教程:(7)汇总收尾

    转眼之间已经第七课了,这也将成为最后一课,如果这7课下来您感觉水平没有达到预想的水平,没关系您可以继续关注本站的博文,我会陆续发一些类似的文章帮您提升水平,另外我最近打算和群里的几个Mootools爱 ...

  8. IOS 特定于设备的开发:基于加速计的滚动视图

    倾斜滚轮使用设备的内置加速计来控制在UIScrollView的内容周围移动.当用户调增设备时,材料会相应的下落,他不会把视图定位在屏幕上,而是把内容视图滚动到一个新的偏移位置. 创建这个界面的挑战在于 ...

  9. CSS 基础总结

    CSS基础 Doctype 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文档类型 规范来解析这个文档. 在标准模式中,浏览器根据规范呈现页面: 在混杂模式中,页面以一种比较宽松的 ...

  10. Centos系统mysql 忘记root用户的密码:

    第一步:(停掉正在运行的mysql) [root@maomao ~]# service mysqld stop  Stopping MySQL:                             ...