当前位置: 首页 > news >正文

qt for android 重新编译Qt6Android.jar

QT相关

    • 编译Qt6Android.jar
    • qt 6.7 WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES样式问题
    • APP商店退回用户未点击《用户协议》就启动传感器

编译Qt6Android.jar

qt版本:6.7
进入到Qt源码目录

<你的qt目录>\Src\qtbase\src\android\jar\src\org\qtproject\qt\android

打开cmd 输入

javac -Xlint:deprecation -classpath <你的安卓sdk目录>\android.jar *.java ./accessibility/*.java  ./extras/*.java

将编译的.class文件直接拖进.jar文件里(.jar文件用压缩包形式打开)

<你的qt目录>\<你的Qt版本>\android_arm64_v8a\jar\Qt6Android.jar

qt 6.7 WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES样式问题

如果设置了WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES样式
APP退出到后台在回到APP,会发现刘海(安全)区域不再被填充
QtDisplayManager.java代码中发现

public void setSystemUiVisibility(int systemUiVisibility){if (m_systemUiVisibility == systemUiVisibility)return;m_systemUiVisibility = systemUiVisibility;int systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_VISIBLE;switch (m_systemUiVisibility) {case SYSTEM_UI_VISIBILITY_NORMAL:m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode =WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;}break;case SYSTEM_UI_VISIBILITY_FULLSCREEN:m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);systemUiVisibilityFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY| View.INVISIBLE;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode =WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;}break;case SYSTEM_UI_VISIBILITY_TRANSLUCENT:m_activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION| WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);m_activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode =WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;}break;}m_activity.getWindow().getDecorView().setSystemUiVisibility(systemUiVisibilityFlags);}

代码段

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode =WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;}

这里强制将布局设置为了WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
不知道为什么这样操作

修改代码

if (m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode != WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES) {m_activity.getWindow().getAttributes().layoutInDisplayCutoutMode =WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;}

APP商店退回用户未点击《用户协议》就启动传感器

在QtMultimediaUtils.java中
代码

static public void setContext(Context context){m_context = context;m_orientationListener = new OrientationListener(context);}

OrientationListener创建时就会启动加速度器, 用于辨别屏幕方向
就只有一个APP商店认为触犯了用户隐私被退回了
修改就是此处的new屏蔽掉
在需要调用m_orientationListener 的地方加上

if (m_orientationListener == null)m_orientationListener = new OrientationListener(m_context);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 大整数运算详解升级版
  • 速盾:负载均衡能防ddos攻击吗?
  • 学 Java 具体能干什么?
  • 我的创作纪念日——我与CSDN一起走过的128天
  • 选择排序与堆排序
  • Rust开源Web框架Salvo源码编译
  • Vue中引入组件需要哪三步
  • PostgreSQL的扩展(extensions)-常用的扩展之pg_store_plans
  • Windows系统使用Docker部署Focalboard团队协作工具详细流程
  • 521源码-免费下载-WordPress全能自动采集与发布插件 – WP-AutoPostPro 汉化版
  • Docker搭建mysql性能测试环境
  • 授人以渔 选购篇十四:电动车(电动自行车)选购要点
  • 重生之while在鸣潮学习HTML标签
  • 【ai】pycharm设置软件仓库编译运行基于langchain的chatpdf
  • 疯狂“造人”!美国两党共推新法案,5年培养100万AI及量子人才
  • 【css3】浏览器内核及其兼容性
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • C++入门教程(10):for 语句
  • php中curl和soap方式请求服务超时问题
  • React+TypeScript入门
  • tensorflow学习笔记3——MNIST应用篇
  • Webpack 4 学习01(基础配置)
  • webpack4 一点通
  • 前端设计模式
  • 我的面试准备过程--容器(更新中)
  • 学习HTTP相关知识笔记
  • 再谈express与koa的对比
  • const的用法,特别是用在函数前面与后面的区别
  • gunicorn工作原理
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #考研#计算机文化知识1(局域网及网络互联)
  • $().each和$.each的区别
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (计算机网络)物理层
  • (论文阅读40-45)图像描述1
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十三)Flink SQL
  • (一) 初入MySQL 【认识和部署】
  • (原創) 未来三学期想要修的课 (日記)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (自用)gtest单元测试
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .gitignore文件---让git自动忽略指定文件
  • .htaccess 强制https 单独排除某个目录
  • .Mobi域名介绍
  • .NET C# 使用 iText 生成PDF
  • .NET Core 将实体类转换为 SQL(ORM 映射)