android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用

第一、通过eclipse新建一个工程名为HelloJni的android工程,并编译。

第二、右键工程-->Android Tools --> Add Native Support,出现如下界面,名字默认就可以了,点击finish。

0c72c35446ba8a6a6f45073371115d0d.png

第三、我们在MainActivity类中加入要调用的native代码

public native String stringFromJNI();

以及加入我们要调用的lib库,名字就是上面图中的名字了。

static {

System.loadLibrary("HelloJni");

}

第四、用eclipse编译工程,使其在工程bin/classes目录下生成class文件

然后在工程根目录的src执行

javah -d ../jni com.example.hellojni.MainActivity

其中-d 表示生产目录,这时候jni目录会生产com_example_hellojni_MainActivity.h头文件。

在jni目录下创建com_example_hellojni_MainActivity.c文件,并实现stringFromJNI方法

#include

#include

#include "com_example_hellojni_MainActivity.h"

/* This is a trivial JNI example where we use a native method

* to return a new VM String. See the corresponding Java source

* file located at:

*

* src/com/example/hellojni/MainActivity.java

*/

jstring Java_com_example_hellojni_MainActivity_stringFromJNI(JNIEnv *env, jobject this)

{

return (*env)->NewStringUTF(env, "Hello from JNI !");

}

将com_example_hellojni_MainActivity.c添加到jni的Android.mk中,同时删除HelloJni.cpp文件

最后我们添加Toast来显示stringFromJNI返回的文本。

Toast.makeText(getApplicationContext(), str, 90000000).show();

OK,接下去就是编译安装包看下效果了。

工程源码下载:

Android 通过 JNI 访问 Java 字段和方法调用

在前面的两篇文章中,介绍了 Android 通过 JNI 进行基础类型.字符串和数组的相关操作,并描述了 Java 和 Native 在类型和签名之间的转换关系. 有了之前那些基础,就可以实现 Jav ...

Android与JNI(二) ---- Java调用C++ 动态调用

目录: 1. 简介 2. JNI 组件的入口函数 3. 使用 registerNativeMethods 方法 4. 测试 5. JNI 帮助方法 6. 参考资料 1. 简介 Android与JNI( ...

jQuery扩展两类函数(对象调用,静态调用)

作者:zccst 先看小例子: $(function(){ //扩展方式1-通过对新调用 $.fn.each1=function(){ console.log("hehehehe$.fn.f ...

Android使用JNI实现Java与C之间传递数据(转)

介绍Java如何将数据传递给C和C回调Java的方法.  java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java.C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需 ...

Android使用JNI实现Java与C之间传递数据

介绍Java如何将数据传递给C和C回调Java的方法. java传递数据给C,在C代码中进行处理数据,处理完数据后返回给java.C的回调是Java传递数据给C,C需要用到Java中的某个方法,就需要 ...

JNI实现JAVA和C++互相调用

SDK.h #ifndef SDK_H #define SDK_H #include "AsyncProxy.h" #include "Module.h" #i ...

通过adb命令在Android设备中执行Java命令, 并调用so文件。

一.难点一:无法复制so文件到/system/lib或者/vendor/lib下,提示只读 解决方法: 2.使用android device monitor放库进入到 /system/lib出现只读权 ...

Android NDK开发 JNI操作java构造方法,普通方法,静态方法(七)

Android NDK开发 JNI操作java普通.静态.构造方法 1.Jni实例化一个Java类的实例jobject 1.通过FindClas( ),获取Java类的的jclass 2.通过GetM ...

C++调用DLL有两种方法——静态调用和动态调用

C++调用DLL有两种方法——静态调用和动态调用 标签: dllc++winapinullc 2011-09-09 09:49 11609人阅读 评论(0) 收藏 举报  分类: cpp(30)  [ ...

随机推荐

Springboot框架

本片文章主要分享一下,Springboot框架为什么那么受欢迎以及如何搭建一个Springboot框架. 我们先了解一下Springboot是个什么东西,它是干什么用的.我是刚开始接触,查了很多资料, ...

mysql 常用语句模板

插入INSERT IGNORE INTO test (`f1`, `f2`, `f3`) VALUES (v1,v2,v3); 更新update test set f1=v1,f2=v2 where ...

JS数组操作示意图(shift,unshift,pop,push)

shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b: ...

BestCoder Round #87 1002 Square Distance[DP 打印方案]

Square Distance  Accepts: 73  Submissions: 598  Time Limit: 4000/2000 MS (Java/Others)  Memory Limit ...

js实现未知宽高的元素在指定元素中垂直水平居中

js实现未知宽高的元素在指定元素中垂直水平居中:本章节介绍一下如何实现未知宽高的元素在指定元素下实现垂直水平居中效果,下面就以span元素为例子,介绍一下如何实现span元素在div中实现水平垂直居中 ...

ZOJ3761(并查集+树的遍历)

Easy billiards Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Edward think a g ...

Apache Derby倒斗之路-01小道消息

1.DERBY是什么: Apache Derby 是IBM于2004年贡献给Apache软件基金会的数据库,于2005年正式成为开源项目,Derby作为一个基于JAVA的关系型数据库框架,他拥有许多便 ...

IntelliJ中的main函数、for循环、System.out.println()快捷键

main函数 输入: psvm 回车 输出: public static void main(String[] args) { } for循环 输入:fori 回车 输出: for (int i = ...

【nginx】配置Nginx实现负载均衡

一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最 ...

安装 Linuxbrew

在 OS X 平台上非常流行的包管理器 Homebrew 最近正被移植到 Linux 上而成为 Linuxbrew.虽然各种 Linux 发行都带有自己的包管理工具,诸如 apt-get.yum.pa ...

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

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

相关文章

c语言程序综合实习学生成绩,C语言程序设计综合实习报告

课题一:用指针优化学生成绩排名一、目的1.熟悉变量的指针和指向变量的的指针变量的概念和使用2.熟悉数组的指针和指向数组的的指针变量的概念和使用3. 掌握冒泡法或选择法排序的算法4. 掌握函数的定义、调用、声明,以及参数的两种…

c语言求最多啤酒数,C语言,算法、动态规划:有一个箱子的容量为v(正整数,0=v=20000),同时有n个物品(0n=30),...

满意答案24k纯真爱l2013.11.07采纳率:42% 等级:12已帮助:9552人#include#define N 30int xiangzi(int n ,int V ,int a[]) //楼主后面的Vo数组必须放进递归函数里面或定义成全局数组 另外h[n]什么情况??{int minv,t,mV;if(n0){if(a[n]&l…

c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)

Sleep函数:功 能: 执行挂起一段时间用 法:unsigned sleep(unsigned seconds);注意:在VC中使用带上头文件#include ,在Linux下,gcc编译器中,使用的头文件因gcc版本的不同而不同#include 在VC中,Sleep中的第一个英文字符为大写的"S" ,在linux下不要大写&…

android 环绕布局,Android自定义View实现圆形环绕效果

之前项目中需要实现一个四周环绕中心圆形头像的效果,感觉还是自定义比较方便,于是就自己封装了一个控件去实现。先贴张图显示最终效果。首先自定义一个View继承自LinearLayout,通过动态添加childView的方式将子控件添加到View中。思路是先添加中间圆形头…

android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1

一、简介:在百度、高德地图开发中,申请key的时候,要两个版本的sha1值。一个是开发版(debug),一个是发布版(release)。debug版本的sha1比较好获取,网上资料一堆,这里引用一下,就不再重复写了。最…

html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式

1、html特殊字符的显示我们知道html语言和C语言一样也有一些特殊字符,它们是不能正常显示的,必须经过转义,在网上可以查到如何显示这些字符,如下图所示:上图给了最常用的特殊字符的显示,下面我们来实验一下…

html 变量类型强制转换,html、js前台数据传到后台,spring复杂类型转换

html、js前台数据传到后台,spring复杂类型转换如果我有两个变量,变量名不一样,处理的规则也不一样,但是他们都是Date.class 类型, 这可怎么破。比如:InitBinderpublic void bindingPreparation(WebDataBind…

html盒模型中border的写法,HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手...

很多小伙伴在前端学习的时候,发现盒子模型默认为正方形。如何把盒子变成想要的模型呢? 首先我们来看一下默认的情况----.box{width: 100px;height: 100px;background-color: rgb(116, 51, 51);box-shadow:0 10px 10px red;text-align: center;position:a…

希捷银河声音大_每日观影之银河守门员( )

#银河守门员Вратарь Галактики#真心不错的科幻大片…尤其这剧情故事实在是俄国电影的一个很有突破性的亮点…基本可以说全方面凸显了俄罗斯的国情…比如高大上的部分完全不输欧美甚至有所超越领先都是要拯救世界而且还很壮烈拼搏的样子…然而百姓生活却显得很窘…

bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读

点击上方“蓝字”关注我们之前发过一篇文章小程序反编译工具在windows系统下的调用脚本提到了Windows平台下的脚本,但是对脚本没有做详细说明。本文就是针对脚本做的讲解。对批处理感兴趣的可以了解下。不会基础也没关系。下面我们进入正题。脚本解读第1行&#xff…

定值保险计算举例_保险公司的“开门红”又要来了!理财险真的值得买吗?

临近年末,各家保险公司都开始备战2020年的“开门红”。对于保险公司来说,“开门红全年红”,只要开门红的任务完成得好,那么今年大半年的保费就不用担心了,因此保险公司们对于这一战都十分重视。如果说“双11”、“双12…

html中post语句,html中post乱码的解决方法

html中post乱码的解决方法发布时间:2021-05-27 11:29:00来源:亿速云阅读:91作者:小新这篇文章主要介绍html中post乱码的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要…

泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗

中考是人们升高中的必经之路,它虽然没有高考那样振奋人心,但是对于当时的人来说也算是一场最正规的考试。首先,不可否认的是中考是很重要的。虽然它不能对高考有着直接影响,但是却有着间接影响。在每年的六份左右出来。中考是很重…

django返回指定html文件,Django返回HTML文件的实现方法

前面我们简单的了解Django的一些工作原理,其中关于页面展示的内容,也全部都是视图(Views)返回的内容,那么我们也知道前端包括很多内容。如:HTML,CSS,JavaScript等以及各种插件,才具备完全的页面…

计算机网络纠错码,计算机网络:纠错

本文概述当数据从发送方发送到接收方时, 纠错码用于检测和纠正错误。纠错可以通过两种方式处理:向后纠错:发现错误后, 接收方会请求发送方重新传输整个数据单元。前向纠错:在这种情况下, 接收器使用纠错码自动纠正错误。单个附加位可以检测到…

扭矩大好还是马力大好_翡翠手镯圈口到底是买大好,还是买小好?行家告诉你...

现在的女性多数人都喜欢购买翡翠手镯、翡翠手链、翡翠戒面等,尤其对翡翠手镯不仅能表现出女性的知性优美,还对身体有一定的好处。翡翠手镯是翡翠价值中除了翡翠戒面外最高的二等翡翠。因为翡翠手镯除了那种开口式的镶嵌翡翠手镯其他的都是闭口的&#xf…

启动失败代码2_菲斯曼燃气壁挂炉故障代码大全及解决方法

菲斯曼燃气壁挂炉型号菲斯曼燃气壁挂炉故障代码大全及解决方法以:06故障代码:系统压力过低。设备的反映: 燃气器锁定。措施:检查系统水压,必要时补充加注供暖水。 0A故障代码:燃气压力过低。设备的反映: 燃气器锁定。措…

用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...

python语言设计一个类代表花,其中含2个对象属性,2class flower: def __init__ (self, name, shape): self.name name self.shape shape def showname (self): print(self.name) def showshape(self): print(self.shape)if __name__ __main__: f1flower("baihe",&q…

3不能安装库_不锈钢水槽如何安装?3个细节要注意,不能忽视,别被套路了

不锈钢水槽如何安装?3个细节要注意,不能忽视,别被套路了随着时代不断的进步。人们生活水平也是不断的提高。生活用品有时间来选,慢慢的步入了我们的日常中。你们觉得家中最重要的地方是什么呢?其实就是厨房&#xff0c…

vs工程 更换opencv版本_Windows下opencv源代码转化和编译

1. CMake工程转化工具下载。CMake是开源的跨平台安装(编译)工具,OpenCV开源代码想要用VS平台打开并编译得由它来做工程转化操作,最后利用VS平台编译出可在windows平台下运行的动态库文件DLL。CMake下载地址:https://cmake.org/download&#…