jni返回结构体数组.这个卡了我两天.好郁闷.从网上找了好多的办法都不成功. 可能是人品问题,呵呵呵
好在现在搞定了.把源码贴出来让大家也看看,希望能帮到那些和我人品不好的人嘿嘿..
其实回想起来.挺简单的. 返回结构体数组有如下步骤.
/*
* 返回一个结构体数组步骤
* 1.通过FindClass找到要返回的android中定义的class.
* 2.通过NewObjectArray创建一个要返回的结构体数组.
* 3.通过GetMethodID得到你要返回的class的默认构造方法
* 4.通过GetFieldID得到定义的class里面所有的成员
* 5.通过NewObject创建一个对应的class对象
* 6.通过SetObjectField为5创建的class对象赋值(如果字段为int,那么就用SetIntField这个方法)
* 7.通过SetObjectArrayElement把创建的class对象放到创建的objectArray里面去
* 8.返回这个objectArray对象.
* 9.完成. 就这么简单.
* */
是不是简单啊. 嘿嘿嘿嘿.
好.现在看是放源码.
android 代码.
这个代码是activity 代码
package com.example.jnitest2;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MX2 changeJni = new MX2();
changeJni.displayParms("Hello World!", 100, true);
int ret = changeJni.add(12, 20);
Log.e("logZ", "相加结果为:"+ret);
boolean[] blList = new boolean[] { true, false, true };
changeJni.setArray(blList);
String[] strList = changeJni.getStringArray();
for (int i = 0; i < strList.length; i++)
{
Log.e("logZ", "第"+i+"string为:"+ strList[i]);
}