顯示具有 JNI 標籤的文章。 顯示所有文章
顯示具有 JNI 標籤的文章。 顯示所有文章

2013年12月8日 星期日

[ Android JNI ] NEON用C及ASM來實作

以下是利用NEON技術來進行灰階轉換

以下是利用ASM技術來進行灰階轉換



[ Android JNI ] 使用NEON及ASM技術來進行灰階轉換

承接上一篇文章

http://cheng-min-i-taiwan.blogspot.tw/2013/12/android-jni-ndkneon.html
以上程式請修訂在前一篇文章test.c中

 以下是新增函式


[ Android JNI ] 使用NDK及NEON技術來進行灰階轉換

請先閱讀上一篇文章
http://cheng-min-i-taiwan.blogspot.tw/2013/12/android-jni.html
本篇文章僅呈現有關NEON部份的程式碼
test.c程式列表,紅色圈起來地方表示有改變的部份
2. Android.mk 設備NEON編譯方式
3. Application.mk 指定編繹種類
4.執行結果





2013年12月7日 星期六

[ Android JNI ] 使用NDK及RenderScript進行灰階轉換

1.建立新專案
2. 檔案結構

3. MainActivity.java
4. GrayComputeNDK.cpp
 5. Android.mk
6. Application.mk
7. mono.ms
 8.main.xml

9. 執行結果




2013年12月5日 星期四

[ Android JNI ] 灰階轉換程式

MainActivity.java

 SoftPIE.java
activity_main.xml


 test.h
 test.c



 Android.mk
執行結果
 按下按鈕的結果
查看效能結果


2013年11月28日 星期四

[ Android JNI ] 簡單JNI範例

1. 建立新專案
2. 啟動 NDK設定
3. 更名把副檔名換成c
4. 編譯的檔名也要記得更名
5.修訂MainActivity.java
6. 修訂JNI 函式名稱
7. 注意修訂SDK版本
8. 執行結果

2012年8月2日 星期四

hello-jni 測試

今天休颱風假,測試一下hello-jni,跟大家分享。
測試步驟如下:
1. 匯入hello-jni專案
 2.執行結果
3.新增NDK編譯功能
4. 刪除自動產生的檔案
5. 查看C程式,標示許多錯誤 
 6.在專案檔上按下右鍵,選擇對話盒上C/C++ General->Paths and Symbols
 7. 選擇在cygwin上ndk平台的include目錄  C:\cygwin\home\john\android-ndk-r8\platforms\android-14\arch-arm\usr\include
 8.再看一次C程式,已沒有錯誤
9.修改HelloJni.java程式,呼叫未實現的函式
10.編譯成功
11. 再執行有錯誤
 12. 查看LogCat發現錯誤
 13. 編寫未實現的函式

 14.重新執行

2011年5月18日 星期三

Java Native Interface (JNI) 的使用時機及影響

JNI的使用時機及影響

上篇的實作後,整理一下JNI的使用時機及影響:

什麼時機下應該使用JNI
下面提出幾個項目避免使用JNI:
1、JAVA程式和本地程式使用TCP/IP或者IPC。
2、當用JAVA程式連接本地資料庫時,使用JDBC提供的API。
3、JAVA程式可以使用分散式物件技術,如JAVA IDL API。
上述三項共同點是JAVA和C 處於不同的執行緒,或者不同的機器上。這樣當C程式部分異常時,會影響到JAVA程式。

接著那何時需要使用JNI呢? 下列情況是在同一進程內無法避免JNI的使用:
1、程式當中使用到了JAVA API 沒有提供的特殊系統環境加上使用跨進程操無法不現實情況下,如與硬體進行通訊時。
2、想使用一些已經有的本地庫(native library),但又不想付出跨進程調用時的延宕(overhead),如效率,記憶體,資料傳遞方面。
3、JAVA程式當中的一部分代碼對效率要求非常高,如演算法計算,繪圖等。
總之,只有當你必須在同一進程中調用本地代碼(nativecode)時,建議使用JNI。

JNI的副作用:
1、程式失去跨平臺。如想跨平臺在不同的系統環境下須重新編譯C語言部分。
2、影響程式的穩定,本地代碼的不當使用可能導致整個程式損壞或當掉。
通用規則是應該讓本地方法集中在少數幾個類(class)中,減少JAVA和C之間的通訊。

以上詳細內容出至The Java™ Native Interface Programmer's Guide and Specification;請參閱:
1.3 Implications of Using the JNI
1.4 When to Use the JNI

2011年5月16日 星期一

Java Native Interface (JNI) Android實戰篇(使用NDK) -- HelloUart

經過Java Native Interface (JNI)入門 -- 觀念篇Java Native Interface (JNI) 實戰篇後,延續著前兩篇的觀念第三篇繼續討論在Android上實作,本篇主要學習目的是在Android上實現針對UART的傳輸題目就沿用Hello系列稱為HelloUart。