編輯:關於Android編程
當你的Android之旅一步步的深入的時候,你其實會發現,很多東西都必須去和framework或者底層打交道,還有就是混合編程之類的,以及新語言,新特性,各種牛人研究的黑科技,應接不暇,技術更新迭代太快了,我們要趕緊加快步伐了,今天就開始來入坑了——JNI,這個坑是必須要進的,啥也不說了,老司機,帶我!
Java Native Interface(java本地接口)
說白了,JNI相當於一個協議,通過這個協議溝通java代碼和外部的本地代碼(C/C++),通過這個協議,這兩門語言就可以相互調用了
1.物聯網,智能家居,車載電腦 2.效率上C/C++語言效率更高 3.代碼移植,復用已經存在的C代碼 4.java反編譯比C語言容易這個和我本身要學這個JNI的目的是一樣的,我現在就在做車載方面的
我們從C/C++語言開始學起,慢慢來完善JNI
新知識,漲姿勢嘛,總是要學的,各位看官老爺傾聽我慢慢道來,要用JNI調用C的話,其實還有一個痛點,就是你必須會這門語言才吃到怎麼去用他的方法,所以我們必須花上幾天的時間把C的基本概念和知識點給學會,其實編程思想有點類似,JAVA和C有一些基本的東西還是類似的,主要是C的指針還是有點抽象,跟以前學面向對象一樣一樣的,哈哈,污污污污….工欲善其事必先利其器,我們先把學C所用到的開發環境給部署一下
安裝完成之後我們就可以運行了
當我們一切都准備好了的時候,我們就可以來編寫程序了,也就是注明的“Hello World”,現在看到helloworld是不是有一種很懷念的感覺
我們點擊左上角的文件-新建-源代碼,寫上這麼一段代碼(先不要管什麼意思,照著敲就行)
#include
#include //和JAVA需要的包類似 導包
//main函數
main(){
//輸出語句
printf("Hello World");
}
然後我們把他保存為C文件
我們要運行就得編譯,用慣了Eclipse,Eclipse有自動編譯的選項,而dev-c++是沒有的,我們手動編譯一下<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20160414/20160414090931348.png" title="\" />
我們可以看到上面有條工具欄,第一個就是編譯了,第二個就是運行
出現Done說明編譯完成,我們可以運行了,不過編譯會一閃而過,因為是命令窗,具體的停留的我忘記了,和提前java有點類似
這裡只要注意一點的是main。在C中,main函數也是程序的入口嗎,C中的函數和java的方法是一個概念,只是叫法不一樣
六.C語言啟動JAVA程序
C是可以直接調用windows指令的,既然如此,我們可以仿照我們程序的快捷方式的例子去做一個軟啟動方式,說起來有點迷糊哈,我們舉個例子,我們來到Eclipse的安裝目錄,你可以看到這樣的一個目錄
其中,我們的快捷方式只有只有314k,卻能啟動這個程序,這就是windows的特長了,而我們的C是可以直接使用windows的指令的,所以我們就可以間接的使用C去調用JAVA了
回到正題,我們剛才舉的例子,其實從快捷方式的配置文件eclipse.ini中就可以詳細的看到
我們把他打開
-startup plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316 -product org.eclipse.epp.package.java.product --launcher.defaultAction openFile --launcher.XXMaxPermSize 256M -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile --launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx512m
我們不難發現,當我們啟動的時候,他會執行plugins目錄下的org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar架包,你雙擊他你會驚奇的發現,你竟然啟動了eclipse,這就是windows啟動的原理了,好了,既然邏輯通了,那我們就來寫C代碼吧!不過事先我們得准備一個java文件,我就把他放在C源碼目錄下好了
public class HelloWorld{ public static void main(String[] str){ //輸出語句 System.out.println("HelloWorld"); } }
你可別忘了這個是要編譯的….
好了,寫吧
#include
#include //和JAVA需要的包類似 //main函數 main(){ //輸出語句 system("java HelloWorld"); system("pause"); } 這裡,只要寫一句
system("java HelloWorld");
因為是同一個目錄下,所以不需要寫路徑,我們運行就可以直接看到打印的HelloWorld了
Android的繪圖繼承於View組件,重寫onDraw(Canvas canvas) 方法時涉及一個繪圖API: Canvas 代表了依附於指定View的畫布,並且提供
1、首先對manifest注冊SD卡讀寫權限 要說明一下,我這裡沒有用MainActivity.class作為軟件入口 復制代碼 代碼如下: AndroidManifes
通過布局編輯器創建UI在你Android Studio的布局編輯器中,你可以快速地通過將控件拖入視覺編輯器來代替手寫XML來快速地創建布局。編輯器可以預覽布局在不同版本和
本文實例講述了Android編程開發之NotiFication用法。分享給大家供大家參考,具體如下:notification就是通知的意思,安卓中指通知欄,一般用在電話,