Bug #115697
测试 Test-IT #110961: V2.0功能测试
测试 Test-IT #112101: AF-V2.0-Launcher/SystemUI-控制中心
【AF】【EVT】【控制中心】点击关闭蓝牙,上划退出控制中心,再打开控制中心,打开蓝牙,蓝牙图标先亮后灭,然后才正常长亮并开启蓝牙
Status: | CLOSED | Start date: | 2023-02-01 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | CD TEST-方永红 | % Done: | 100% | |
Category: | CD-FW | |||
Target version: | - | |||
Need_Info: | -- | Found Version: | FlatBuild_HH_VX1_MCE_FSE.M.D.user.01.00.X101.202302011304 | |
Resolution: | FIXED | Degrated: | No | |
Severity: | Normal | Verified Version: | FlatBuild_HH_VX1_MCE_FSE.M.D.user.01.00.X101.202302030336 | |
Reproducibility: | Every time | Fixed Version: | 2023-02-06 | |
Test Type: | ST | Root cause: | 原生逻辑缺陷 |
Description
【前提条件】
1、设备已开机
2、蓝牙已开启
【测试步骤】
1、打开控制中心
2、点击蓝牙组件
3、上划退出控制中心
4、打开控制中心
5、打开蓝牙
【预期结果】
5、蓝牙组件变亮,蓝牙成功开启
【实际结果】
5、蓝牙图标先亮后灭,然后才正常长亮并开启蓝牙
History
#1 Updated by CD FW 曹覃刚 over 2 years ago
■ 当前的状态
已复现该问题并修复
■ 分析过程
复现步骤
1.点击蓝牙组件关闭蓝牙
2.快速收起控制中心,并再次打开
3.快速再次开启蓝牙
关键代码
packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@Override
protected void handleClick(@Nullable View view) {
// Secondary clicks are header clicks, just toggle.
final boolean isEnabled = mState.value;
// Immediately enter transient enabling state when turning bluetooth on.
refreshState(isEnabled ? null : ARG_SHOW_TRANSIENT_ENABLING); **
mController.setBluetoothEnabled(!isEnabled);
mState.state = mController.isBluetoothEnabled() ? State.VERSION : State.DEFAULT_STATE;
}
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
final boolean transientEnabling = arg == ARG_SHOW_TRANSIENT_ENABLING; //transientEnabling 蓝牙开启需要一段时间,原生设计此参数用于点击时立即激活蓝牙组件,改善显示延迟的问题,refreshState方法传递ARG_SHOW_TRANSIENT_ENABLING此参数表示处于此状态(仅在点击时有此处理,下拉或者其他方式调用更新,会重置此参数)
final boolean enabled = transientEnabling || mController.isBluetoothEnabled();
final boolean connected = mController.isBluetoothConnected();
final boolean connecting = mController.isBluetoothConnecting();
state.isTransient = transientEnabling || connecting ||
mController.getBluetoothState() == BluetoothAdapter.STATE_TURNING_ON;
state.dualTarget = true;
state.value = enabled;
if (state.slash == null) {
state.slash = new SlashState();
}
根据问题发生时的日志检查,问题过程如下
①再次下拉时。迅速点击蓝牙组件,会进入transientEnabling状态,但蓝牙实际还未开启,此时蓝牙组件已激活
②控制中心下拉时,也会更新一次状态,且慢于步骤①,但无ARG_SHOW_TRANSIENT_ENABLING参数,transientEnabling状态被重置,蓝牙组件会更新为未激活状态
③当蓝牙开启完成,会回调并更新蓝牙组件,此时再次激活蓝牙组件
上述三步过程,导致蓝牙组件激活状态显示,发生了票中提到错误 -> 蓝牙图标先亮后灭,然后才正常长亮并开启蓝牙
■ 我的修复方式
transientEnabling状态的变更, 不应该由状态更新传递的参数控制
而是处于下列过程时,为transientEnabling状态
处于 打开蓝牙组件->蓝牙状态成功切换 时间段内
因此,我做了如下处理,并测试OK
在打开蓝牙组件将transientEnabling置为true,状态切换成功后置为false
■ 下一步解析计划
待测试验证
#2 Updated by IoT scm over 2 years ago
ID | Project | Branch | Uploader |
178946 | general/platform/frameworks/base | Pre_figure_turbox-c2130c-la1.1-qssi12-dev | caoqg0702@thundersoft.com |
AF:QuickSettings: Repair the problem of abnormal display of BluetoothTile TC-RID: 1201-0201903 IssueID: TS-R-BUG-115697 Change-Id: Ib5a059b4c695e312f3c2c8e143732a4a0702c39b |
#3 Updated by CD FW 曹覃刚 over 2 years ago
- Status changed from New to RESOLVED
- Assignee changed from CD FW 曹覃刚 to CD TEST-方永红
- % Done changed from 0 to 100
- Resolution changed from -- to FIXED
- Degrated changed from -- to No
- Fixed Version set to 2023-02-06
- Root cause set to 原生逻辑缺陷
#4 Updated by CD TEST-方永红 over 2 years ago
- Status changed from RESOLVED to VERIFIED
- Verified Version set to FlatBuild_HH_VX1_MCE_FSE.M.D.user.01.00.X101.202302030336
2.3
根据上述测试步骤,蓝牙可被正常打开
#5 Updated by CD TEST-方永红 over 2 years ago
- Status changed from VERIFIED to CLOSED