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

转载请标明出处:
http://blog.csdn.net/michael1112/article/details/56672288

江东橘子的博客



前面讲到了Java和native数据类型,这里就开始做一下使用:

       第一步:新建工程

       第二:书写 java方法:

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);
}  

第三:调用javah命令生成h文件。

第四:补充native方法,如下

#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;
} 

第五步 调用native 方法

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 江东橘子
* 邮箱:whtchl@126.com
*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值