说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Android NDK之JNI使用例子

HTML文档下载 WORD文档下载 PDF文档下载
目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。

 

作者:Android开发网
  目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。整个例子分Java和Native C两个部分。首先是我们常用的Java端调用部分。

 

作者:Android开发网

 

  目前Android NDK只能编译出动态库.so文件,并不是能生成.apk文件,这里我们简单介绍下NDK中的Hello JNI列子。整个例子分Java和Native C两个部分。首先是我们常用的Java端调用部分。

package com.example.hellojni;import android.app.Activity;import android.widget.TextView;import android.os.Bundle;public class HelloJni extends Activity{    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        TextView  tv = new TextView(this);        tv.setText( stringFromJNI() ); //如果调用失败将会抛出 java.lang.UnsatisfiedLinkError异常        setContentView(tv);    } //注意下面的native关键字    public native String  stringFromJNI();     public native String  unimplementedStringFromJNI();     static {        System.loadLibrary("hello-jni"); //载入hello-jni库    }  }
需要注意的是这里必须设置SDK版本为1.5或以上版本即在androidmanifest.xml文件中指明<uses-sdk android:minSdkVersion="3" /> 这里我们看到JNI调用无需特殊的权限。
 而在Native C/C++中我们可以直接使用C++库,不过这里包含了jni这个头文件。
#include <string.h>#include <jni.h>
其中下面的返回类型jstring是VM String,在jni.h头文件中有定义
jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ){    return (*env)->NewStringUTF(env, "Hello from JNI, Android123 Test!");}
其实很好理解的,仅仅是换个了别名而以,定义如下
typedef uint8_t         jboolean;       /* unsigned 8 bits */typedef int8_t          jbyte;          /* signed 8 bits */typedef uint16_t        jchar;          /* unsigned 16 bits */typedef int16_t         jshort;         /* signed 16 bits */typedef int32_t         jint;           /* signed 32 bits */typedef int64_t         jlong;          /* signed 64 bits */typedef float           jfloat;         /* 32-bit IEEE 754 */typedef double          jdouble;        /* 64-bit IEEE 754 */#elsetypedef unsigned char   jboolean;       /* unsigned 8 bits */typedef signed char     jbyte;          /* signed 8 bits */typedef unsigned short  jchar;          /* unsigned 16 bits */typedef short           jshort;         /* signed 16 bits */typedef int             jint;           /* signed 32 bits */typedef long long       jlong;          /* signed 64 bits */typedef float           jfloat;         /* 32-bit IEEE 754 */typedef double          jdouble;        /* 64-bit IEEE 754 */#endiftypedef jint            jsize;
还有一些调用平时注意的声明
#define JNI_FALSE   0#define JNI_TRUE    1#define JNI_VERSION_1_1 0x00010001#define JNI_VERSION_1_2 0x00010002#define JNI_VERSION_1_4 0x00010004#define JNI_VERSION_1_6 0x00010006#define JNI_OK          (0)         /* no error */#define JNI_ERR         (-1)        /* generic error */#define JNI_EDETACHED   (-2)        /* thread detached from the VM */#define JNI_EVERSION    (-3)        /* JNI version error */#define JNI_COMMIT      1           /* copy content, do not free buffer */#define JNI_ABORT       2           /* free buffer w/o copying back */#define JNIIMPORT#define JNIEXPORT#define JNICALL

 

 

知识产权日特稿:谁动了程序员的源代码版权? MIT技术评论评选2013十大突破性技术:深度学习居首 Chrome测试版添扩展程序 可直接浏览Office文档 Ubuntu 13.04携中文衍生版UbuntuKylin 13.04发布 Spark核心开发者:性能超Hadoop百倍,算法实现仅有其1/10或1/100 移动开发的碎片化时代,我们该怎么办? 谈应用分发控制力:还是渠道为王 Unity亚洲开发者大会:手游半衰期越短,开发者手中的机会越多 《割绳子》开发者:俄罗斯双胞胎的奋斗史 曾应聘Rovio未果 Win7系统上常见IE 10问题汇总 如果苹果推廉价手机,市场份额会不会超过安卓? 移动互联网下,如何做儿童新音乐? 第三届“中科杯”全国软件设计大赛正式启动 注重稳定性 Docker 0.2.0发布 何谓机器学习 机器学习能做些什么? 艰难的决定:EA裁员10%,殃及PopCap 或提前落地!Amazon和Facebook急聘SDN工程师(Python优先) 轻松完成网站提速:来自Google、淘宝等的Nginx PageSpeed模块 Touch-Pay发布 移动联通在手机游戏领域联合推融合计费SDK 如何组织大型JavaScript应用中的代码? Robert Scoble:戴Google Glass两周后 再也不想摘下它 赶时髦?Facebook CEO 2013年将领取1美元年薪 蓝港在线CEO王峰:我在网络游戏行业十年从业记 CMDN Club 27期:从儿童音乐教育到移动碎片化管理 聚焦全球移动市场——你所不知道的俄罗斯 MemSQL:号称世界上最快的内存-关系型数据库 兼容MySQL但快30倍 PC衰落 Intel转投Google挖掘移动市场潜力 移动周报:500元体感、精确到0.01毫米的Leap Motion TUP第29期:王淮、龚世海谈如何打造优秀的技术团队 一网打尽13款开源Java大数据工具,从理论到实践的剖析 从用户体验的善与恶说起,做用户爱“玩”的教育应用 s_cube(竹子), s_cube(竹子)~!! 我爱你,s_cube(竹子) s_cube(竹子) ~!在哪里 简单问题(1) 如何不运行编译? 有谁知道怎么从perl里调用一个c库里的函数????????? 请问在CB中如何隐藏WINDOWS的任务栏呢? 今天不爽,下班后打星际,大家一起来。 指点!在PB中怎样用程序作成一张动态的交叉表 编辑控件怎样才能显示那些怪字符? 有没有人喜欢郑智化 大家推荐好听的几首歌吧! 请教:怎么学c++? 高手点拨! 各位网络高手.如何在程序里讲ip地址转化为域名 有什么方法,可使表单内的组件背景变成透明的而文字不透明,请看例子: 编辑控件怎样才能显示那些怪字符???? swall(壹心) 你还在深圳特区吗? 如何设置Session的密码?请高手指点迷经^^^^^ 哪位可以解释一下下面的代码? perl 的人气太差。罢了罢了。找本perl自己搞定 MsSQL7.0 当日志文件大小未限制而变得很大时,怎样清日志文件,使其减小? 请教诸位牛兄牛姐牛夫人---有难度哦(着急出活!) 基本问题:如何将一个.txt中的内容读入到内存再从内存中读出并存为另一个文件?谢了先!!!! 高手帮帮忙!!!!!!!!!!!!!! 又有台风了。。。。 在zip包中加入ASP推荐的PAD File有用吗????? PB连接SQL数数库,为什么显示的表会不全 如何把一个文件file.dat里的数据写入软盘0磁道0磁头1扇区. 我要骂人! chris2001(牛虻),不是东西 华为工程师 谁知道 vb 的序列号?????? VS.NET 有开了个新铺子。为什么我的ejb/j2ee还没有开张。气愤。 老大们:我是菜鸟,有问题要问,不过不要笑我。一定给分的 再次发问:关于在SQL SERVER中的某张表上建立触发器...... 没有有这样的病毒,或者文件 各位老大,如果有asp、sql基础学jsp和php是不是比较容易一些呀?言者有分哦! dll中怎样调用主程序中的函数? 新手请教接口聚合!!!!!!!!! 高分求教!有没有谁编写过WEB服务器程序? 微软OfficeXp女孩 请教一个报表问题? 小技巧!!! delphi中调用MessageBox出错,高手指点一下。 大家好,这是我提的第一个问题!我学DELPHI才两周!对您的指点,小弟万分感激! 请问sybase12。0中,游标能不能用动态sql申请 紧急求助:如何调用父对话框的函数 各位好,我在VB下做了一个ACTIVE 控件,但是加不到CBUILDER 上,但能加到VB里,为什么? 婚介所 关于C++打开文件的问题? 请教一下关于多表查询的问题 求助:中文Delhpi帮助 为什么我的rose装好后没有html帮助?还有安装时应该选择client还是administrator? 下列说法正确的是A物体在它的运动状态发生改变时,惯性表现最明显 氢气在氯气中燃烧不用太详细,用比喻也可以,比如“可以烤肉的温度”……之类的,哈哈哈,当然, 请问一立方100摄氏度的开水有多少热量?一立方300摄氏度的水蒸气 压力为9.8公斤 有多少热量? 物体的运动状态改变,的改变或?的改变或它们同时改变.要改变物体的运动状态,必须对物体 是氯气在氢气中燃烧,还是氢气在氯气中燃烧 用0.6MPa压力的管道蒸汽直接加热1T水,从15摄氏度到100摄氏度,需要多少立方蒸汽,换算KW数要多少KW能量 质量500g的金属,温度从20℃上升至10℃,吸收热量3.5*10^4J,求这种金属的比热容,并判断是哪种金属. 如何提升氢气燃烧火焰温度?需要添加何种助燃剂?在纯氧下一般温度为2860度,现需要提高到3400度以上,谢谢QQ123WE的建议,在此说明的是用于切割金属,现用添加汽油可提升温度,但现想找一 不同压力下水升高1摄氏度需要的热量一样吗蒸汽锅炉里的压力大约是1MP,50摄氏度升到80摄氏度需要多少热量?和在标准大气压下一样吗? 甲乙两种物质,质量之比是4:1,放出热量之比是3:1,则它们的比热容之比和降低温度之比分别是下列四种情况可能满足题设的条件是:( )①1:1,3:4 ②2:1,1:3 ③1:2,3:2 ④1:3,9:4A.①② B.①③④ C.②③ D. 氢气,氯气,氧气A汞蒸气B水蒸气C碘蒸气D酒精蒸汽选出和上面三种同一类的物质,并说明理由 如果3个溢流阀依次串联联接,且它们的调定压力依次为6MPa、4MPa、7MPa 那么液压泵的出口压力为多少? 甲、乙两种物质的比热容之比是2∶1,质量之比是3∶1,若它们吸收的热量相等,则甲、乙升高的温度之比为________;若它们升高相等的温度,则它们吸收的热量之比是__________________.若甲、乙两种 非金属性氧大于氯气,为什么氯气与氢气反应比氧气更容易 反应釜机械密封压力怎样调节,使用什么测量,依据什么来调整 甲乙两物体,质量比为1:2,升高的温度比为2:1,吸收相同的热量,则甲乙的比热容之比为 氢气 氧气 氯气氢气 氯气 氧气 的混合气体 点燃,恰好完全反应,冷却至室温,所得溶液溶质的质量分数为25.26%,则原容器中氢气,氧气,氯气的体积之比为多少? 溢流阀的选择 我做实验用的,液体压力要维持在3mpa,4mpa,6mpa等,溢流阀选哪种合适呢,可调可控就是我设定一个值,到达那个值后就溢流,不到继续上压 _的某种物质 温度升高或降低_ 所吸收或放出的热量数值等于他的比热容 氢气 氯气 哪个和氧气更容易反应 在精馏操作中,塔釜压力为什么是一个重要的参数?塔釜压力与什么因素有关? 已知甲乙两物质,当他们的质量相同,甲的温度升高的比乙多,对于他们吸收热量与比热容之间的关系 氧气和氢气的混合物,采用降温液化的方法分离,首先液化的是__________. 很多地方提到高压反应釜,到底承受多少压力才算是高压反应釜.有高压就有中压和低压吧,如何区分? 有甲乙2个物体,甲的比热容是乙的2倍,质量是乙的二分之五,若吸收热量相同,升高的温度比为几比几 氢气燃烧与氢气液化的本质区别是什么? 酯化反应釜操作压力问题我设计的反应釜酸酐进料压力0.1Mpa,醇进料压力i0.1Mpa,出料0.9Mpa.1.搅拌釜内操作压力是0.2Mpa还是0.9Mpa呢?2.夹套内用水蒸气加热,工作压力是该温度下水蒸气的饱和蒸汽压 有甲、乙两个物体,质量之比为5:3,比热容之比为2:1,如果他们放出相同的热量,降低温度之比为? 木炭,镁粉,氢气都能在氧气中燃烧,其变化的本质和现象有不少共同之处木炭,镁粉,氢气在氧气中燃烧的共同点(1)_________________________________(2)_________________________________(3)________________________________ 搪瓷反应釜、搪玻璃反应釜的性能 气体体积与压力大小的变化 木炭、镁条、白磷、氢气、四种物质都能在氧气中燃烧、其变化的本质和现象有不少共同之处、如:反应都需点燃、反应物都有氧气等、再归纳出三点、 压力反应釜正负压怎么做 压缩客气灌体积大小与它所冲装气体的压力有关吗 沼气在常温下能不能液化沼气在常温下能不能被液化?详细一点 什么样的压力容器需要型式试验,搪玻璃反应釜需要吗?新容规上说蓄能器等需要做型式试验,这个等包括反应釜吗? 80公斤气体压力有多大?80公斤气体压力是等于8mpa吗?这个压力有大?如果用这个压力推动50克重物能推多远? 常温下使甲烷液化需要多大的压力?安全标准是什么?谢谢!RT 带夹套的不锈钢反应釜是不是需要检测的压力容器?蒸汽加热,需要温度105 容器内为常压,所需蒸汽压力2公斤请提供解释或依据夹套内为水蒸气,容器内为水和肉(猪肉、牛肉或羊肉),它是低压 氧气和氢气,哪个容易液化请说明理由 哪里有沼气液化的设备?哪里有沼气液化工程? 搪瓷反应釜是几类压力容器 氢气氧气液化条件氢气需要多少pa的压强才能液化.氧气呢. 沼气能液化吗?沼气如果直接用高压瓶装后还能用吗?建沼气政府有补贴吗? 半管加热的反应釜是否属于压力容器? 为什么氨气易液化 ,而氮气和氢气通常情况下不易液化? 氧气在多大压力下可以液化?一般的医用氧气,纯度达到99%.99以上的氧气,在多大的压力下可以实现液化?这个压力大约等于多少公斤?我还想问下,在一定的压力下,氧气可以通过加压的方式实现缩 甲醇对20号压力容器用钢材有没有腐蚀性? 天然气`液化石油气`氢气有什么共同性质 氢液化的温度是多少?常温下将氢液化的压力是多少?等于多少个大气压氢气在室温下不可能液化的话,那市场上买的那种氢气钢瓶里装的液态氢不是会爆掉吗? 求一反应釜各管道连接图 下列事实中 ,属于物体运动状态改变的有:A 用力拉弹簧 ,弹簧变长B跳伞运动员在空中匀速直线下降C正在进站的火车D运动员透出的标枪在空中运动带解析 、 氢气密度小,为什么会很难液化RT..密度小应该更容易啊. 供暖压力达到多少才能保证供热效果 关于物体运动状态的改变,下列说法中正确的是 ( )A.物体运动的速率不变,其运动状态就不变B.物体运动的加速度不变,其运动状态就不变C.物体运动状态的改变包括两种情况:一是由静止到 氢气在空气中燃烧会怎样;在纯氧中燃烧有会怎样?一般我们用什么方法制造氢气,如何收集氢? 采暖总热负荷 循环泵流量 电机功率的关系? 关于运动和力,下面说法正确的是:A、物体运动,必须有力的作用.B、物体的运动状态要发生改变,必须有力的作用.C、没有力的作用,运动物体速度不可能快起来,但可以慢下来.D、物体受到力的 1.氢气在空气中燃烧颜色(),在纯氧中(),氢气纯度为100%时()2.一氧化碳在空气中燃烧颜色(),在纯氧中(),氢气纯度为100%时()3.写出C、CO、CO2、O2之间所有能发生的的化学方程式感 按流量供暖怎么计算
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn