コード例 #1
0
static char *android_get_clipboard_text(ALLEGRO_DISPLAY *display)
{
   JNIEnv * env = (JNIEnv *)_al_android_get_jnienv();
   jobject jtext = _jni_callObjectMethod(env, _al_android_activity_object(), "getClipboardText", "()Ljava/lang/String;");
   jsize len = _jni_call(env, jsize, GetStringUTFLength, jtext);
   const char *str = _jni_call(env, const char *, GetStringUTFChars, jtext, NULL);
   char * text =  al_malloc(len+1);
   (void) display;

   text = _al_sane_strncpy(text, str, len);
   _jni_callv(env, ReleaseStringUTFChars, jtext, str);
   _jni_callv(env, DeleteLocalRef, jtext);

   return text;
}
コード例 #2
0
ファイル: android.cpp プロジェクト: LibreGames/monster-rpg-2
bool isAndroidConsole()
{
#if defined OUYA
	return true;
#endif

	static bool first = true;
	static bool is_console;

	if (!first) {
		return is_console;
	}

	first = false;
	is_console = false;

	JNIEnv *env = _al_android_get_jnienv();
	jobject object = _al_android_activity_object();

	jclass class_id = _jni_call(env, jclass, GetObjectClass, object);
	jmethodID method_id = _jni_call(env, jmethodID, GetMethodID, class_id, "getModel", "()Ljava/lang/String;");
	jstring s = (jstring)_jni_call(env, jobject, CallObjectMethod, object, method_id);

	if (s == NULL)
		return false;
	
	const char *native = _al_android_get_jnienv()->GetStringUTFChars(s, 0);

	if (strstr(native, "OUYA")) {
		is_console = true;
	}
	else if (!strncmp(native, "AFTB", 4) || !strncmp(native, "AFTM", 4)) {
		jmethodID method_id2 = _jni_call(env, jmethodID, GetMethodID, class_id, "getManufacturer", "()Ljava/lang/String;");
		jstring s2 = (jstring)_jni_call(env, jobject, CallObjectMethod, object, method_id2);
		const char *native2 = _al_android_get_jnienv()->GetStringUTFChars(s2, 0);
		if (!strcmp(native2, "Amazon")) {
			is_console = true;
		}
		_al_android_get_jnienv()->ReleaseStringUTFChars(s2, native2);
		_jni_callv(env, DeleteLocalRef, s2);
	}

	_al_android_get_jnienv()->ReleaseStringUTFChars(s, native);
	_jni_callv(env, DeleteLocalRef, s);
	_jni_callv(env, DeleteLocalRef, class_id);

	return is_console;
}
コード例 #3
0
ファイル: android.cpp プロジェクト: LibreGames/monster-rpg-2
static jobject _jni_callObjectMethod(JNIEnv *env, jobject object, const char *name, const char *sig)
{
   jclass class_id = _jni_call(env, jclass, GetObjectClass, object);
   jmethodID method_id = _jni_call(env, jmethodID, GetMethodID, class_id, name, sig);
   jobject ret = _jni_call(env, jobject, CallObjectMethod, object, method_id);
   _jni_callv(env, DeleteLocalRef, class_id);
   
   return ret;
}
コード例 #4
0
static bool fs_apk_open_directory(ALLEGRO_FS_ENTRY *fse)
{
   ALLEGRO_FS_ENTRY_APK *e = (ALLEGRO_FS_ENTRY_APK *)fse;

   JNIEnv *jnienv;
   jnienv = _al_android_get_jnienv();
   jstring jpath = (*jnienv)->NewStringUTF(jnienv, e->path_cstr);
   jstring js = _jni_callStaticObjectMethodV(jnienv,
      _al_android_apk_fs_class(), "list",
      "(L" ALLEGRO_ANDROID_PACKAGE_NAME_SLASH "/AllegroActivity;Ljava/lang/String;)Ljava/lang/String;",
      _al_android_activity_object(), jpath);

   const char *cs = _jni_call(jnienv, const char *, GetStringUTFChars, js, NULL);
   e->file_list = al_malloc(strlen(cs) + 1);
   strcpy(e->file_list, cs);
   e->file_list_pos = e->file_list;

   _jni_callv(jnienv, ReleaseStringUTFChars, js, cs);
   _jni_callv(jnienv, DeleteLocalRef, js);
   _jni_callv(jnienv, DeleteLocalRef, jpath);

   e->is_dir_open = true;
   return true;
}