Android 显示指针位置 多屏异显 黑屏

在Android系统中,当开启开发者选项的显示指针位置功能时,如果存在多屏异显环境,副屏会显示为黑色背景和坐标,导致无法退出该界面。为了解决这一问题,提出了修改`frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java`的建议,将条件修改为仅在默认屏幕上支持显示指针位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 显示打开开发者选项->显示指针位置时,若系统本身存在多屏异显的环境,那么副屏上就会只显示黑色背景和坐标。若此时使用的只有副屏,则无法退出此界面,对测试使用带来麻烦。

因此解决方法是,当开启指针位置时,使系统不进入多屏 异显模式

针对此,进行一下修改:

frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java

 private boolean supportsPointerLocation() {
-        return mDisplayContent.isDefaultDisplay || !mDisplayContent.isPrivate();
+        return mDisplayContent.isDefaultDisplay;
 }

<think>我们正在讨论安卓手机屏幕模块的测试用例。根据之前提供的指南,我们需要覆盖显示、触控、亮度、色彩、旋转、兼容性、异常场景等。同时,要结合安卓系统的特性,比如系统设置中的显示选项开发者选项等。 注意:用户要求参考站内引用[1],其中提到W模型和H模型的思想,即测试与开发紧密结合,迭代测试。因此,在测试用例设计时,要考虑在不同开发阶段(如单元测试、集成测试、系统测试)的适用性,并可能进行多轮测试。 由于用户明确要求安卓手机屏幕模块的测试用例,我们将重点放在安卓系统特有的功能上,例如: - 安卓系统设置中的显示选项(字体大小、显示大小、黑暗模式等) - 开发者选项中的模拟颜色空间、显示触摸操作、指针位置等 - 不同安卓版本可能存在的差异 下面将按照测试类型分类,给出具体的测试用例。每个用例包括编号、测试项、前置条件、操作步骤和预期结果。 注意:我们使用表格形式,但在这里用文本表示表格。实际编写时可转换为表格。 一、基本显示功能测试(安卓特性) | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_001 | 黑暗模式切换 | 设备已解锁,进入设置>显示 | 开启/关闭黑暗模式 | 系统界面和应用(支持黑暗模式)立即切换主题,无花屏、闪屏 | | TC_AND_002 | 显示大小调整 | 同上 | 在显示设置中调整显示大小 | 系统界面元素(图标、文字)大小立即改变,布局正常无重叠 | | TC_AND_003 | 字体大小调整 | 同上 | 在显示设置中调整字体大小 | 系统及应用的文字大小改变,文字显示完整无截断 | | TC_AND_004 | 屏幕分辨率切换(若支持) | 设备支持多分辨率 | 在显示设置中切换分辨率 | 屏幕分辨率改变,显示内容清晰,无拉伸变形 | 二、触控功能测试(结合安卓开发者选项) | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_005 | 触控轨迹显示 | 开启开发者选项>显示触摸操作 | 在屏幕上滑动 | 实时显示触摸轨迹,轨迹连续无断点 | | TC_AND_006 | 指针位置显示 | 开启开发者选项>指针位置 | 在屏幕上点击 | 显示触摸坐标和压力信息,坐标准确 | | TC_AND_007 | 手势导航 | 设备使用全面屏手势 | 执行边缘滑动返回、上滑回主页等 | 手势响应灵敏,动画流畅无卡顿 | 三、亮度与背光控制测试 | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_008 | 自动亮度响应速度 | 开启自动亮度,环境光线变化 | 从暗处到亮处(或反之)移动设备 | 屏幕亮度在1-2秒内平滑调整到适宜水平 | | TC_AND_009 | 手动亮度调节 | 关闭自动亮度 | 拖动亮度条从最小到最大 | 亮度变化平滑,无闪烁,最低亮度不黑屏,最高亮度不刺眼 | 四、色彩与对比度测试(安卓开发者选项中的模拟颜色空间) | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_010 | 色盲模式 | 进入开发者选项>模拟颜色空间 | 选择不同的色盲模式(如全色盲、红色弱等) | 屏幕整体色调改变,符合所选模式 | | TC_AND_011 | 护眼模式 | 在显示设置中 | 开启护眼模式,设置定时 | 屏幕色调变暖,定时开启/关闭正常 | 五、方向感应与自动旋转测试 | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_012 | 自动旋转开关 | 屏幕方向锁定关闭 | 旋转设备90度 | 屏幕方向自动旋转,应用界面适配良好 | | TC_AND_013 | 特定应用方向锁定 | 打开一个支持横屏的应用(如视频播放器) | 旋转设备 | 应用保持横屏,不随设备旋转而改变 | 六、兼容性测试 | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_014 | 多应用兼容性 | 安装多个第三方应用 | 打开不同应用(尤其是游戏、视频等全屏应用) | 应用显示正常,无黑边、拉伸、布局错乱 | | TC_AND_015 | 分屏显示 | 设备支持分屏 | 进入分屏模式,上下/左右分屏 | 两个应用同时正常显示,触控操作互不影响 | 七、异常场景测试 | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_016 | 低电量模式 | 电量低于20% | 观察屏幕亮度和刷新率(若支持高刷新率) | 屏幕亮度可能自动降低,高刷新率自动切换为60Hz | | TC_AND_017 | 高温降亮度 | 设备温度过高(可通过加热或长时间游戏触发) | 持续使用直到设备发烫 | 屏幕自动降低亮度,并在温度降低后恢复 | 八、高刷新率测试(若支持) | 编号 | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |------|--------|----------|----------|----------| | TC_AND_018 | 高刷新率开关 | 设备支持高刷新率(如90Hz、120Hz) | 在设置中切换刷新率 | 屏幕刷新率改变,滑动操作明显更流畅 | | TC_AND_019 | 智能刷新率切换 | 设备支持动态刷新率 | 在不同场景(如静止、滑动、视频播放)下观察 | 刷新率根据场景自动切换(如静止时60Hz,滑动时120Hz) | 注意:以上测试用例需要根据具体设备特性(如是否支持高刷新率、分辨率切换等)进行调整。 参考引用[1]中提到的测试模型,我们应在整个开发周期中持续进行测试迭代。例如,在开发阶段,可以通过单元测试验证屏幕驱动的基本功能;在集成测试阶段,验证屏幕与安卓框架的交互;在系统测试阶段,进行全面的用例测试。 同时,我们可以利用安卓提供的工具(如ADB)进行自动化测试,例如通过ADB命令模拟旋转屏幕、改变亮度等。 下面生成相关问题:</think>### 安卓手机屏幕模块测试用例设计 基于W模型与H模型结合的思想[^1],安卓屏幕测试需贯穿开发全周期,覆盖硬件驱动层、系统框架层和应用层。以下是系统化测试用例设计(按优先级排序): #### 一、基础显示功能 | 用例ID | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |--------|----------------|-----------------------|-----------------------------------|-----------------------------------| | AND01 | 屏幕唤醒 | 设备休眠状态 | 按电源键 | 屏幕点亮,显示锁屏界面 | | AND02 | 分辨率适配 | 开发者模式开启 | 切换不同DPI设置($$ \text{DPI} = \frac{\sqrt{w^2 + h^2}}{diag} $$) | 界面元素无变形,文字清晰无锯齿 | | AND03 | 黑暗模式 | Android 10+系统 | 设置>显示>开启黑暗模式 | 系统级界面与应用背景变为深色 | #### 二、触控交互测试 | 用例ID | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |--------|----------------|-----------------------|-----------------------------------|-----------------------------------| | AND04 | 触控精度 | 开发者选项开启"指针位置" | 手指在屏幕画连续直线 | 轨迹平滑无断点,坐标误差≤1mm | | AND05 | 边缘触控 | 全面屏设备 | 从屏幕边缘向内滑动 | 手势导航(返回/主页)响应准确 | | AND06 | 多点触控 | 支持10点触控 | 10指同时按压屏幕 | 所有触点被识别,无交叉干扰 | #### 三、高级特性测试 | 用例ID | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |--------|----------------|-----------------------|-----------------------------------|-----------------------------------| | AND07 | 高刷新率 | 支持90Hz/120Hz | 开发者选项>显示刷新率 | 滑动操作无拖影,帧率稳定达标 | | AND08 | HDR显示 | 支持HDR10 | 播放HDR视频 | 亮度范围0.05-1000nits,色域覆盖90% P3 | | AND09 | 自动旋转 | 传感器校准完成 | 旋转设备+横屏应用 | 方向切换时间≤0.5s,界面无闪屏 | #### 四、异常场景测试 | 用例ID | 测试项 | 前置条件 | 操作步骤 | 预期结果 | |--------|----------------|-----------------------|-----------------------------------|-----------------------------------| | AND10 | 低温响应 | -10℃环境 | 操作屏幕30分钟 | 触控采样率下降≤15%,无失灵 | | AND11 | 强光可视性 | 10万lux光照 | 显示黑白对比图 | 对比度≥100:1,文字可辨识 | | AND12 | 水触控 | 屏幕表面滴水 | 执行滑动操作 | 误触率≤5%,无幽灵触控 | #### 五、自动化实现建议 ```python # ADB命令模拟屏幕操作(Python示例) import subprocess def screen_test(): # 点亮屏幕 subprocess.call("adb shell input keyevent 26", shell=True) # 滑动解锁 subprocess.call("adb shell input swipe 300 1000 300 500", shell=True) # 验证屏幕状态 result = subprocess.check_output("adb shell dumpsys power", shell=True) return "mWakefulness=Awake" in str(result) ``` > **实现原理**:通过ADB注入系统级事件,结合`dumpsys`获取屏幕状态[^1] --- ### 相关问题 1. 如何验证AMOLED屏幕的烧屏风险? 2. 安卓屏幕色准测试需要哪些专业设备? 3. 触控采样率与报点率有什么区别? 4. 怎样设计屏幕跌落测试的量化标准? 5. 安卓多屏协同场景如何测试显示同步性? [^1]: 测试用例设计需结合开发阶段迭代验证,在系统集成前完成驱动层测试,应用发布前完成UI兼容性测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值