本例是通过JNI调用,并不是通过系统的类来调用。
1.首先调用流程:
APP->HAL->JNI->内核驱动
2.具体流程:
2.1下载NDK
我下的是:android-ndk-r14b-windows-x86_64.zip
2.2解压该压缩包至某个文件夹
2.3打开eclipse->window->preferences->Android->NDK
浏览选中刚才的路径,我的是:E:\javaee\my\android-ndk-r14b-windows-x86_64
如果出现 Not a valid DNKdirectory
就在刚才的目录即E:\javaee\my\android-ndk-r14b-windows-x86_64\下新建一个文件ndk-build
2.4 新建一个Android工程
新建一个jni文件夹
选中工程,右键进入properties选项
Builder->new->Program & OK->
在“Name“中输入新builders的名称(这个名字可以任意取)。
设置如下
Location为ndk-build.cmd的路径,路径如图。working Directory就点击Browse Workspace选中当前项目即可
继续
Build Options勾选项如图,另外点击右边的Specify Resources里选中工程刚才刚才创建的jni文件夹
点击OK
OK
2.5 声明本地方法
在Activity里声明你要调用的方法
例如我的:publicnative String gpsopen(String str);
2.6用cmd生成一个.h的样式文件
Win+R
Cmd
将src目录下刚才生成的.h头文件复制到工程的jni目录下
在jni目录下编写.c文件,例如gps.c
将.h头文件里面的内容复制过来
添加一个#include
并实现调用函数的内容
例如:
函数内部的内容自己按自己的需要实现就好了
新建文件下,文件夹里新建Android.mk
其内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=gpsbdshow //要生成的包名,会生成gpsbdshow.so
LOCAL_SRC_FILES :=gpsbdshow.c//要编译的本地文件
#liblog.so libGLESv2.so
LOCAL_LDLIBS +=-llog
include $(BUILD_SHARED_LIBRARY)
include $(call all-makefiles-under,$(LOCAL_PATH))
等会将所有文件(JNI,Src,Androidminifast…)等文件一起放入ubuntu的Android目录下编译生成.So库文件
编写号.mk后,右键项目->buildproject
编译完成,正常生成 *.so
就可以直接在目标机上运行
也可以将其目录下的 *.apk复制到目标机安装运行。
当然这些内容只是一个JNI程序例程,并不是串口,串口的内容后续再补充。