又到了程序猿日常踩坑的时间了,前段时间,做了一个定制化WiFi相关的功能,最近几天空闲,把踩坑的心路历程分享给大家。
需求分析
对于很多应用来说,都不愿意跳转到系统的设置去配置WiFi的信息,那样容易造成APP的整体风格出现混乱。所以,我们就需要自己定制化WiFi相关的模块功能。
具体实现
功能逻辑流程图。
WiFi流程逻辑 .png
功能实现
开始的开始,我们还是孩子(咳咳。。。。)严肃一点,我们要添加获取WiFi和网络的权限
我们需要在界面上设置一个switchButton来根据系统的WiFi状态进行区别
mSwitchButton.setChecked(mWifiManager.isWifiEnabled()); //获取当前系统的WiFi状态,设置btn状态
mSwitchButton.setOnCheckedChangeListener((view, isChecked) -> {
mWifiManager.setWifiEnabled(isChecked);
//更新列表
if (isChecked) {
Toast.makeText(WifiActivity.this, "打开", Toast.LENGTH_SHORT).show();
//第二次点击的时候,清除之前的list
isRefresh = true;
presenter.subscribe(isRefresh);
} else {
Toast.makeText(WifiActivity.this, "关闭", Toast.LENGTH_SHORT).show();
listView.setVisibility(View.GONE);
}
});
//这里是根据适配器进行适配数据
mListAdapter = new WifiListAdapter(this, mScanResults);
listView.setAdapter(mListAdapter);
采用MVP的模式对WiFi获取