Info library loading implemeneted.

pull/204/head
Alexander Smorkalov 12 years ago
parent 9823b7cd08
commit 0f64f847b2
  1. 93
      android/service/engine/jni/JNIWrapper/OpenCVLibraryInfo.cpp
  2. 2
      android/service/engine/src/org/opencv/engine/OpenCVLibraryInfo.java

@ -1,37 +1,108 @@
#include "OpenCVLibraryInfo.h"
#include "EngineCommon.h"
#include <utils/Log.h>
#include <dlfcn.h>
JNIEXPORT jlong JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_open
(JNIEnv * env, jobject, jstring)
(JNIEnv * env, jobject, jstring str)
{
return 255;
const char* infoLibPath = env->GetStringUTFChars(str, NULL);
if (infoLibPath == NULL)
return 0;
LOGD("Trying to load info library \"%s\"", infoLibPath);
void* handle;
handle = dlopen(infoLibPath, RTLD_LAZY);
if (handle == NULL)
LOGI("Info library not found by path \"%s\"", infoLibPath);
return (jlong)handle;
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPackageName
(JNIEnv* env, jobject, jlong)
(JNIEnv* env, jobject, jlong handle)
{
return env->NewStringUTF("org.opencv.lib_v24_tegra3");
const char* (*info_func)();
const char* result;
const char* error;
dlerror();
*(void **) (&info_func) = dlsym((void*)handle, "GetPackageName");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getPublicName
(JNIEnv* env, jobject, jlong)
{
return env->NewStringUTF("OpenCV library for Tegra3");
const char* (*info_func)();
const char* result;
const char* error;
dlerror();
*(void **) (&info_func) = dlsym((void*)handle, "GetPublicName");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getLibraryList
(JNIEnv* env, jobject, jlong)
(JNIEnv* env, jobject, jlong handle)
{
return env->NewStringUTF("");
const char* (*info_func)();
const char* result;
const char* error;
dlerror();
*(void **) (&info_func) = dlsym((void*)handle, "GetLibraryList");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT jstring JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_getVersionName
(JNIEnv* env, jobject, jlong)
(JNIEnv* env, jobject, jlong handle)
{
return env->NewStringUTF("9.9");
const char* (*info_func)();
const char* result;
const char* error;
dlerror();
*(void **) (&info_func) = dlsym((void*)handle, "GetRevision");
if ((error = dlerror()) == NULL)
result = (*info_func)();
else
{
LOGE("dlsym error: \"%s\"", error);
result = "unknown";
}
return env->NewStringUTF(result);
}
JNIEXPORT void JNICALL Java_org_opencv_engine_OpenCVLibraryInfo_close
(JNIEnv* env, jobject, jlong)
(JNIEnv*, jobject, jlong handle)
{
dlclose((void*)handle);
}

@ -2,7 +2,7 @@ package org.opencv.engine;
public class OpenCVLibraryInfo {
public OpenCVLibraryInfo(String packagePath) {
mNativeObj = open(packagePath);
mNativeObj = open(packagePath + "/libopencv_info.so");
if (mNativeObj != 0) {
mPackageName = getPackageName(mNativeObj);
mLibraryList = getLibraryList(mNativeObj);

Loading…
Cancel
Save