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

Android16 EDLA 开机向导的锁屏设置页面,HDMI out 鼠标不显示问题分析解决

Android16 EDLA 开机向导的锁屏设置页面,HDMI out 鼠标不显示问题分析解决

文章目录

  • Android16 EDLA 开机向导的锁屏设置页面,HDMI out 鼠标不显示问题分析解决
    • 一、前言
    • 二、分析修改
      • 1、dumpsys window | grep mFoc 分析
      • 2、ChooseLockPassword 源码
      • 3、解决
        • (1)简单的方法就是直接去除FLAG_SECURE
        • (2)判断多屏界面的情况,去除密码模式
    • 三、其他
      • 1、小结
      • 2、Android16 EDLA HDMI OUT投屏默认通过设置

一、前言

Android EDLA 开机向导的锁屏密码设置页面,鼠标无法显示,无法正常跳过开机向导。

如下界面:

在这里插入图片描述

这个方案目前是未适配触摸,鼠标想点左边的键盘输入或者右边的Skip跳动都没办法。

后续分析发现主要是由于Android密码界面保护机制,启用屏幕内容安全保护

这种机制下,如果是使用adb软件进行投屏,投屏看到的界面是黑屏。

这个问题估计之前版本都有,只是我最近刚好搞Android16 EDLA项目而已,顺便记录一下解决思路和代码。

有兴趣的,可以收藏看看。

二、分析修改

1、dumpsys window | grep mFoc 分析

开机向导中,显示密码设置或者图案设置试的界面信息:

C:\Users\As11040>adb shell
//设置Pin或者密码界面信息
W82B_A:/ # dumpsys window | grep mFocmFocusedWindow=Window{2e334bb u0 com.android.settings/com.android.settings.password.SetupChooseLockPassword}
W82B_A:/ #//设置图案界面信息
W82B_A:/ # dumpsys window | grep mFocmFocusedWindow=Window{c797f3f u0 com.android.settings/com.android.settings.password.SetupChooseLockPattern}
W82B_A:/ #

两个不同的Activity,不显示鼠标的具体原因是一样的。

这里就 SetupChooseLockPassword 分析:

2、ChooseLockPassword 源码

packages/apps/Settings/src/com/android/settings/password/ChooseLockPassword.java

public class ChooseLockPassword extends SettingsActivity {private static final String TAG = "ChooseLockPassword";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);findViewById(R.id.content_parent).setFitsSystemWindows(false);//界面默认设置加密模式!!!getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);}
}

可以看到这里的Activity设置了 FLAG_SECURE 所以会导致投屏鼠标消失和adb投屏黑屏问题。

3、解决

(1)简单的方法就是直接去除FLAG_SECURE

把下面Activity这行代码删除就行。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);

这样界面就不会进入启用屏幕内容安全保护了。没啥硬性要求,这样修改最简单。

(2)判断多屏界面的情况,去除密码模式
import android.hardware.display.DisplayManager;
import android.view.Display;@Overrideprotected void onCreate(Bundle savedInstanceState) {...//getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);// 动态判断是否多屏模式,解决OUT界面看不见鼠标光标问题DisplayManager dm = getSystemService(DisplayManager.class);Display[] displays = dm.getDisplays();boolean isMultiDisplay = displays.length > 1;Log.d(TAG, "onCreate: isMultiDisplay=" + isMultiDisplay);// 单屏模式保留安全标志,多屏模式解除if (!isMultiDisplay) {getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);}}

这里多屏的情况,就不会黑屏或者鼠标消失;单屏的情况还是会进入启用屏幕内容安全保护模式。

三、其他

1、小结

上面投屏界面无法显示鼠标或者投屏,就是因为下面的代码:

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE)

代码是Android 开发中用于 启用屏幕内容安全保护 的核心 API;

作用是 禁止当前 Activity 的屏幕内容被截图、录屏、投屏或通过其他方式窃取;

本质是给当前窗口添加 “安全标记”,让系统限制对窗口内容的访问权限。

我们系统开发中,如果有禁止截屏、投屏的界面也可以加入这个flag标识。

2、Android16 EDLA HDMI OUT投屏默认通过设置

如果是板块测试,就要默认支持HDMI out,这就要适配系统的代码了。

该问题在Android16之前是没有的,这里记录一下。
可能不是所有平台都需要适配,一般TV或者商显估计需要适配。

https://blog.csdn.net/wenzhi20102321/article/details/15458338

http://www.dtcms.com/a/606007.html

相关文章:

  • 基于yolov8的SAR影像目标检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • 网站做直播功能需要注册吗腾讯广告投放平台官网
  • 网站空间 阿里云北京金山办公软件股份有限公司官网
  • 大丰有做网站的爱客crm官网
  • KingBase通过exp脚本实现数据库自动备份
  • DeepSeek的入门和使用
  • 视觉进阶篇—— PyTorch 安装
  • net开发网站站长素材音效
  • 登录场景下短信验证码功能的设计与实现(Vue 2 + Element UI + Axios附完整代码)
  • SpringBoot-36-开发实战JPA的使用(一对多)@OneToMany+@ManyToOne
  • 云桌面办公系统详解:开启灵活、安全、高效的工作新纪元
  • 尚硅谷 SpringCloud03 Sentinel服务保护(限流 熔断降级)-安装启动sentinel-请求限流-限流异常处理
  • 地产网站建设wordpress建站好么
  • EVM(以太坊虚拟机)及其运行机制详解
  • 跨境电商支付全链路解析
  • Qt+C++ 混合开发架构设计:QML 与 C++ 高效通信的解耦方案及设计模式
  • 网站项目实施方案聊城手机网站建设公司
  • Rust开发之Trait 定义通用行为——实现形状面积计算系统
  • The JAVA_HOME environment variable is not defined correctly 解决方案
  • 南昌网站建设工作开通微信公众号需要多少钱
  • 从“并发安全”到 Rust 的无畏并发实战
  • 当前网站开发的现状数据库网站建设公司
  • 网站竞价推广做网站资源管理是
  • 子域名泛解析技术详解与安全防护
  • SuperPoint 和 SIFT 的对比
  • 【云计算】【Kubernetes】 ① K8S的架构、应用及源码解析 - 核心架构与组件全景图
  • docker容器和分布式事务
  • 【剑斩OFFER】算法的暴力美学——寻找旋转排序数组中的最小值
  • Linux:基础开发工具(一)
  • 下载和调用通义千问大模型