Setup environment for SRD on Android

This commit is contained in:
Marcus Comstedt 2014-07-16 16:16:10 +02:00 committed by Uwe Hermann
parent 2680706127
commit 82b23ce795
2 changed files with 66 additions and 0 deletions

View File

@ -243,6 +243,12 @@ if(ENABLE_DECODE)
pv/widgets/decodergroupbox.h
pv/widgets/decodermenu.h
)
if(ANDROID)
list(APPEND pulseview_SOURCES
android/envsetup.cpp
)
endif()
endif()
if(WIN32)

60
android/envsetup.cpp Normal file
View File

@ -0,0 +1,60 @@
/*
* This file is part of the PulseView project.
*
* Copyright (C) 2014 Marcus Comstedt <marcus@mc.pp.se>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <jni.h>
#include <stdlib.h>
jint JNI_OnLoad(JavaVM *vm, void *reserved)
{
JNIEnv* env;
(void)reserved;
if (vm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) {
return -1;
}
jclass envc = env->FindClass("org/sigrok/androidutils/Environment");
jmethodID getEnv = env->GetStaticMethodID(envc, "getEnvironment",
"()[Ljava/lang/String;");
jobjectArray envs =
(jobjectArray)env->CallStaticObjectMethod(envc, getEnv);
jsize i, envn = env->GetArrayLength(envs);
for (i=0; i<envn; i+=2) {
jstring key = (jstring)env->GetObjectArrayElement(envs, i);
jstring value = (jstring)env->GetObjectArrayElement(envs, i+1);
const char *utfkey = env->GetStringUTFChars(key, 0);
const char *utfvalue = env->GetStringUTFChars(value, 0);
setenv(utfkey, utfvalue, 1);
env->ReleaseStringUTFChars(value, utfvalue);
env->ReleaseStringUTFChars(key, utfkey);
env->DeleteLocalRef(value);
env->DeleteLocalRef(key);
}
env->DeleteLocalRef(envs);
env->DeleteLocalRef(envc);
return JNI_VERSION_1_6;
}
void JNI_OnUnload(JavaVM *vm, void *reserved)
{
(void)vm;
(void)reserved;
}