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

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

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

1 ответ

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

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

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

#import <foundation foundation.h="">
 #import <uikit uikit.h="">
 void YourClass::setTimerDisabled() {
 [[UIApplication sharedApplication] setIdleTimerDisabled: YES] 
 }
</uikit></foundation>

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

licensed under cc by-sa 3.0 with attribution.