在上上篇博客中我写了一下NDK开发实践项目,使用开源的LAME库转码MP3,作为前面几篇基础博客的加深理解使用的,但是这样的项目用处不大,除了练练NDK功底。这篇博客,我将讲述一下一个各大应用中很常见的一个功能,同样也是基于JNI开发的Android应用小Demo,看完这个之后,不仅可以加深对NDK开发的理解,而且该Demo也可以使用在实际的开发中。不知道大家在使用一个Android应用的时候,当我们卸载这个应用后,设备上会弹出一个“用户反馈调查”的网页出来,也许很多人没有留意过或者直接忽视了,那么从现在开...
分类:
移动开发 时间:
2015-01-08 17:58:13
阅读次数:
330
在前面文章中简单介绍了JNI,这一篇文章来简单看一下jni.h中定义的一些常用方法,来实现通过C++调用Android中的Java代码。一、两个参数的介绍在前面的代码中我们会遇到两个参数,下面对这两个参数做一解释1、JNIEnv是指向可用JNI函数表的接口指针,C代码中JNIEnv是指向JNINativeInterface结构的指针,在C语言中JNIEnv必须作为第一个参数传入每一个JNI函数的调...
分类:
移动开发 时间:
2015-01-07 22:10:05
阅读次数:
310
本专栏的前面几篇博客写了一些Android下通过JNI进行NDK开发的基础知识,主要步骤在里面也写的很清晰,但是看起来比较麻烦,为什么呢?可能细心的朋友会发现我每次在进行交叉编译的时候,是通过cygwin模拟Linux环境用ndk-build命令进行编译的,而且每次新建JNI工程的时候,都会在工程目录下手动的新建一个jni的目录,在该目录下新建C源码文件和Android.mk配置文件,这一系列的操作显得特别繁琐,尤其是cygwin,首先其下载安装是个非常耗时耗力的操作,其次使用cygwin还需要理解Linu...
分类:
移动开发 时间:
2015-01-07 18:51:37
阅读次数:
194
在本专栏的前面几篇博客中讲述了一些Android NDK开发的基础,从环境搭建一直到利用JNI进行Java端和C端代码的互相调用,并且的讲解的Demo也是很简单易懂的,相信掌握前面博客的大部分内容,就可以着手在实际项目中利用JNI进行NDK开发了,那么既然基础过了,接下来我在这里尝试去使用真实项目中去。我们知道,C语言因为高效,而且又是最早期的高级编程之一,一直存活至今近40年了,所以很多用C开发出来高效类库是可以被复用的,这样不仅做到高效率,而且减少了项目开发周期。在这里我找到了一个关于音频文件转码的最常...
分类:
移动开发 时间:
2015-01-06 18:03:14
阅读次数:
629
在上一篇文章中我们使用了javah工具来生成了native java文件所对应的C++头文件,但是这样生成比较麻烦,我们这一篇来介绍如何在eclipse中集成javah和NDK-Builder。一、eclipse集成javah选择External Tools Configurations...上面是我配置的,解释如下:Location:这里配置的是javah所在的路径。Working Direct...
分类:
移动开发 时间:
2015-01-06 15:43:50
阅读次数:
245
在上一篇中我们了解了Android中有关JNI的使用,其实JNI是很早就有的,不是在Android创造的新技术,是SUN为我们提供的一种Java和本地代码之间相互调用的方法,这一篇我们来建立一个普通的Java工程来具体看一下Java中如何调用C/C++代码。...
分类:
移动开发 时间:
2015-01-06 00:54:39
阅读次数:
263
一款运行于android系统上的应用软件,其主要功能是让用户选取一个可调节大小的圆形区域,并模糊掉圆形区域外的内容。使用了libjpeg进行jpeg图片的解析和生成jpeg图片,使用NDK处理图片运算,并进行一定的优化...
分类:
其他好文 时间:
2015-01-05 20:31:27
阅读次数:
359
在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部分的实际开发知识,基本上掌握这些就可以做一个基本的NDK开发了,但是光是了解Java回调C层的数据是不是还不够啊,考虑问题要考虑可逆性,Java能回调C,那么C能否反过来回调Java呢?答案是肯定可以的,这篇博客就介绍一个C语言如何调用Java层的代码。以下是一些问题场景,我们带着这个问题场景来分析一下实现的过程。...
分类:
移动开发 时间:
2015-01-05 11:20:41
阅读次数:
254
1、需要准备的工具,eclipse,cdt(c++)插件,cygwin(unix)和 android ndk.
在cygwin的etc目录下将ndk的路径引入到profile文件中,可以在cygwin的任何目录都可以访问到ndk,不同的ndk路径PATH的写法不同.
: ${ORIGINAL_PATH=${PATH}}
if [ ${CYGWIN_NOWINPATH-add...
分类:
其他好文 时间:
2015-01-04 21:29:35
阅读次数:
240
前面几篇文章介绍了Android NDK开发的简单概念、常见错误及处理和从第一个Hello World开始实际做一个简单的JNI开发示例,相信看完之后,大家对NDK开发有了一个概念上的认识了,那么接下来我们需要再深入一下NDK的开发,我们知道NDK开发就是使用JNI这层“协议”在Java和C之间起个“桥梁”的作用,将Java和Native C之间联立起来,让Java和C直接的数据进行互调。谈到Java和C之间的数据调用,那么Java是怎样传递数据到C中的呢,C拿到数据处理完后又怎样将处理后的数据回传给Jav...
分类:
移动开发 时间:
2015-01-04 11:29:44
阅读次数:
347