Java與C互相調(diào)用

Java與C互相調(diào)用

ID:40748326

大小:642.50 KB

頁數(shù):15頁

時間:2019-08-07

Java與C互相調(diào)用_第1頁
Java與C互相調(diào)用_第2頁
Java與C互相調(diào)用_第3頁
Java與C互相調(diào)用_第4頁
Java與C互相調(diào)用_第5頁
資源描述:

《Java與C互相調(diào)用》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、AndroidNDK開發(fā)(1)-----Java與C互相調(diào)用實例詳解一、概述對于大部分應(yīng)用開發(fā)者來說可能都不怎么接觸到NDK,但如果涉及到硬件操作的話就不得不使用NDK了。使用NDK還有另一個原因,就是C/C++的效率比較高,因此我們可以把一些耗時的操作放在NDK中實現(xiàn)。所以NDK主要做驅(qū)動的開發(fā)。在java中調(diào)用一個本地方法,然后由該本地方法直接返回一個參數(shù)給java(例如,在java中定義的本地方法為privateintcallJNI(inti))。但在大多數(shù)時候要求的并不是由開發(fā)者在java層主動去調(diào)JNI中的函數(shù)來返回想要的數(shù)據(jù),而是由JNI主動去調(diào)java中的函

2、數(shù)。舉個最簡單的例子,Android中的Camera,圖像數(shù)據(jù)由內(nèi)核一直往上傳到j(luò)ava層,然而這些數(shù)據(jù)的傳遞并不需要開發(fā)者每一次主動去調(diào)用來JNI中的函數(shù)來獲取,而是由JNI主動傳給用java中方法,這類似于Linux驅(qū)動機制中的異步通知。二、要求用NDK實現(xiàn)Java與C/C++互調(diào),實現(xiàn)int,string,byte[]這三種類型的互相傳遞。三、實現(xiàn)下面的實現(xiàn)中,每次java調(diào)用JNI中的某個函數(shù)時,最后會在該函數(shù)里回調(diào)java中相應(yīng)的方法而不是直接返回一個參數(shù)??赡苣銜X得這不還是每次都是由開發(fā)者來主動調(diào)用嗎,其實這只是為了講解而已,在實際應(yīng)用中,回調(diào)java中的方

3、法應(yīng)該由某個事件(非java層)來觸發(fā)。步驟:(1)Java類里的聲明packagecom.ljt.work;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;publicclassLj

4、tndkActivityextendsActivity{//本地方法,由java調(diào)用privatenativevoidcallJNIInt(inti);privatenativevoidcallJNIString(Strings);privatenativevoidcallJNIByte(byte[]b);static{//加載本地庫System.loadLibrary("myjni");}privateButtonintButton=null;privateButtonstringButton=null;privateButtonarrayButton=null;pri

5、vateTextViewintTextView=null;privateTextViewstringTextView=null;privateTextViewarrayTextView=null;//定義一個處理線程的機制privateHandlermHandler=null;@SuppressLint("HandlerLeak")@OverrideprotectedvoidonCreate(BundlesavedInstanceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);

6、setContentView(R.layout.main);intButton=(Button)this.findViewById(R.id.intbutton);//注冊按鈕監(jiān)聽intButton.setOnClickListener(newClickListener());stringButton=(Button)this.findViewById(R.id.stringbutton);//注冊按鈕監(jiān)聽stringButton.setOnClickListener(newClickListener());arrayButton=(Button)this.findVie

7、wById(R.id.arraybutton);//注冊按鈕監(jiān)聽arrayButton.setOnClickListener(newClickListener());intTextView=(TextView)this.findViewById(R.id.inttextview);stringTextView=(TextView)this.findViewById(R.id.stringtextview);arrayTextView=(TextView)this.findViewById(R.id.arraytextview)

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。