javaandroidc++qtqtandroidextras

How to keep the screen on in Qt for android?


I found a couple of solutions how to do that in Java, but did not find how can I do it in QML or Qt. I know that first I should set the WAKE_LOCK permission in AndroidManifest.xml. What should I do to make it possible to turn on and off the screen locking from Qt in runtime?


Solution

  • You can use the Qt Android Extras module and use JNI to call the relevant Java function from C++. Something like :

    void keepScreenOn() 
    {
        QAndroidJniObject activity = QtAndroid::androidActivity();
        if (activity.isValid()) {
            QAndroidJniObject window = activity.callObjectMethod("getWindow", "()Landroid/view/Window;");
    
            if (window.isValid()) {
                const int FLAG_KEEP_SCREEN_ON = 128;
                window.callObjectMethod("addFlags", "(I)V", FLAG_KEEP_SCREEN_ON);
            }
        }
    }