直接上代码,看注释:
public class WifiAdapter extends BaseAdapter {
private Context context;
private LayoutInflater layoutInflater;
private ArrayList<ScanResult> mData=new ArrayList<>();
private ArrayList<WifiConfiguration>wifiConfigurations;
private WifiInfo wifiInfo;
private WifiManager wifiManager;
public WifiAdapter(Context context, ArrayList<ScanResult> resData) {
this.context = context;
this.mData = resData;
wifiManager=(WifiManager)context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiInfo=wifiManager.getConnectionInfo();
layoutInflater = LayoutInflater.from(context);
}
public void update(ArrayList<WifiConfiguration>wifiConfigurations){
this.wifiConfigurations=wifiConfigurations;
}
public void updateLinkStatus(){
wifiInfo=wifiManager.getConnectionInfo();
notifyDataSetChanged();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int i) {
return mData.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder=null;
if(view==null){
view=layoutInflater.inflate(R.layout.wlan_setting_wlan_item,null);
holder=new ViewHolder();
holder.tvWifiName=(TextView)view.findViewById(R.id.tv_item_wlan_name);
holder.tvWifiStatus=(TextView)view.findViewById(R.id.tv_item_wlan_link_status);
holder.tvSign=(TextView) view.findViewById(R.id.tv_item_wlan_sign_strength);
view.setTag(holder);
}else{
holder=(ViewHolder) view.getTag();
}
ScanResult scanResult=mData.get(i);
holder.tvWifiName.setText(scanResult.SSID);
Log.e("wifi="+i,"scanResult.SSID="+scanResult.SSID+"___="+wifiInfo.getSSID());
//连接的ssid
if(wifiInfo!=null&&(wifiInfo.getSSID()).equals(("\""+scanResult.SSID+"\""))){
holder.tvWifiStatus.setText("已连接");
}else{
setStatus(holder.tvWifiStatus,scanResult.capabilities);
}
getWifiLevel(holder.tvSign,scanResult.level);
return view;
}
static class ViewHolder{
TextView tvWifiName;
TextView tvWifiStatus;
TextView tvSign;
}
private void getWifiLevel(TextView tvSign,int level){
//满格强度
if (level <= 0 && level >= -55) {
tvSign.setBackgroundResource(R.drawable.wifi_level_lock_4);
} else if (level < -55 && level >= -70) {
tvSign.setBackgroundResource(R.drawable.wifi_level_lock_3);
} else if (level < -70 && level >= -85) {
tvSign.setBackgroundResource(R.drawable.wifi_level_lock_2);
} else if (level < -85 && level >= -100) {
tvSign.setBackgroundResource(R.drawable.wifi_level_lock_1);
} else {
//无连接
tvSign.setBackgroundResource(R.drawable.wifi_level_lock_1);
}
}
private void setStatus(TextView tvStatus,String password){
if(password.contains("WPA")||password.contains("WPA2")){
tvStatus.setText("通过WPA/WPA2进行保护");
}
if(password.contains("WPE")){
tvStatus.setText("通过WPE进行保护");
}
if(password.contains("EAP")){
tvStatus.setText("通过EAP进行保护");
}
}
}
还要设置权限:
<!-- wifi状态检测-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 网络状态检测 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
直接调用,自己换资源图标等。