Android Camera NDK的使用

1.简介

         上一篇讲了Android Camera获取预览数据流的过程,既然拿到了,总不能就这样算了吧,本来打算直接讲数据格式转换的,但是我们知道java的效率还是很低的,很多转换的操作也都是将c++的代码直接用java写一遍,这样可想而知,算法耗时在视频操作中是很敏感的,所以这章讲述一下怎么在Android项目中,使用C++的代码,也就是标题写的NDK,当然也有人喜欢叫JNI,其实两者还是有差别的,两者的关系可以这样理解NDK是基于JNI开发,就好像Android 基于java开发一样。

2.项目创建

首先,需要先配置一下NDK,打开Sdk Tool勾选NDK,当然也可以直接在网上下载NDK的包,手动配置

Android Camera NDK的使用

然后再配置一下NDK的路径,默认因该是配置好的,之后就可以创建NDK项目了

Android Camera NDK的使用

创建项目的时候勾选Include C++就好了,对,就是这么简单。

Android Camera NDK的使用

3.使用解析

1.创建完成之后,看文件的目录,可以看到,比起以前的项目,多了一个cpp文件夹。这个就是用来存放C文件的目录。后续也会在这里面开发。

Android Camera NDK的使用

2.CmekeList.text文件,文件在app目录下面,这个很重要,是编译用的配置文件,只有写好了这个配置文件我们才正确编译出我们想要的动态库,具体使用,还是百度一下吧,这儿就不具体介绍了。

Android Camera NDK的使用

3.再看看MainActivity中,也有了变化,首先是多了一个

Android Camera NDK的使用

这个是用来装载库文件,不知道大家有时候使用第三方SDK的时候,有没有发现,他们会叫你将 某某.so文件拷贝到jniLibs目录下,每错,这个native-lib就是相当于那个某某.so,最终程序编译的时候,会将native-lib.cpp编译成so库,供程序使用。

然后就是

Android Camera NDK的使用

这是编译器为我们生成的hello world,native也就是JNI方法的关键字,点进去,看看里面

Android Camera NDK的使用

这就是JNI方法了,命名通过包名加类名,加方法名,有时候提示找不到方法,很有可能就是你的包名填错了。至于JNI的用法,可以参考一下百度。了解一些基本的,就可以开始创建自己的NDK项目了。

给个小技巧,可以现在activity中定义一个native方法,然后alt + enter 就自动生成对应的方法了。