| 95 | } |
| 96 | |
| 97 | uint16_t GetLocaleLanguage() |
| 98 | { |
| 99 | JNIEnv* env = static_cast<JNIEnv*>(SDL_AndroidGetJNIEnv()); |
| 100 | |
| 101 | jobject activity = static_cast<jobject>(SDL_AndroidGetActivity()); |
| 102 | jclass activityClass = env->GetObjectClass(activity); |
| 103 | jmethodID getDefaultLocale = env->GetMethodID( |
| 104 | activityClass, "getDefaultLocale", "([Ljava/lang/String;)Ljava/lang/String;"); |
| 105 | |
| 106 | jobjectArray jLanguageTags = env->NewObjectArray( |
| 107 | LANGUAGE_COUNT, env->FindClass("java/lang/String"), env->NewStringUTF("")); |
| 108 | |
| 109 | for (int32_t i = 1; i < LANGUAGE_COUNT; ++i) |
| 110 | { |
| 111 | jstring jTag = env->NewStringUTF(LanguagesDescriptors[i].locale); |
| 112 | env->SetObjectArrayElement(jLanguageTags, i, jTag); |
| 113 | } |
| 114 | |
| 115 | jstring jniString = static_cast<jstring>(env->CallObjectMethod(activity, getDefaultLocale, jLanguageTags)); |
| 116 | |
| 117 | const char* jniChars = env->GetStringUTFChars(jniString, nullptr); |
| 118 | std::string defaultLocale = jniChars; |
| 119 | |
| 120 | env->ReleaseStringUTFChars(jniString, jniChars); |
| 121 | for (int32_t i = 0; i < LANGUAGE_COUNT; ++i) |
| 122 | { |
| 123 | jobject strToFree = env->GetObjectArrayElement(jLanguageTags, i); |
| 124 | env->DeleteLocalRef(strToFree); |
| 125 | } |
| 126 | env->DeleteLocalRef(jLanguageTags); |
| 127 | env->DeleteLocalRef(activity); |
| 128 | env->DeleteLocalRef(activityClass); |
| 129 | |
| 130 | return LanguageGetIDFromLocale(defaultLocale.c_str()); |
| 131 | } |
| 132 | |
| 133 | CurrencyType GetLocaleCurrency() |
| 134 | { |
nothing calls this directly
no test coverage detected