Exemple #1
0
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;
}
Exemple #2
0
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;
}
static bool android_set_clipboard_text(ALLEGRO_DISPLAY *display, const char *text)
{
   JNIEnv * env = (JNIEnv *)_al_android_get_jnienv();
   jstring jtext= _jni_call(env, jstring, NewStringUTF, text);
   (void) display;
   return _jni_callBooleanMethodV(env, _al_android_activity_object(),
                                 "setClipboardText", "(Ljava/lang/String;)Z", jtext);
}
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;
}