Как предотвратить блокировку экрана ios с помощью Qt

Я хочу разработать приложение для Qt для iOS, содержащее карту. Во время использования блокировка экрана телефона должна быть отключена. Но я не могу найти никакого решения, как предотвратить блокировку экрана в iOS с помощью Qt.

Как это можно сделать?

1 ответ

Решение

Вы должны использовать родной iOS API. Вы можете скомпилировать код ObjC++ непосредственно с помощью компилятора clang в вашем приложении Qt.

Так что вы можете смешивать .cpp а также .mm (ObjC++) файлы. QtCreator и qmake поддержать это через OBJECTIVE_SOURCES ключевое слово.

В yourclass.mm реализация:

    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>

    void YourClass::setTimerDisabled() {
        [[UIApplication sharedApplication] setIdleTimerDisabled: YES] 
    }

yourclass.h:

class YourClass
{
public:
   void setTimerDisabled()
}

Теперь вы можете звонить из любого места в вашем Qt-приложении:

YourClass yc;
yc.setTimerDisbabled();

В вашем файле проекта (.pro), если вы хотите этот файл только на iOS:

ios {
OBJECTIVE_SOURCES += \
    yourclass.mm \
}

И если вам нужен только указанный код на одной платформе, используйте команды препроцессора в файлах исходного кода и заголовков, например:

#if defined(Q_OS_IOS)
   // iOs stuff
#elsif defined(Q_OS_ANDROID)
   //Android stuff ...
#else
  //Other stuff ...
#endif
Другие вопросы по тегам