最近接触手机方案这块,面对的是MTK平台
这个BUG是一个MTK平台ANDROID版本p的WIFI热点的BUG问题
下面我把bug图发出来大家看看,首先A手机产生WIFI热点,B / C手机去连接,此时A手机显示连接数是2台,这个是没问题的,问题就出现在,当A手机进去热点连接人数管理的时候,把乙手机封锁掉,此时最外面的连接人数并没有刷新改变,还是显示2个手机连接,这就是BUG了
下面我上图
1.TetherSettings
private WifiTetherPreferenceController mWifiTetherPreferenceController;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mWifiTetherPreferenceController =
new WifiTetherPreferenceController(context, getLifecycle());
}
2.WifiTetherPreferenceController
@Override
public void onStart() {
if (mPreference != null) {
mContext.registerReceiver(mReceiver, AIRPLANE_INTENT_FILTER);
clearSummaryForAirplaneMode();
if (mWifiTetherSoftApManager != null) {
mWifiTetherSoftApManager.registerSoftApCallback();
}
}
}
3.WifiTetherSoftApManager
public void registerSoftApCallback() {
mWifiManager.registerSoftApCallback(mSoftApCallback, mHandler);
}
private WifiManager.SoftApCallback mSoftApCallback = new WifiManager.SoftApCallback() {
@Override
public void onStateChanged(int state, int failureReason) {
mWifiTetherSoftApCallback.onStateChanged(state, failureReason);
}
@Override
public void onNumClientsChanged(int numClients) {
mWifiTetherSoftApCallback.onNumClientsChanged(numClients);
}
};
4.SoftApCallback
public interface ISoftApCallback extends android.os.IInterface
5.
WifiServiceImpl
全局搜索 ISoftApCallback 应用到的地方
来到
WifiServiceImpl
他继承自
MtkWifiServiceImpl
MtkSoftApManager
注释掉
//setNumAssociatedStations(message.arg1);
加入
private void updateConnectedNum(){
int connectNum =0;
List<HotspotClient> clientList = getHotspotClientsList();
if (clientList != null) {
for (HotspotClient client : clientList) {
if (!client.isBlocked) {
connectNum++;
}
}
}
setNumAssociatedStations(connectNum);
}