@@ -193,6 +193,133 @@ extern "C" bool android_is_app_foregrounded() {
193193 return env->CallBooleanMethod (java_object, method);
194194}
195195
196+ extern " C" const char *android_get_os_version () {
197+ JNIEnv *env = GetJniEnv ();
198+ jclass jOpacityCore = env->GetObjectClass (java_object);
199+ jmethodID method = env->GetMethodID (jOpacityCore, " getOsVersion" , " ()Ljava/lang/String;" );
200+ auto res = (jstring)env->CallObjectMethod (java_object, method);
201+
202+ if (res == nullptr )
203+ {
204+ return " " ;
205+ }
206+
207+ const char *val_str = env->GetStringUTFChars (res, nullptr );
208+ return val_str;
209+ }
210+
211+ extern " C" const char *android_get_device_manufacturer () {
212+ JNIEnv *env = GetJniEnv ();
213+ jclass jOpacityCore = env->GetObjectClass (java_object);
214+ jmethodID method = env->GetMethodID (jOpacityCore, " getDeviceManufacturer" , " ()Ljava/lang/String;" );
215+ auto res = (jstring)env->CallObjectMethod (java_object, method);
216+
217+ if (res == nullptr )
218+ {
219+ return " " ;
220+ }
221+
222+ const char *val_str = env->GetStringUTFChars (res, nullptr );
223+ return val_str;
224+ }
225+
226+ extern " C" const char *android_get_device_model () {
227+ JNIEnv *env = GetJniEnv ();
228+ jclass jOpacityCore = env->GetObjectClass (java_object);
229+ jmethodID method = env->GetMethodID (jOpacityCore, " getDeviceModel" , " ()Ljava/lang/String;" );
230+ auto res = (jstring)env->CallObjectMethod (java_object, method);
231+
232+ if (res == nullptr )
233+ {
234+ return " " ;
235+ }
236+
237+ const char *val_str = env->GetStringUTFChars (res, nullptr );
238+ return val_str;
239+ }
240+
241+ extern " C" const char *android_get_device_locale () {
242+ JNIEnv *env = GetJniEnv ();
243+ jclass jOpacityCore = env->GetObjectClass (java_object);
244+ jmethodID method = env->GetMethodID (jOpacityCore, " getDeviceLocale" , " ()Ljava/lang/String;" );
245+ auto res = (jstring)env->CallObjectMethod (java_object, method);
246+
247+ if (res == nullptr )
248+ {
249+ return " " ;
250+ }
251+
252+ const char *val_str = env->GetStringUTFChars (res, nullptr );
253+ return val_str;
254+ }
255+
256+ extern " C" int android_get_sdk_version () {
257+ JNIEnv *env = GetJniEnv ();
258+ jclass jOpacityCore = env->GetObjectClass (java_object);
259+ jmethodID method = env->GetMethodID (jOpacityCore, " getSdkVersion" , " ()I" );
260+ return env->CallIntMethod (java_object, method);
261+ }
262+
263+ extern " C" int android_get_screen_width () {
264+ JNIEnv *env = GetJniEnv ();
265+ jclass jOpacityCore = env->GetObjectClass (java_object);
266+ jmethodID method = env->GetMethodID (jOpacityCore, " getScreenWidth" , " ()I" );
267+ return env->CallIntMethod (java_object, method);
268+ }
269+
270+ extern " C" int android_get_screen_height () {
271+ JNIEnv *env = GetJniEnv ();
272+ jclass jOpacityCore = env->GetObjectClass (java_object);
273+ jmethodID method = env->GetMethodID (jOpacityCore, " getScreenHeight" , " ()I" );
274+ return env->CallIntMethod (java_object, method);
275+ }
276+
277+ extern " C" float android_get_screen_density () {
278+ JNIEnv *env = GetJniEnv ();
279+ jclass jOpacityCore = env->GetObjectClass (java_object);
280+ jmethodID method = env->GetMethodID (jOpacityCore, " getScreenDensity" , " ()F" );
281+ return env->CallFloatMethod (java_object, method);
282+ }
283+
284+ extern " C" int android_get_screen_dpi () {
285+ JNIEnv *env = GetJniEnv ();
286+ jclass jOpacityCore = env->GetObjectClass (java_object);
287+ jmethodID method = env->GetMethodID (jOpacityCore, " getScreenDpi" , " ()I" );
288+ return env->CallIntMethod (java_object, method);
289+ }
290+
291+ extern " C" const char *android_get_device_cpu () {
292+ JNIEnv *env = GetJniEnv ();
293+ jclass jOpacityCore = env->GetObjectClass (java_object);
294+ jmethodID method = env->GetMethodID (jOpacityCore, " getDeviceCpu" , " ()Ljava/lang/String;" );
295+ jstring jCpu = (jstring)env->CallObjectMethod (java_object, method);
296+ if (jCpu == nullptr )
297+ {
298+ return strdup (" " );
299+ }
300+ const char *cpu = env->GetStringUTFChars (jCpu, nullptr );
301+ char *result = strdup (cpu);
302+ env->ReleaseStringUTFChars (jCpu, cpu);
303+ env->DeleteLocalRef (jCpu);
304+ return result;
305+ }
306+
307+ extern " C" const char *android_get_device_codename () {
308+ JNIEnv *env = GetJniEnv ();
309+ jclass jOpacityCore = env->GetObjectClass (java_object);
310+ jmethodID method = env->GetMethodID (jOpacityCore, " getDeviceCodename" , " ()Ljava/lang/String;" );
311+ jstring jCodename = (jstring)env->CallObjectMethod (java_object, method);
312+ if (jCodename == nullptr )
313+ {
314+ return strdup (" " );
315+ }
316+ const char *codename = env->GetStringUTFChars (jCodename, nullptr );
317+ char *result = strdup (codename);
318+ env->ReleaseStringUTFChars (jCodename, codename);
319+ env->DeleteLocalRef (jCodename);
320+ return result;
321+ }
322+
196323extern " C" void android_close_webview () {
197324 JNIEnv *env = GetJniEnv ();
198325 // Get the Kotlin class
0 commit comments