溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android中怎么調(diào)用C的函數(shù)

發(fā)布時(shí)間:2021-06-24 15:56:26 來(lái)源:億速云 閱讀:405 作者:Leah 欄目:大數(shù)據(jù)

Android中怎么調(diào)用C的函數(shù),相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MainActivity">
   <TextView        android:id="@+id/sample_text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent" />
   <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="測(cè)試按鈕"        android:id="@+id/btncs"        android:onClick="btnclick"/></android.support.constraint.ConstraintLayout>

按鈕里面加上了onCLick的事件名稱為btnclick,我們通過(guò)Alt+Enter選擇在對(duì)應(yīng)的Activity中創(chuàng)建這個(gè)按鈕事件。

Android中怎么調(diào)用C的函數(shù)

MainActivity.java

我們回到MainActivity中,其中原來(lái)默認(rèn)的stringFromJni方法就是直接返回了一個(gè)字符串,到時(shí)候我們看一下源碼即可。

接下來(lái)我們來(lái)試一下帶參數(shù)的方法怎么實(shí)現(xiàn)。

我們新建了一個(gè)settextgood的方法,里面有一個(gè)輸入?yún)?shù),和一個(gè)返回參數(shù)。

Android中怎么調(diào)用C的函數(shù)

可以看到,剛定義完的方法顯示為紅色字體,接下來(lái)我們鼠標(biāo)放到方法名上,然后按ALT+ENTER,選擇下方紅框中的第一項(xiàng)

Android中怎么調(diào)用C的函數(shù)

程序會(huì)自動(dòng)跳轉(zhuǎn)到native-lib.cpp的文件夾中創(chuàng)建了對(duì)應(yīng)的調(diào)用方法

Android中怎么調(diào)用C的函數(shù)

接下來(lái)我們編寫(xiě)這個(gè)settextgood的方法


extern "C"JNIEXPORT jstring JNICALLJava_dem_vac_vaccaendk_MainActivity_settextgood(JNIEnv *env, jobject instance, jstring str_) {    const char *str = env->GetStringUTFChars(str_, 0);
   //定義追加的字符    char * addstr=",我是追加的字符";    //定義要輸出的字符并設(shè)置長(zhǎng)度    char * outputstr = new char[strlen(str)+strlen(addstr)];    //開(kāi)始組裝輸出的字符    //1.傳入的字符拷貝進(jìn)來(lái)    strcpy(outputstr,str);    //2.連接剛剛定義的追加字符    strcat(outputstr,addstr);
   //釋放資源    env->ReleaseStringUTFChars(str_, str);
   return env->NewStringUTF(outputstr);}

最后我們?cè)僦匦聦?xiě)了一按鈕事件,點(diǎn)擊進(jìn)傳入一個(gè)“Hello”進(jìn)去。

Android中怎么調(diào)用C的函數(shù)

我們運(yùn)行一下程序看看

Android中怎么調(diào)用C的函數(shù)

剛進(jìn)來(lái)時(shí)顯示Hello from C++,我們現(xiàn)在再點(diǎn)擊一下測(cè)試按鈕后看看結(jié)果

Android中怎么調(diào)用C的函數(shù)

看完上述內(nèi)容,你們掌握 Android中怎么調(diào)用C的函數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI