你的位置:首页 > 操作系统

[操作系统]Android java传递int类型数据给C


本文根据《Android jni简便开发流程》中的开发流程来实现一个java传递int类型数据给C

新建项目,进行简单的布局

<LinearLayout ="http://schemas.android.com/apk/res/android"  ="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  tools:context=".MainActivity" >  <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:onClick="click"    android:text="传递int类型参数" /></LinearLayout>

新建JNI.java

package com.wuyudong.javapassdata;public class JNI {  //传递两个int类型的变量给C,让C加一下返回  static{    System.loadLibrary("passdata");  }  public native int add(int x, int y);  public native String sayHelloInC(String s);  public native int[] arrElementsIncrease(int[] intArray);}

自动生成jni文件夹,进行相关的修改

passdata.c

#include <jni.h>/* * Class:   com_wuyudong_javapassdata_JNI * Method:  add * Signature: (II)I */JNIEXPORT jint JNICALL Java_com_wuyudong_javapassdata_JNI_add(JNIEnv * env,    jobject clazz, jint x, jint y) {  return x + y;}

MainActivity.java中的代码如下:

package com.wuyudong.javapassdata;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.Toast;public class MainActivity extends Activity {  public JNI jni;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    jni = new JNI();  }  public void click(View v) {    Toast.makeText(getApplicationContext(), jni.add(3, 4)+"", 0).show();  }}

运行项目