【问题标题】:How to prevent Screen lock ios with Qt如何使用 Qt 防止屏幕锁定 ios
【发布时间】:2015-09-25 06:06:05
【问题描述】:

我想在 Qt for iOS 中开发一个包含地图的应用程序。使用过程中,手机的锁屏功能应关闭。 但我找不到任何解决方案如何使用 Qt 防止 iOS 中的屏幕锁定。

如何做到这一点?

【问题讨论】:

    标签: ios qt screen qml screen-lock


    【解决方案1】:

    您必须使用原生 iOS api。您可以在 Qt 应用程序中直接使用 clang 编译器编译 ObjC++ 代码。

    因此您可以混合使用 .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
    

    【讨论】:

    • 感谢胡比!但是现在我有一个问题,如果我为 Android 编译它,qt 找不到 Foundation。我的应用程序应该可以在两个操作系统上运行。你能给我进一步的提示吗?
    • 现在我可以编译所有内容,并且应用程序在 IOS 上运行,但不幸的是显示器无法保持唤醒。在 Qt Creator 中, [[UIApplication ... 行显示为未知。你能再帮我一次吗? :)
    • 好的,现在可以了!我只需要在 .pro 文件的 ios { } 部分添加“LIBS += -framework UIKit”行。非常感谢 Hubi!
    • 这很棒!我的应用程序更新了蓝牙连接设备上的固件。更新需要 10 分钟,并且会由于 iOS 自动锁定而失败。虽然 iOS 设置 > 显示 > 自动锁定 > 从不可以防止出现问题,但此解决方案要好得多。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多