編輯:關於Android編程
首先必須知道JNI是什麼東東?
JNI(Java Native Interface)是java本地語言接口,也就是提供一種方法可以用JAVA調用底層語言(C/C++)。一般如果項目必須使用C語言操作底層的硬件,那就必須用到JNI技術。
那既然要使用JAVA調用C語言,那必須要解決幾個問題?
1:JAVA是面向對象的語言,而C是面向過程的語言
2:JAVA中的Object,String類型,Boolean類型,在C中都是沒有的,那C語言是如何識別的?
其實這些JNI都給我們做好了,在JNI的頭文件#include
typedef unsigned char jboolean; /* unsigned 8 bits */ typedef signed char jbyte; /* signed 8 bits */ typedef unsigned short jchar; /* unsigned 16 bits */ typedef short jshort; /* signed 16 bits */ typedef int jint; /* signed 32 bits */ typedef long long jlong; /* signed 64 bits */ typedef float jfloat; /* 32-bit IEEE 754 */ typedef double jdouble; /* 64-bit IEEE 754 */
/* * Reference types, in C. */ typedef void* jobject; typedef jobject jclass; typedef jobject jstring; typedef jobject jarray; typedef jarray jobjectArray; typedef jarray jbooleanArray; typedef jarray jbyteArray; typedef jarray jcharArray; typedef jarray jshortArray; typedef jarray jintArray; typedef jarray jlongArray; typedef jarray jfloatArray; typedef jarray jdoubleArray; typedef jobject jthrowable; typedef jobject jweak;
注意:在學習JNI之前,需要在Google官網下載NDK安裝,並且配置環境變量。
本次我們學習如何使用JAVA語言調用C語言,然後打印Hello World!
第一步: 建立一個Android Application工程
第二步:在項目根目錄下建議一個文件夾,命名為jni
第三步:在jni文件夾中,創建一個C文件
第四步:在Java代碼,創建一個本地方法: helloFromC
第五步:在hello.c中實現第四步定義的本地函數,但是函數名必須為:Java+包名+Java文件+本地方法名
如: Java_com_demo_helloworld_MainActivity_helloFromC(JNIEnv* env, jobject obj)
第六步:把c的字符串轉化為Java的字符串返回
第七步:在jni文件夾中創建Android.mk文件,這個類似與MakeFile文件
第八步:在jni文件夾下執行ndk-build.cmd指令
第九步:在Java中加載動態庫,調用本地方法
第十步:部署,如果出現以下錯誤
說明CPU平台是補對的,默認是ARM的架構CPU,而我模擬器用的X86的,難道我要新建一個ARM的模擬器,不用那麼麻煩
第十一步:編譯支持X86的平台,在jni文件夾下新建Application.mk文件
可以發現再次編譯,出現了x86的庫
再次部署運行:
可以看到C語言返回的Hello_World可以正常打印出來了。說明JAVA調用C語言成功。
一 布局 如圖: 二 代碼 private Button button; private Handler handler;
前言隨著音視頻領域的火熱,在很多領域(教育,游戲,娛樂,體育,跑步,餐飲,音樂等)嘗試做音視頻直播/點播功能,那麼作為開發一個小白,如何快速學習音視頻基礎知識,了解音視頻
前言相信很多朋友在開發中都會遇到圖片上傳的情況,尤其是多圖上傳,最經典的莫過於微信的圖片選擇了。所有很多情況下會使用到多圖選擇,所以就有了這篇文章,今天抽點時間寫了個控件
一、什麼是Activity?簡單的說:Activity就是布滿整個窗口或者懸浮於其他窗口上的交互界面。在一個應用程序中通常由多個Activity構成,都會在Manifes