日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android JNI入门第五篇——基本数据类型使用

發布時間:2023/12/2 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android JNI入门第五篇——基本数据类型使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面講到了java和native數據類型,這里就開始做一下使用:

?????? 第一步:新建工程

?????? 第二部:書寫 java方法:

[java]?view plaincopyprint?
  • public?class?NativeMethod?{??
  • ??
  • ????static?{??
  • ????????System.loadLibrary("com_nedu_jni_jnidemo5-jni");??
  • ????}??
  • ????public?native?boolean?getBoolean(boolean?b);??
  • ??????
  • ????public?native?byte?getByte(byte?b);??
  • ??????
  • ????public?native?char?getChar(char?c);??
  • ??????
  • ????public?native?short?getShort(short?s);??
  • ??????
  • ????public?native?int?getInt(int?i);??
  • ??????
  • ????public?native?long?getLong(long?l);??
  • ??????
  • ????public?native?float?getFloat(float?f);??
  • ??????
  • ????public?native?double?getDouble(double?d);??
  • }??
  • ?

    ?????????? 第三部:調用javac、javah命令生成h文件。

    ???????????第四部:補充native方法,如下:

    [cpp]?view plaincopyprint?
  • #include<stdio.h>????
  • #include?<stdlib.h>????
  • #include?"com_nedu_jni_jnidemo5_NativeMethod.h"????
  • ??
  • ??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getBoolean?
  • ?*?Signature:?(Z)Z?
  • ?*/??
  • JNIEXPORT?jboolean?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getBoolean??
  • ??(JNIEnv?*e,?jobject?thiz,?jboolean?b){??
  • ????
  • ??????return?b;??
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getByte?
  • ?*?Signature:?(B)B?
  • ?*/??
  • JNIEXPORT?jbyte?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getByte??
  • ??(JNIEnv?*e,?jobject?thiz,?jbyte?by){??
  • ?????return?by;??
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getChar?
  • ?*?Signature:?(C)C?
  • ?*/??
  • JNIEXPORT?jchar?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getChar??
  • ??(JNIEnv?*e,?jobject?thiz,?jchar?c){??
  • ???return?c;??
  • ?????
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getShort?
  • ?*?Signature:?(S)S?
  • ?*/??
  • JNIEXPORT?jshort?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getShort??
  • ??(JNIEnv?*e,?jobject?thiz,?jshort?s){??
  • ?????return?s;??
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getInt?
  • ?*?Signature:?(I)I?
  • ?*/??
  • JNIEXPORT?jint?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getInt??
  • ??(JNIEnv?*e,?jobject?thiz,?jint?i){??
  • ????????return?i;??
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getLong?
  • ?*?Signature:?(J)J?
  • ?*/??
  • JNIEXPORT?jlong?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getLong??
  • ??(JNIEnv?*e,?jobject?thiz,?jlong?l){??
  • ????
  • ?????????return?l;??
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getFloat?
  • ?*?Signature:?(F)F?
  • ?*/??
  • JNIEXPORT?jfloat?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getFloat??
  • ??(JNIEnv?*e,?jobject?thiz,?jfloat?f){??
  • ????????return?f;??
  • ??}??
  • ??
  • /*?
  • ?*?Class:?????com_nedu_jni_jnidemo5_NativeMethod?
  • ?*?Method:????getDouble?
  • ?*?Signature:?(D)D?
  • ?*/??
  • JNIEXPORT?jdouble?JNICALL?Java_com_nedu_jni_jnidemo5_NativeMethod_getDouble??
  • ??(JNIEnv?*e,?jobject?thiz,?jdouble?d){??
  • ????
  • ????????return?d;??
  • ??}??
  • ?????? 第五步:制作mk文件

    ?

    [plain]?view plaincopyprint?
  • LOCAL_PATH?:=?$(call?my-dir)??
  • ??
  • include?$(CLEAR_VARS)??
  • ??
  • LOCAL_MODULE????:=?com_nedu_jni_jnidemo5-jni??
  • LOCAL_SRC_FILES?:=NativeMethod.c??
  • ??
  • include?$(BUILD_SHARED_LIBRARY)??

  • ?

    ????? 第六步:調用native方法

    [java]?view plaincopyprint?
  • public?void?onCreate(Bundle?savedInstanceState)?{??
  • ???????super.onCreate(savedInstanceState);??
  • ???????setContentView(R.layout.main);??
  • ?????????
  • ???????TextView?text=(TextView)findViewById(R.id.text);??
  • ???????NativeMethod?method=new?NativeMethod();??
  • ?????????
  • ???????text.setText("返回boolean:"+method.getBoolean(true)+"\n"+??
  • ????????????"返回byte:"+method.getByte((byte)?0)+"\n"+??
  • ????????????"返回char:"+method.getChar('c')+"\n"+??
  • ????????????"返回short:"+method.getShort((short)?1)+"\n"+??
  • ????????????"返回int:"+method.getInt(1)+"\n"+??
  • ????????????"返回long:"+method.getLong(9)+"\n"+??
  • ????????????"返回float:"+method.getFloat((float)?1.0)+"\n"+??
  • ????????????"返回double:"+method.getDouble(2.0)+"\n");??
  • ???}??
  • ?

    運行截圖:


    總結:JNI中傳過來的java基本類型可以直接使用。

    /**
    * @author 張興業
    * 郵箱:xy-zhang#163.com
    * android開發進階群:278401545
    *
    */

    ?

    [java]?view plaincopyprint?
  • ???
  • 轉載于:https://www.cnblogs.com/Free-Thinker/p/4500260.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Android JNI入门第五篇——基本数据类型使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。