您好,登錄后才能下訂單哦!
Android中怎么調用C的函數,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
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="測試按鈕"
android:id="@+id/btncs"
android:onClick="btnclick"/>
</android.support.constraint.ConstraintLayout>
按鈕里面加上了onCLick的事件名稱為btnclick,我們通過Alt+Enter選擇在對應的Activity中創建這個按鈕事件。
MainActivity.java
我們回到MainActivity中,其中原來默認的stringFromJni方法就是直接返回了一個字符串,到時候我們看一下源碼即可。
接下來我們來試一下帶參數的方法怎么實現。
我們新建了一個settextgood的方法,里面有一個輸入參數,和一個返回參數。
可以看到,剛定義完的方法顯示為紅色字體,接下來我們鼠標放到方法名上,然后按ALT+ENTER,選擇下方紅框中的第一項
程序會自動跳轉到native-lib.cpp的文件夾中創建了對應的調用方法
接下來我們編寫這個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=",我是追加的字符";
//定義要輸出的字符并設置長度
char * outputstr = new char[strlen(str)+strlen(addstr)];
//開始組裝輸出的字符
//1.傳入的字符拷貝進來
strcpy(outputstr,str);
//2.連接剛剛定義的追加字符
strcat(outputstr,addstr);
//釋放資源
env->ReleaseStringUTFChars(str_, str);
return env->NewStringUTF(outputstr);
}
最后我們再重新寫了一按鈕事件,點擊進傳入一個“Hello”進去。
我們運行一下程序看看
剛進來時顯示Hello from C++,我們現在再點擊一下測試按鈕后看看結果
看完上述內容,你們掌握 Android中怎么調用C的函數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。