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

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

       第一步:新建工程

       第二部:书写 java方法:

[java] view plaincopyprint?
  1. public class NativeMethod {  
  2.   
  3.     static {  
  4.         System.loadLibrary("com_nedu_jni_jnidemo5-jni");  
  5.     }  
  6.     public native boolean getBoolean(boolean b);  
  7.       
  8.     public native byte getByte(byte b);  
  9.       
  10.     public native char getChar(char c);  
  11.       
  12.     public native short getShort(short s);  
  13.       
  14.     public native int getInt(int i);  
  15.       
  16.     public native long getLong(long l);  
  17.       
  18.     public native float getFloat(float f);  
  19.       
  20.     public native double getDouble(double d);  
  21. }  

 

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

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

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

       第五步:制作mk文件

 

[plain] view plaincopyprint?
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE    := com_nedu_jni_jnidemo5-jni  
  6. LOCAL_SRC_FILES :=NativeMethod.c  
  7.   
  8. include $(BUILD_SHARED_LIBRARY)  


 

      第六步:调用native方法

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

 

运行截图:


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

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

 

[java] view plaincopyprint?
    1.    

转载于:https://www.cnblogs.com/Free-Thinker/p/4500260.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用微信开发者工具添加小程序底部导航栏报错

粉丝求助&#xff1a; 示例图&#xff1a; 看了这个页面&#xff0c;很明显这个页面引用的路径都有问题。 解决办法&#xff1a;

应用“Cain Abel”实现DNS欺骗

环境的搭建&#xff1a; 1&#xff0c;在Windows 7安装IIS服务&#xff0c;访问www.baidu.com或其他任意站点&#xff0c;保存首页文件至本地wwwroot文件夹中&#xff1b; &#xff08;1&#xff09;打开控制面板&#xff0c;找到“程序”&#xff0c;点进去 点击“打开或关闭…

Android killer软件闪退的解决办法?

解决办法&#xff1a; 重新下载安装一个版本比较新的。

EditThisCookie使用

下载安装 http://www.cnplugins.com/uploads/plugins/201502/www.cnplugins.com_fngmhnnpilhplaeedifhccceomclgfbg_1_4_1_.crx从上面这个网址下载下来&#xff0c;下下来之后用Chrome插件伴侣制作成谷歌浏览器能直接添加的插件 使用 鼠标右键单击——>EditThisCookie&am…

eclipse中在类saolei.Test 中找不到main方法

粉丝提问&#xff1a;eclipse中在类saolei.Test 中找不到main方法 解决办法&#xff1a; eclipse设置自动保存或者CTRLS 建议使用更加智能的编译器IDEA

Cookie和会话Session

Cookie和会话Session Cookie Cookie是识别客户端的特定用户。 1.每次HTTP请求的时候&#xff0c;客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的&#xff0c;第一次创建Session的时候&#xff0c;服务端会在HTTP协议中告诉客…

高速排序算法

高速排序算法作者 July 二零一一年一月四日------------------------------------------写之前&#xff0c;先说点题外话。每写一篇文章&#xff0c;我都会遵循下面几点原则&#xff1a;一、保持版面的尽量清晰&#xff0c;力保排版良好。二、力争所写的东西&#xff0c;清晰易…

某小型校园网规划与设计要点(课程报告)

粉丝求助&#xff1a; 设计某小型校园网络&#xff0c;校园内覆盖4个大楼&#xff0c;分别教学楼&#xff0c;图书馆&#xff0c;办公室和学生宿舍楼&#xff0c;学校申请到B类私有地址为&#xff1a;172.16.8.0/21。要求&#xff1a;&#xff08;1&#xff09;不同大楼主机划分…

使用PHP管理SQL

php管理数据库 php连接数据库函数——mysqli_connect 格式&#xff1a;mysqli_connect(servername,user,pass,database) servername&#xff1a;数据库地址 user&#xff1a;数据库用户名 pass&#xff1a;数据库密码 database&#xff1a;数据库名 <?phpheader(conte…

不可变的基础架构,热部署和JVM

您是否在生产中部署和取消部署基于JVM的应用程序&#xff08;无论JVM容器/无容器&#xff09;&#xff1f; 也就是说&#xff0c;当您拥有某个应用程序或服务的新版本时&#xff0c;是否通过“取消部署”和“热部署”该应用程序的新更新版本来更改正在运行的JVM&#xff1f; 或…

前端页面通过web3.eth.accounts无法获取账户信息

粉丝求助&#xff1a; /* 新版的方式 */var web3Provider;if (window.ethereum) {web3Provider window.ethereum;try {// 请求用户授权await window.ethereum.enable();} catch (error) {// 用户不授权时console.error("User denied account access")}} else if (wi…

arp欺骗原理

中间人攻击——ARP欺骗的原理、实战及防御 ​ 1.1 什么是网关 首先来简单解释一下什么是网关&#xff0c;网关工作在OSI七层模型中的传输层或者应用层&#xff0c;用于高层协议的不同网络之间的连接&#xff0c;简单地说&#xff0c;网关就好比是一个房间通向另一个房间的一…

bzoj 3926

后缀自动机扩展到树形结构上。 先建出大的Trie&#xff0c;然后我们得到了一棵Trie树&#xff0c;对于树上的每个节点&#xff0c;保存一个后缀自动机从根走它代表的字符串后到达的节点&#xff0c;每次其儿子就从父亲的这个节点开始扩展。 1 /*******************************…

java memcmp_memcmp,memicmp函数

函数原型&#xff1a;extern int memcmp(void *str1, void *str2, unsigned int n)参数说明&#xff1a;str1和str2为指定作比较的字符串&#xff0c;比较两个字符串的前n个字节。所在库名&#xff1a;#include 函数功能&#xff1a;比较字符串str1和str2在内存区域中的的前n个…

Pycharm社区版安装教程(永久免费,随时升级)

首先进入JetBrain的官网(国内正常访问): https://www.jetbrains.com/ 第一眼看到的界面如下图所示: 然后找到我们的Pycharm专题页: 进入Pycharm的专题页面之后,点击下载按钮(这里有两个按钮,点任何一个都行): 然后进入到真正的下载页面你会发现有两个版本的Pycharm,一个…

解决 invalid input detected at ‘^’ marker的问题

粉丝求助&#xff1a; 解决办法&#xff1a; Switch开不了机&#xff08;机器bai黑屏&#xff0c;如果找很黑的房间能看到屏du幕内部有zhi点透亮光&#xff09;&#xff1b; 解决方法&#xff1a;这dao是假死机&#xff0c;按住电源键12秒强制关机&#xff0c;然后再按电源键能…

PyCharm社区版设置简体中文界面

点击“File”&#xff0c;出现的菜单中点击“Settings”, 在弹出的界面中&#xff0c;选“Plugins”&#xff0c; 然后在右边输入框中输入“chinese”, 在搜索结果中&#xff0c;选中Chinese(Simplified) Language Pack&#xff0c;点击右边的“install”即可。

JMS和AWS SQS的更多高级内容

如您所知&#xff0c; AWS中的SQS SQS代表“简单队列服务”。 最近&#xff0c;在使用它的同时&#xff0c;我发现了将其称为“简单”的原因之一。 在之前的两篇文章&#xff08; 此处和此处 &#xff09;中&#xff0c;我展示了结合Spring Framework将SQS用作JMS队列提供程序 …

w10家庭版安装java不_小编为你分析win10系统安装不了java的设置办法

许多win10系统用户在工作中经常会遇到win10系统安装不了java的情况&#xff0c;想必大家都遇到过win10系统安装不了java的情况吧&#xff0c;那么应该怎么处理win10系统安装不了java呢&#xff1f;我们依照1、查看自己的电脑是32位的还是64位的(x86代表32位的)。java安装要求比…