NDKTest.cpp文件内容
#include<android/log.h> //引入Adnroid打印日志文件
#include <jni.h>
#ifndef NULL
#define NULL ((void *) 0)
#endif
#define LOG "NDKTest" // 日志打印标识
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG,__VA_ARGS__) // 对应Adnroid中DEBUGg模式,下类似
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG,__VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG,__VA_ARGS__)
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG,__VA_ARGS__)
extern "C" //为了兼容C++
{
JNIEXPORT jstring JNICALL Java_ndk_test_JNI_getString(JNIEnv *env,jobject thiz) {
return env->NewStringUTF("Hello jni");
}
}
/**
* 实现原生方法
*/
extern "C"
{
JNIEXPORT jint JNICALL Java_ndk_test_JNI_plus(JNIEnv *env,jobject thiz,jint a, jint b) {
return a+b;
}
}
extern "C"
{
JNIEXPORT jint JNICALL Java_ndk_test_JNI_operateArray(JNIEnv *env, jobject obj, jintArray arr1 , jintArray arr2)
{
jint *a1;
jint i,result=0;
jint a2[10];
unsigned char * null;
jint length_1,length_2;
length_1 = env->GetArrayLength(arr1);
length_2 = env->GetArrayLength(arr2);
if(length_1==0||length_2==0)
{
return 0;
}
a1=env->GetIntArrayElements(arr1,null);
env->GetIntArrayRegion(arr2,0,length_2,a2);
for(i=0;i<length_2;i++)
{
result += a2[i]*a1[i];
LOGI("长度%d,%d",result,result);
}
return result;
}
}
Android中NDK开发时使用数组
最新推荐文章于 2023-03-13 15:49:13 发布