1、从java中传递过来一个二维数组,JNI获取到这个数组的 行和列; 并且获取到数组内的值来计算;

JNIEXPORT jdouble Java_com_example_test1_MyJni_Eig(JNIEnv *env, jobject,jobjectArray arrayData)
用 jobjectArray传递数组,下面代码实现的是获取到这个数组的行和列
jint row = env->GetArrayLength(arrayData); //行数jarray myarray = (jobjectArray) env->GetObjectArrayElement(arrayData, 0);jint col = env->GetArrayLength(myarray); //得到列数
需要注意强制转换,要不会报错。下面代码是把值取出,
jdouble aa[row][col];//取出数据从jobjectArray中for (i = 0; i < row; i++) {myarray = (jobjectArray) env->GetObjectArrayElement(arrayData, i);jdouble *data = (*env).GetDoubleArrayElements((jdoubleArray) myarray,0);for (j = 0; j < col; j++) {aa[i][j] = data[j]; //取出数据}}
这里面可以实现数组的动态创建,例如jdouble[row][col];

2、解析完传递过的二维数组,然后可以进行创建一个二维数组,用于返回

//开始构建数组对象,用于返回;jobjectArray result;jclass doubleArr = env->FindClass("[D");result = env->NewObjectArray(N, doubleArr, NULL);for (jint i = 0; i < n; i++) {jdouble tmp[2 * n];jdoubleArray iarr = env->NewDoubleArray(2 * n);for (jint j = 0; j < 2 * n; j++) {if (vec[i][j] < 0.000001)if (vec[i][j] > -0.000001)vec[i][j] = 0.0;tmp[j] = vec[i][j];}env->SetDoubleArrayRegion(iarr, 0, 2 * n, tmp);env->SetObjectArrayElement(result, i, iarr);env->DeleteLocalRef(iarr);}
3、调试JNI,用于日志输出,显示在LOGCAT上。

包含进头文件#include<android/log.h>

输出用这条语句:

__android_log_print(ANDROID_LOG_INFO, "JNILog", "vec== %0.4f",vec[i][j]);

里面的参数:ANDROID_LOG_INFO:是日志级别;"JNILog":是要过滤的标签,可以在LogCat视图中过滤。“vec==”,vec[i][j]:是实际的日志内容。

同时还必须在Android.mk文件中加入:
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
4、





















更多相关文章

  1. Android(安卓)开发——浅谈onInterceptTouchEvent、onTouchEvent
  2. IBinder对象在进程间传递的形式(二)
  3. 解决android客户端上传图片到服务端时,图片损坏的问题
  4. Android中使用Bundle交换数据
  5. Android(安卓)Intent传递对象的两种方法(Serializable,Parcelabl
  6. ViewGroup中的onInterceptTouchEvent和onTouchEvent调用时序
  7. Android(安卓)studio上面学习Aidl实现复杂数据类型的传递
  8. Android(安卓)View事件传递详解
  9. android 事件处理--onInterceptTouchEvent和onTouchEvent调用时

随机推荐

  1. Android实现左右滑动效果
  2. Android属性动画(三) TimeInterpolator(插值
  3. Activity 的四种加载模式
  4. 在Android Studio中使用Android-PullToRe
  5. Android 开发经验传承
  6. Camera服务之--架构浅析
  7. Android(安卓)高通平台camera hal层调试
  8. 建立android新工程
  9. Android 用Mediacodec硬解码视频包AVpack
  10. Android实现动态改变app图标的示例代码