Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAndroidUtils.cpp
Go to the documentation of this file.
1/*
2 * SPDX-License-Identifier: GPL-3.0-or-later
3 */
4#include "KisAndroidUtils.h"
6#include <kis_debug.h>
7
8#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
9#include <QJniEnvironment>
10#include <QJniObject>
11#else
12#include <QAndroidJniEnvironment>
13#include <QAndroidJniObject>
14using QJniEnvironment = QAndroidJniEnvironment;
15using QJniObject = QAndroidJniObject;
16#endif
17
19{
20
22{
24
25 QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
26 "activity",
27 "()Landroid/app/Activity;");
28 if (activity.isValid()) {
29 activity.callMethod<void>("copyAssets", "()V");
30 } else {
31 qWarning("performInitialSetup: activity not valid");
32 }
33}
34
36{
37 // The device isn't going to change, so let's cache the slow JNI call.
38 static bool checked;
39 static bool result;
40 if (!checked) {
41 checked = true;
42 result =
43 QJniObject::callStaticMethod<jboolean>("org/krita/android/MainActivity", "looksLikeXiaomiDevice", "()Z");
44 }
45 return result;
46}
47
49{
50 // The support is device-bound and will never change, so cache the JNI call.
51 static bool checked;
52 static bool result;
53 if (!checked) {
54 checked = true;
55 result = QJniObject::callStaticMethod<jboolean>("org/krita/android/MainActivity",
56 "isLowMemoryKillReportSupported",
57 "()Z");
58 }
59 return result;
60}
61
62void clearJniException(const QString &location)
63{
64 QJniEnvironment env;
65 if (env->ExceptionCheck()) {
66 warnKrita << "JNI exception occurred" << location;
67 env->ExceptionDescribe();
68 env->ExceptionClear();
69 }
70}
71
73{
74 QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
75 "activity",
76 "()Landroid/app/Activity;");
77 KisAndroidUtils::clearJniException(QStringLiteral("getting activity in isInFullScreen"));
78 if (activity.isValid()) {
79 bool fullScreen = activity.callMethod<jboolean>("isInFullScreen", "()Z");
80 KisAndroidUtils::clearJniException(QStringLiteral("calling isInFullScreen"));
81 return fullScreen;
82 } else {
83 qWarning("isInFullScreen: activity not valid");
84 return false;
85 }
86}
87
88void setFullScreen(bool fullScreen)
89{
90 QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative",
91 "activity",
92 "()Landroid/app/Activity;");
93 KisAndroidUtils::clearJniException(QStringLiteral("getting activity in setFullScreen"));
94 if (activity.isValid()) {
95 activity.callMethod<void>("setFullScreenOnUiThread", "(Z)V", jboolean(fullScreen));
96 KisAndroidUtils::clearJniException(QStringLiteral("calling setFullScreenOnUiThread"));
97 } else {
98 qWarning("setFullScreen: activity not valid");
99 }
100}
101
102} // namespace KisAndroidUtils
#define warnKrita
Definition kis_debug.h:87
bool isLowMemoryKillReportSupported()
void setFullScreen(bool fullScreen)
void clearJniException(const QString &location)