sim卡切换主要涉及以下几个文件:
packages\apps\settings\src\com\android\settings\sim\SimSettings.java
packages\apps\settings\src\com\mediatek\settings\sim\RadioPowerManager.java
packages\apps\settings\src\com\mediatek\settings\sim\RadioPowerPreference.java
流程如下:
RadioPowerManager.onCheckedChanged
-->RadioPowerPreference.setRadioOn-->RadioPowerPreference.setRadioEnabled
-->RadioPowerPreference.notifyChanged-->RadioPowerPreference.onBindView-->radioSwitch.setChecked
此时按钮打开或关闭.
-->SimSettings.onServiceStateChanged-->SimSettings.updateSimSlotValues-->SimSettings.update
-->RadioPowerPreference.setRadioOn-->RadioPowerPreference.setRadioEnabled
-->RadioPowerPreference.notifyChanged-->RadioPowerPreference.onBindView-->radioSwitch.setChecked
此时监听到onServiceStateChanged,更新卡1/卡2开关状态.
正常情况下(以先后打开卡1/卡2为例):
10-29 19:41:33.935 D/RadioPowerManager:isRadioSwitchComplete(1), slotId: 0, isChanged: true
10-29 19:41:33.936 D/RadioPowerManager:bindPreference:onCheckedChanged:if:subId=1 isChecked=false
关闭卡1
10-29 19:41:33.936 D/RadioPowerPreference:setRadioOn:state=false
10-29 19:41:34.060 D/RadioPowerPreference:setRadioEnabled:enable=false
10-29 19:41:34.134 D/RadioPowerManager:currentSimMode=2 isRadioOn=false, isChecked: false
10-29 19:41:34.342 D/RadioPowerPreference:onBindView:mPowerState=false
10-29 19:41:34.390 D/RadioPowerPreference:onBindView:mPowerState=true
更新卡1/卡2:卡1关闭,卡2打开
10-29
packages\apps\settings\src\com\android\settings\sim\SimSettings.java
packages\apps\settings\src\com\mediatek\settings\sim\RadioPowerManager.java
packages\apps\settings\src\com\mediatek\settings\sim\RadioPowerPreference.java
流程如下:
RadioPowerManager.onCheckedChanged
-->RadioPowerPreference.setRadioOn-->RadioPowerPreference.setRadioEnabled
-->RadioPowerPreference.notifyChanged-->RadioPowerPreference.onBindView-->radioSwitch.setChecked
此时按钮打开或关闭.
-->SimSettings.onServiceStateChanged-->SimSettings.updateSimSlotValues-->SimSettings.update
-->RadioPowerPreference.setRadioOn-->RadioPowerPreference.setRadioEnabled
-->RadioPowerPreference.notifyChanged-->RadioPowerPreference.onBindView-->radioSwitch.setChecked
此时监听到onServiceStateChanged,更新卡1/卡2开关状态.
正常情况下(以先后打开卡1/卡2为例):
10-29 19:41:33.935 D/RadioPowerManager:isRadioSwitchComplete(1), slotId: 0, isChanged: true
10-29 19:41:33.936 D/RadioPowerManager:bindPreference:onCheckedChanged:if:subId=1 isChecked=false
关闭卡1
10-29 19:41:33.936 D/RadioPowerPreference:setRadioOn:state=false
10-29 19:41:34.060 D/RadioPowerPreference:setRadioEnabled:enable=false
10-29 19:41:34.134 D/RadioPowerManager:currentSimMode=2 isRadioOn=false, isChecked: false
10-29 19:41:34.342 D/RadioPowerPreference:onBindView:mPowerState=false
10-29 19:41:34.390 D/RadioPowerPreference:onBindView:mPowerState=true
更新卡1/卡2:卡1关闭,卡2打开
10-29