Android JNI入门第六篇——基本数据类型使用
转载请标明出处:
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入门第六篇——基本数据类型使用相关推荐
- Android JNI入门第五篇——基本数据类型使用
前面讲到了java和native数据类型,这里就开始做一下使用: 第一步:新建工程 第二部:书写 java方法: [java] view plaincopyprint? public class Na ...
- Android JNI入门第六篇——C调用Java
本篇将介绍在JNI编程中C调用Java实现. ×××地址:http://download.csdn.net/detail/xyz_lmn/4868265 关键代码: java: public clas ...
- Android JNI入门第七篇——C调用Java
关键代码: java: [java] view plaincopy print? public class CCallJava { public static String getTime() { L ...
- Android JNI入门第五篇——Android.mk分析
转载请标明出处: http://blog.csdn.net/michael1112/article/details/56671708 江东橘子的博客 Android.mk文件是在使用NDK编译C代码时 ...
- Android JNI入门第四篇——jni头文件分析
转载请标明出处: http://blog.csdn.net/michael1112/article/details/56666407 江东橘子的博客 一. 首先写了java文件: public cla ...
- Avalonia跨平台入门第六篇之Grid动态分割
前面玩耍了ListBox多选,今天在他的基础上对Grid进行动态分割;这个效果其实在Xamarin中已经实现过了;其实都没太大区别;直接看效果吧: 在ListBox中选择了具体的布局后进行Grid布局 ...
- java script 6 折线_Java入门第六篇:Java script(js)的事件
[js中的事件分类] 1.鼠标事件 onclick.ondbclick.onmouseover.onmouseout 等 2.HTML事件: onload/onunload/onsubmit/onre ...
- WPF入门第六篇 WPF的Binding
WPF的Binding 在传统的Windows软件中,大部分都是UI驱动程序的模式,也可以说事件驱动程序.WPF作为Winform的升级,它把UI驱动程序彻底改变了,核心回到了数据驱动程序的模式上面, ...
- Android入门第七篇之ListView (二)
Android入门第六篇之ListView (一) ,讲的是如何制作一个具有两行文本的 自定义控件 ,作为ListView的Item的使用方法.这篇接下来也是围绕ListView和Item,更加深入地 ...
最新文章
- 单链表-两个线性表的合并1(破环原链表+尾插法)
- pythonurllib微博登录怎么删_Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据...
- 【cocos2d-x 手游研发----地图活起来了】
- php中mysqli用法举例
- 存储过程不可以封装_【小知识】功率半导体器件之10功率器件的封装可靠性
- java freemarker_Java: FreeMarker的配置和使用
- MYSQL数据库中导入中国各个省份编号和省份
- django ajax 简书,Django中ajax上传图片详细步骤
- NiFi 1.16.3 生产使用的更新及BUG。
- 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如 6=1+2+3, 编程找出 1000 以内的所有完数。
- 增加关键词密度不要堆积
- 传说中的100句子记忆7000单词(51-100句)
- 铁威马F2-NAS2评测(家用云存储NAS)
- Linux(6)RedHat7 基本命令五-hwclock(clock)命令详解
- 新零售mysql设计 订单表 订单详情表
- 控制科学与工程(自动化)保研经验【2】——南开、同济篇
- Insert语句的语法
- splice、slice详解
- 24.线程系列- google提供的一些好用的并发工具类
- 作为一个技术Leader,要如何去提升团队的技术氛围
热门文章
- vue点击改变data值_vue 中自定义指令改变data中的值
- centos重启网络失败Job for network.service failed,ping不通网络
- 在此服务器找不到请求的url,在此服务器上找不到请求的URL /.阿帕奇
- mysql查询数字比字符串快,与字符串相比,MySQL在where子句中使用数字更快吗?
- MATLAB读取二进制文件------fread
- serverless mysql_Serverless 解惑——函数计算如何访问 MySQL 数据库
- IsIconic(判断窗口是否最小化)
- C#怎么通过一个按钮Button,实现点击这个按钮可以打开一个文件或者文件夹?
- 第 6 章 Harddisk IO
- 安全漏洞“心脏出血”继续 原因是“丘比特”