prepare android version for Qt6

This commit is contained in:
pls.153 2024-03-21 13:38:53 +01:00
parent 33b00e4300
commit a18e49e138
9 changed files with 146 additions and 16 deletions

View file

@ -1,10 +1,16 @@
#include "qt.h"
#include <QtAndroid>
#include <QAndroidJniEnvironment>
#if (QT_VERSION < 0x060000)
#include <QAndroidService>
#include <QAndroidJniEnvironment>
#else
#include <QtCore/private/qandroidextras_p.h>
#endif
QT_BEGIN_NAMESPACE
QVariant QT::keepScreenOn(const QVariant& on) {
#if (QT_VERSION < 0x060000)
QtAndroid::runOnAndroidThread([&] {
QAndroidJniObject activity = QtAndroid::androidActivity();
if (activity.isValid()) {
@ -20,6 +26,23 @@ QVariant QT::keepScreenOn(const QVariant& on) {
env->ExceptionClear();
}
});
#else
QNativeInterface::QAndroidApplication::runOnAndroidMainThread([&] {
QJniObject activity = QtAndroidPrivate::activity();
if (activity.isValid()) {
QJniObject window = activity.callObjectMethod("getWindow", "()Landroid/view/Window;");
if (window.isValid()) {
const int FLAG_KEEP_SCREEN_ON = 128;
const char* method = on.toBool() ? "addFlags" : "clearFlags";
window.callMethod<void>(method, "(I)V", FLAG_KEEP_SCREEN_ON);
}
}
QJniEnvironment env;
if (env->ExceptionCheck()) {
env->ExceptionClear();
}
});
#endif
return on;
}