本例是通過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<jni.h>
并實現調用函數的內容
例如:
函數內部的內容自己按自己的需要實現就好了
新建文件下,文件夾里新建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程序例程,并不是串口,串口的內容后續再補充。
|