您好,登錄后才能下訂單哦!
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è)按鈕事件。
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ù)。
可以看到,剛定義完的方法顯示為紅色字體,接下來(lái)我們鼠標(biāo)放到方法名上,然后按ALT+ENTER,選擇下方紅框中的第一項(xiàng)
程序會(huì)自動(dòng)跳轉(zhuǎn)到native-lib.cpp的文件夾中創(chuàng)建了對(duì)應(yīng)的調(diào)用方法
接下來(lái)我們編寫(xiě)這個(gè)settextgood的方法
extern "C"
JNIEXPORT jstring JNICALL
Java_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)去。
我們運(yùn)行一下程序看看
剛進(jìn)來(lái)時(shí)顯示Hello from C++,我們現(xiàn)在再點(diǎn)擊一下測(cè)試按鈕后看看結(jié)果
看完上述內(nèi)容,你們掌握 Android中怎么調(diào)用C的函數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(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)容。