如何在 Qt for android 中保持屏幕常亮?

2023-11-20

我找到了一些如何在 Java 中做到这一点的解决方案,但没有找到如何在 QML 或 Qt 中做到这一点。我知道首先我应该设置WAKE_LOCK的许可AndroidManifest.xml。我应该怎么做才能在运行时从 Qt 打开和关闭屏幕锁定?


  1. Use window.callMethod<void>代替window.callObjectMethod
  2. 在 GUI 线程上运行QtAndroid::runOnAndroidThread
  3. 之后清除异常
  4. 要禁用始终开启行为,请使用clearFlags

这是经过测试的 Qt 5.7 代码:

void keep_screen_on(bool on) {
  QtAndroid::runOnAndroidThread([on]{
    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;
        if (on) {
          window.callMethod<void>("addFlags", "(I)V", FLAG_KEEP_SCREEN_ON);
        } else {
          window.callMethod<void>("clearFlags", "(I)V", FLAG_KEEP_SCREEN_ON);
        }
      }
    }
    QAndroidJniEnvironment env;
    if (env->ExceptionCheck()) {
      env->ExceptionClear();
    }
  });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Qt for android 中保持屏幕常亮? 的相关文章

随机推荐

  • 没有找到 d3dx11.lib?

    我使用 Windows 8 Visual Studio 2012 C 11 和 Direct3D 11 进行开发 我包含这样的 Direct3D 库 pragma comment lib dxgi lib pragma comment li
  • LRU缓存设计

    最近最少使用 LRU 缓存是先丢弃最近最少使用的项 如何设计和实现这样一个缓存类 设计要求如下 1 尽快找到该项目 2 一旦缓存未命中并且缓存已满 我们需要尽快替换最近最少使用的项 如何从设计模式和算法设计角度来分析和实现这个问题 链表 指
  • 不同 cassandra 表中的相同分区键加起来是否达到单元理论限制?

    众所周知 Cassandra 分区的理论限制为 20 亿个单元 但在下面这样的情况下它是如何工作的 create table table1 some id int PRIMARY KEY some name text create tabl
  • 在SQL中,如何删除基于多列的重复行?

    我知道我可以运行下面的查询来查找基于多列的 重复 行 执行如下操作 SELECT PosId OrgId FROM PosOrg GROUP BY PosId OrgId HAVING COUNT gt 1 但现在我想删除重复的行 以便上述
  • Gem 安装的参数数量错误(给定 4,预期 1)

    当我跑步时bundle 我得到以下信息 bash bundle command not found 我不是 ruby 开发人员 但似乎我需要捆绑器来运行其他人编写的一些软件 所以我试图使用捆绑器gem install bundler 但我收
  • C (gcc) 是否有一个分析器可以单独分析代码行? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我有 Matlab 背景 所以我习惯了分析器 它分析每一行 而不仅仅是每个函数 例如gprof or callgrind 是否有一个分析器C具有类似
  • C# 标签 AutoSize 添加填充

    我在 Windows Form 上有一个标签 我将标签上的 AutoSize 属性设置为 True 我注意到当我这样做时 它会用 5px 的白色背景填充右侧 我将 Padding 属性设置为 0 0 0 0 有办法摆脱这个吗 我希望标签的边
  • gnuplot 将多个条形图分组

    我正在使用 gnuplot 生成多个基准测试的图表 对于每个基准测试 我都有许多配置要绘制 我想绘制命中率 y 轴 与基准 x 轴 的图表 每个基准将有多个列 并按颜色区分 我不久前使用一些 python 脚本生成了相同类型的图表 但我不知
  • iPhone 的 Popover 控制器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决方案 为什么不起作用以及预期结果 也可以看看 Stack Overflow 问题清单 询问我们的问题推荐或查找工具
  • 如何让 JScrollPane 每鼠标滚轮一步滚动 1 行?

    我有一个 JScrollPane 其内容窗格是 JXList 当我在列表上使用鼠标滚轮时 列表一次会移动三 3 个项目 这也适用于表格 无论行高如何 我如何更改此设置 以便无论平台如何 对于列表和表格 滚动距离恰好为 1 项 设置块增量不会
  • 使用 NUnit Console Runner 运行文件夹下的所有测试

    我正在尝试使用 NUnit Runners 2 6 4 运行测试文件夹中的所有测试程序集 我当前的命令如下所示 nologo noshadow framework net 4 0 xml test TestResults xml test
  • 具有两条二次曲线的画布剪辑图像

    我只是想将图像剪辑成曲线 但没有发生这种情况 仅显示图像 但不显示剪辑 var canvas document getElementById leaf var context canvas getContext 2d save allows
  • 如何覆盖活动记录对象中的属性分配?

    我知道您可以使用虚拟属性来做到这一点 但是如果该列确实存在怎么办 例如 我的模型有一个raw topic柱子 什么时候raw topic已定 我想要artist and song title设定基于raw topic的内容 理想情况下 我想
  • C# 释放 IntPtr 引用的内存

    我正在使用一些非托管代码 它们返回指向大图像对象的指针 IntPtr 我使用引用 但在完成图像后 我需要释放指针引用的内存 目前 释放内存的唯一方法是关闭我的整个应用程序 我需要能够从应用程序内部释放该内存 这是分配内存的调用 hbitma
  • 从 DLL 导出 MFC 对话框

    7月21日 更新 见底部 在 VC 2005 中我有 2 个项目 首先 一个 MFC DLL 项目 不是扩展 DLL 它有一个简单的对话框 测试Dlg h pragma once include afxwin h include resou
  • 如何使用 xslt 管理微数据?

    我正在尝试添加一个标签 例如 div 在我的 xslt 转换中 但出现错误 预期的标记是 我正在 C net 4 0 xslt 1 0 中工作 XSLT 针对生成 XML 输出进行了优化 一般来说 HTML5 不是 XML 语法 div 显
  • 如何使用来自 python 的请求使用 opencv 从 url 打开图像

    我正在尝试在 python 上使用 OpenCV 打开大量图像 因为我需要稍后使用它们 其实 我可以用这样的枕头来实现这个目标 url r https i imgur com DrjBucJ png response requests ge
  • 使用 MySQL C API 和 C++ 获取 MySQL 数据库表中的行

    当尝试使用 C 和 MySQL C API 获取 mysql 中的表行时 我感到很困惑 我可以在 PHP 中轻松完成 只是因为 C 是一种强类型语言 所以我们还需要处理脏过程 这就是我在 PHP 中完成的方法 data array i 0
  • 无法升级或从系统中删除 firebase

    正如标题所示 我无法升级或以任何方式从我的系统中删除当前版本的 firebase 我不明白为什么 我使用首次启动项目时提示的 firebase 命令安装了它 符合npm install g firebase tools 在我安装了其他软件包
  • 如何在 Qt for android 中保持屏幕常亮?

    我找到了一些如何在 Java 中做到这一点的解决方案 但没有找到如何在 QML 或 Qt 中做到这一点 我知道首先我应该设置WAKE LOCK的许可AndroidManifest xml 我应该怎么做才能在运行时从 Qt 打开和关闭屏幕锁定