WIFI列表信号适配器

直接上代码,看注释:

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" />

直接调用,自己换资源图标等。

猜你喜欢

转载自blog.csdn.net/qq_31622345/article/details/88600950