示例#1
0
static jobject
cuttherope_CallObjectMethodV(JNIEnv *env, jobject p1, jmethodID p2, va_list p3)
{
    MODULE_DEBUG_PRINTF("cuttherope_CallObjectMethodV %s (%s)\n",p2->name,p2->sig);
    struct dummy_array *array;

    if (strcmp(p2->name, "loadData") == 0) {
        struct dummy_jstring *arg;
        arg = va_arg(p3, struct dummy_jstring*);
        jboolean flag = va_arg(p3, jint);
        (void)flag;

        char *filename = malloc(strlen(arg->data) + strlen("assets/") + 1);
        sprintf(filename, "assets/%s", arg->data);

        MODULE_DEBUG_PRINTF("   data=%s\n",arg->data);

        if ((array = GLOBAL_J(env)->read_file_to_jni_array(filename))) {

            MODULE_DEBUG_PRINTF("   data=%s size=%d\n", arg->data, array->length);

	    // Poll for events here to avoid "not responding" messages
            SDL_Event e;
            while (SDL_PollEvent(&e));

            return array;
        } else {
            MODULE_DEBUG_PRINTF("   data=%s not found\n",arg->data);
            return GLOBAL_J(env);
        }
    }
    else if (strcmp(p2->name, "getBytesOfBitmap") == 0) {
示例#2
0
jobject
worldofgoo_CallObjectMethodV(JNIEnv *env, jobject p1, jmethodID p2, va_list p3)
{
    if (strcmp(p2->name, "getApkPath") == 0) {
        return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename);
    } else if (strcmp(p2->name, "getExternalStoragePath") == 0) {
        return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory);
    } else if (strcmp(p2->name, "getInternalStoragePath") == 0) {
        return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory);
    } else if (strcmp(p2->name, "getLanguage") == 0) {
        return (*env)->NewStringUTF(env, "");
    } else if (strcmp(p2->name, "playSound") == 0) {
        // TODO: Play sound (doh!)
    } else {
        printf("Do not know what to do: %s\n", p2->name);
        exit(1);
    }
    return GLOBAL_J(env);
}
示例#3
0
文件: unity.c 项目: Cordia/apkenv
jobject JNIEnv_CallObjectMethod(JNIEnv* env, jobject p1, jmethodID p2, ...)
{
    MODULE_DEBUG_PRINTF("CallObjectMethod %x %x\n",p1,p2);

    //dummy_jobject* obj = p1;
    jmethodID method = p2;

    if (strcmp(method->name,"getPackageCodePath")==0)
        return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename);

    return NULL;
}
示例#4
0
文件: unity.c 项目: Cordia/apkenv
jobject
JNIEnv_CallStaticObjectMethod(JNIEnv* env, jclass p1, jmethodID p2, ...)
{
    struct dummy_jclass* clazz = p1;
    jmethodID method = p2;

    MODULE_DEBUG_PRINTF("JNIEnv_CallStaticObjectMethod(%s,%s)\n",clazz->name,method->name);

    if (strcmp(method->name,"getProperty")==0) {
        //jstring property = va_arg(p3,jstring);
        //const char* prop = (*env)->
        //dummy_jobject* obj = malloc(sizeof(dummy_jobject));
        //return obj;
        return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename);
    }
    else
    if (strcmp(method->name,"getPackageCodePath")==0) {
        return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename);
    }

    return NULL;
}
示例#5
0
文件: unity.c 项目: Cordia/apkenv
const char *
JNIEnv_GetStringUTFChars(JNIEnv *env, jstring string, jboolean *isCopy)
{
    MODULE_DEBUG_PRINTF("JNIEnv_GetStringUTFChars(%x)\n", string);
    if (string == GLOBAL_J(env)) {
        MODULE_DEBUG_PRINTF("WARNING: GetStringUTFChars on global\n");
        return NULL;
    }
    if (string == NULL) {
        return strdup("");
    }
    struct dummy_jstring *str = (struct dummy_jstring*)string;
    MODULE_DEBUG_PRINTF(" \\-> %s\n", str->data);
    return str->data;
}
示例#6
0
jobject
worldofgoo_CallObjectMethodV(JNIEnv *env, jobject p1, jmethodID p2, va_list p3)
{
    MODULE_DEBUG_PRINTF("worldofgoo_CallObjectMethodV %x %s\n", p1, p2->name);
    if (strcmp(p2->name, "getApkPath") == 0) {
        return (*env)->NewStringUTF(env, GLOBAL_J(env)->apk_filename);
    } else if (strcmp(p2->name, "getExternalStoragePath") == 0) {
        return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory);
    } else if (strcmp(p2->name, "getInternalStoragePath") == 0) {
        return (*env)->NewStringUTF(env, worldofgoo_priv.home_directory);
    } else if (strcmp(p2->name, "getLanguage") == 0) {
        return (*env)->NewStringUTF(env, "");
    } else if (strcmp(p2->name, "playSound") == 0) {
        struct dummy_jstring *name = va_arg(p3, struct dummy_jstring *);
        int loop = va_arg(p3, int);
        double volume = va_arg(p3, double);
        void *ret;
        MODULE_DEBUG_PRINTF("playSound '%s', %d, %f\n", name->data, loop, volume);
        ret = play_sound(name->data, loop, volume);
        MODULE_DEBUG_PRINTF(" = %p\n", ret);
        return ret;
    } else {