轉自迅為開發板安卓JNI開發指南
硬體平臺:迅為iTOP-412開發板
B站搜索:北京迅為,免費觀看同步視頻教程:
上一小節我們已經編譯了 so 庫,那麼我們或者其他人拿到這個 so 後要怎麼使用呢?這一節我們通過寫
一個簡單的 app 來給大家演示下。
我們打開 AS,然後新建一個項目,選擇一個空的 Activity,如下圖所示:
這裡我要注意一下,我們的包名要和我們調用的 jni 庫的包名一樣,否則會出問題,之前我們在寫 jni 的時候,我們的包名如下圖所示:
包名:
那麼我們在新建工程的時候包名也要是這個,如下圖所示:
創建成功以後,我們找到我們新創建的這個工程的所在目錄,然後把我們之前編譯好的 so 庫放進去。
存放 so 庫的文件夾一定要為 jniLibs,名字不要改,如下圖所示:
Jnilibs 文件夾放的就是我們生成的 so 庫,如下圖所示:
然後我們點擊一下 AS 軟體的同步,如下所示:
同步完成以後就可以在工程目錄下看到我們這個 so 的文件夾了,如下圖所示:
然後我們在 MainActivity 裡面引用我們這個庫,我們添加以下代碼:
static {
System.loadLibrary("native-lib");
}
如下圖所示:
然後我們聲明一下方法,在 MainActivity.java 裡面添加以下代碼,代碼如下:
public native int LedOpen();
public native int LedClos();
public native int LedIoctl(int num,int en);
如下圖所示:
然後我們打開 activity_main.xml 文件,
然後刪掉以下代碼:
設置倆個 button,代碼如下:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LED1 OFF" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="87dp"
android:text="LED1 ON" />
</LinearLayout>
添加完如下圖所示:
然後打開 MainActivity.java,聲明倆個按鍵,並且在按鍵的點擊事件裡面打開設備節點和進行控制 led 燈
的操作,代碼如下:
聲明倆個按鍵:
private Button led1_on;
private Button led1_off;
按鍵的點擊事件
led1_on = (Button) findViewById(R.id.button1);
led1_off = (Button) findViewById(R.id.button2);
led1_on.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LedOpen();
LedIoctl(1, 1);
}
});
led1_off.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LedOpen();
LedIoctl(0, 0);
}
});
}
如下圖所示:
然後添加以下代碼:
import android.view.View;
import android.widget.Button;
如下圖所示:
然後我們連接開發板,這裡我們使用的是 IMX6Q 開發板安卓 4.4 系統,這裡一定要使用開發板,不然看不到點燈效果,連接好以後,我們點擊運行,如下圖所示:
然後我們就可以看到 app 已經成功安裝到了開發板上,並且可以控制 led 燈