wifi 简单实习
来源:互联网 发布:管家婆无法连接数据库 编辑:程序博客网 时间:2024/06/06 01:15
期间有个问题,幸好有大神相助,网上代码看的头痛,直接上代码
private ArrayList<ScanResult> mList; private ListViewAdapter mAdapter; private WifiManager mWm; @Override protected void setListView(ListView listView) { initData(); mAdapter = new ListViewAdapter(mList) { //这里我把BaseAdapter给封装了一下 只需要重写getView方法 @Override protected View getListView(final int position, View convertView, ViewGroup parent) { TextView tv; if (convertView == null) { tv = new TextView(WifiActivity.this); convertView = tv; } TextView textView = (TextView) convertView; if (mList.size() > position) { textView.setText(mList.get(position).SSID); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ScanResult scanResult = mList.get(position); //获取wifi的信息 inputPassword(scanResult); //弹出对话框 } }); } return convertView; } }; listView.setAdapter(mAdapter); } //WIFI private void initData() { //管理wifi 获得wifi服务 if (mWm == null) mWm = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (!mWm.isWifiEnabled()) mWm.setWifiEnabled(true); //wifi开启 //管理网络 获得网络服务 ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); //网络信息获取 NetworkInfo nif = cm.getNetworkInfo(ConnectivityManager. TYPE_WIFI); //网络连接 DhcpInfo dhcpInfo = mWm.getDhcpInfo(); WifiInfo wifiInfo = mWm.getConnectionInfo(); String ssid = wifiInfo.getSSID(); List<WifiConfiguration> configuredNetworks = mWm.getConfiguredNetworks(); //mWm.startScan(); //wifi扫描 mList = (ArrayList<ScanResult>) mWm.getScanResults(); //获取附近的wifi refresh(); } private void refresh() { //这里进行刷新wifi列表 new Handler().postDelayed(new Runnable() { @Override public void run() { mList = (ArrayList<ScanResult>) mWm.getScanResults(); //获取附近的wifi mAdapter.notifyDataSetChanged(); refresh(); } }, 500); } private void inputPassword(final ScanResult bean) { AlertDialog.Builder builder = new AlertDialog.Builder(this); final View view1 = View.inflate(this, R.layout.view_password, null); builder.setView(view1); builder.setTitle(bean.SSID); builder.setMessage("请输入WIFI密码:"); builder.setPositiveButton("连接", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText evPsw = (EditText) view1.findViewById(R.id.view_password); String psw = evPsw.getText().toString().trim(); if (TextUtils.isEmpty(psw)) { Toast.makeText(WifiActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(WifiActivity.this, "正在尝试连接,请稍候...", Toast.LENGTH_SHORT).show(); WifiManager mWm = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration wcg = WifiUtils.CreateWifiInfo(WifiActivity.this, bean.SSID, psw, WifiUtils.getEncrypt(bean.capabilities)); int wcgID = mWm.addNetwork(wcg); //添加网络 boolean b = mWm.enableNetwork(wcgID, true); //使用网络 中间没有添加这两行代码作死连不上 } } }); builder.setNegativeButton("取消", null); builder.show(); } //int 地址装换成32 位值 public String FormatString(int value) { String strValue = ""; byte[] ary = intToByteArray(value); for (int i = ary.length - 1; i >= 0; i--) { strValue += (ary[i] & 0xFF); if (i > 0) { strValue += "."; } } return strValue; } public byte[] intToByteArray(int value) { byte[] b = new byte[4]; for (int i = 0; i < 4; i++) { int offset = (b.length - 1 - i) * 8; b[i] = (byte) ((value >>> offset) & 0xFF); } return b; } }
//下面是个工具类
package com.jingsheng.jingsheng.utlis;import android.content.Context;import android.net.DhcpInfo;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.text.TextUtils;import java.net.Inet4Address;import java.util.List;/** * Created by JarryLeo on 2017/2/17. */public class WifiUtils {private ArrayList<ScanResult> mList; private ListViewAdapter mAdapter; private WifiManager mWm; @Override protected void setListView(ListView listView) { initData(); mAdapter = new ListViewAdapter(mList) { //这里我把BaseAdapter给封装了一下 只需要重写getView方法 @Override protected View getListView(final int position, View convertView, ViewGroup parent) { TextView tv; if (convertView == null) { tv = new TextView(WifiActivity.this); convertView = tv; } TextView textView = (TextView) convertView; if (mList.size() > position) { textView.setText(mList.get(position).SSID); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ScanResult scanResult = mList.get(position); //获取wifi的信息 inputPassword(scanResult); //弹出对话框 } }); } return convertView; } }; listView.setAdapter(mAdapter); } //WIFI private void initData() { //管理wifi 获得wifi服务 if (mWm == null) mWm = (WifiManager) getSystemService(Context.WIFI_SERVICE); if (!mWm.isWifiEnabled()) mWm.setWifiEnabled(true); //wifi开启 //管理网络 获得网络服务 ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); //网络信息获取 NetworkInfo nif = cm.getNetworkInfo(ConnectivityManager. TYPE_WIFI); //网络连接 DhcpInfo dhcpInfo = mWm.getDhcpInfo(); WifiInfo wifiInfo = mWm.getConnectionInfo(); String ssid = wifiInfo.getSSID(); List<WifiConfiguration> configuredNetworks = mWm.getConfiguredNetworks(); //mWm.startScan(); //wifi扫描 mList = (ArrayList<ScanResult>) mWm.getScanResults(); //获取附近的wifi refresh(); } private void refresh() { //这里进行刷新wifi列表 new Handler().postDelayed(new Runnable() { @Override public void run() { mList = (ArrayList<ScanResult>) mWm.getScanResults(); //获取附近的wifi mAdapter.notifyDataSetChanged(); refresh(); } }, 500); } private void inputPassword(final ScanResult bean) { AlertDialog.Builder builder = new AlertDialog.Builder(this); final View view1 = View.inflate(this, R.layout.view_password, null); builder.setView(view1); builder.setTitle(bean.SSID); builder.setMessage("请输入WIFI密码:"); builder.setPositiveButton("连接", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText evPsw = (EditText) view1.findViewById(R.id.view_password); String psw = evPsw.getText().toString().trim(); if (TextUtils.isEmpty(psw)) { Toast.makeText(WifiActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(WifiActivity.this, "正在尝试连接,请稍候...", Toast.LENGTH_SHORT).show(); WifiManager mWm = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiConfiguration wcg = WifiUtils.CreateWifiInfo(WifiActivity.this, bean.SSID, psw, WifiUtils.getEncrypt(bean.capabilities)); int wcgID = mWm.addNetwork(wcg); //添加网络 boolean b = mWm.enableNetwork(wcgID, true); //使用网络 中间没有添加这两行代码作死连不上 } } }); builder.setNegativeButton("取消", null); builder.show(); } //int 地址装换成32 位值 public String FormatString(int value) { String strValue = ""; byte[] ary = intToByteArray(value); for (int i = ary.length - 1; i >= 0; i--) { strValue += (ary[i] & 0xFF); if (i > 0) { strValue += "."; } } return strValue; } public byte[] intToByteArray(int value) { byte[] b = new byte[4]; for (int i = 0; i < 4; i++) { int offset = (b.length - 1 - i) * 8; b[i] = (byte) ((value >>> offset) & 0xFF); } return b; } }package com.jingsheng.jingsheng.utlis;import android.content.Context;import android.net.DhcpInfo;import android.net.wifi.WifiConfiguration;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.text.TextUtils;import java.net.Inet4Address;import java.util.List;/** * Created by JarryLeo on 2017/2/17. */public class WifiUtils { //验证密码 public static WifiConfiguration CreateWifiInfo(Context context, String SSID, String Password, int Type) { WifiManager mWm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; WifiConfiguration tempConfig = IsExsits(context, SSID); if (tempConfig != null) { mWm.removeNetwork(tempConfig.networkId); } if (Type == 1) //WIFICIPHER_NOPASS { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == 2) //WIFICIPHER_WEP { config.hiddenSSID = true; config.wepKeys[0] = "\"" + Password + "\""; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == 3) //WIFICIPHER_WPA { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; } private static WifiConfiguration IsExsits(Context context, String SSID) { WifiManager mWm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); List<WifiConfiguration> existingConfigs = mWm.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("/" + SSID + " / ")) { return existingConfig; } } return null; } /** * int型ip地址转字符串 * * @param ip * @return */ public static String ipIntToString(int ip) { try { byte[] bytes = new byte[4]; bytes[0] = (byte) (0xff & ip); bytes[1] = (byte) ((0xff00 & ip) >> 8); bytes[2] = (byte) ((0xff0000 & ip) >> 16); bytes[3] = (byte) ((0xff000000 & ip) >> 24); return Inet4Address.getByAddress(bytes).getHostAddress(); } catch (Exception e) { return ""; } } public static String getInfoString(WifiManager wm) { WifiInfo wifiInfo = wm.getConnectionInfo(); DhcpInfo dhcpInfo = wm.getDhcpInfo(); StringBuilder sb = new StringBuilder(); sb.append("IP地址:" + ipIntToString(wifiInfo.getIpAddress()) + "\n"); sb.append("网关:" + ipIntToString(dhcpInfo.gateway) + "\n"); sb.append("网络ID:" + wifiInfo.getNetworkId() + "\n"); sb.append("网络名字:" + wifiInfo.getSSID() + "\n"); sb.append("网络的信号:" + wifiInfo.getRssi() + "\n"); sb.append("网络连接的速度:" + wifiInfo.getLinkSpeed() + "\n"); //sb.append("客户端状态的信息:" + wifiInfo.getSupplicantState() + "\n"); return sb.toString(); } public static int getEncrypt(String capabilities) { if (!TextUtils.isEmpty(capabilities)) { if (capabilities.contains("WPA") || capabilities.contains("wpa")) { return 3; } else if (capabilities.contains("WEP") || capabilities.contains("wep")) { return 2; } else { //无密码类型 return 1; } } return 0; }}public static WifiConfiguration CreateWifiInfo(Context context, String SSID, String Password, int Type) { WifiManager mWm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); WifiConfiguration config = new WifiConfiguration(); config.allowedAuthAlgorithms.clear(); config.allowedGroupCiphers.clear(); config.allowedKeyManagement.clear(); config.allowedPairwiseCiphers.clear(); config.allowedProtocols.clear(); config.SSID = "\"" + SSID + "\""; WifiConfiguration tempConfig = IsExsits(context, SSID); if (tempConfig != null) { mWm.removeNetwork(tempConfig.networkId); } if (Type == 1) //WIFICIPHER_NOPASS { config.wepKeys[0] = ""; config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == 2) //WIFICIPHER_WEP { config.hiddenSSID = true; config.wepKeys[0] = "\"" + Password + "\""; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); config.wepTxKeyIndex = 0; } if (Type == 3) //WIFICIPHER_WPA { config.preSharedKey = "\"" + Password + "\""; config.hiddenSSID = true; config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); //config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); config.status = WifiConfiguration.Status.ENABLED; } return config; } private static WifiConfiguration IsExsits(Context context, String SSID) { WifiManager mWm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); List<WifiConfiguration> existingConfigs = mWm.getConfiguredNetworks(); for (WifiConfiguration existingConfig : existingConfigs) { if (existingConfig.SSID.equals("/" + SSID + " / ")) { return existingConfig; } } return null; } /** * int型ip地址转字符串 * * @param ip * @return */ public static String ipIntToString(int ip) { try { byte[] bytes = new byte[4]; bytes[0] = (byte) (0xff & ip); bytes[1] = (byte) ((0xff00 & ip) >> 8); bytes[2] = (byte) ((0xff0000 & ip) >> 16); bytes[3] = (byte) ((0xff000000 & ip) >> 24); return Inet4Address.getByAddress(bytes).getHostAddress(); } catch (Exception e) { return ""; } } public static String getInfoString(WifiManager wm) { WifiInfo wifiInfo = wm.getConnectionInfo(); DhcpInfo dhcpInfo = wm.getDhcpInfo(); StringBuilder sb = new StringBuilder(); sb.append("IP地址:" + ipIntToString(wifiInfo.getIpAddress()) + "\n"); sb.append("网关:" + ipIntToString(dhcpInfo.gateway) + "\n"); sb.append("网络ID:" + wifiInfo.getNetworkId() + "\n"); sb.append("网络名字:" + wifiInfo.getSSID() + "\n"); sb.append("网络的信号:" + wifiInfo.getRssi() + "\n"); sb.append("网络连接的速度:" + wifiInfo.getLinkSpeed() + "\n"); //sb.append("客户端状态的信息:" + wifiInfo.getSupplicantState() + "\n"); return sb.toString(); }//获取wifi密码的加密类型 public static int getEncrypt(String capabilities) { if (!TextUtils.isEmpty(capabilities)) { if (capabilities.contains("WPA") || capabilities.contains("wpa")) { return 3; } else if (capabilities.contains("WEP") || capabilities.contains("wep")) { return 2; } else { //无密码类型 return 1; } } return 0; }}
更多wifi资料,网上搜一搜吧!
//对了,不要忘了添加权限<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>有些的要加上
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
阅读全文
0 0
- wifi 简单实习
- wifi 简单介绍
- 网易实习第一阶段简单回顾
- wifi相关(一)wifi的简单分析
- Android Wifi简单的梳理
- 简单手机Wifi连接聊天
- Android Wifi简单的梳理
- android.net.wifi简单介绍
- android的简单wifi demo
- WiFi信息获取简单demo
- wifi密码锁-ESP8266简单应用
- 简单聊聊寻找实习的过程
- 实习
- 实习~!
- 实习
- 实习
- 实习
- 实习
- java基础教程:介绍和环境(1)
- matlab和vs混合调用问题
- |UVA 11292|贪心|Dragon of Loowater
- Data Binding
- 哈夫模型-arcgis
- wifi 简单实习
- 解决 Source Insight中的parse too complex问题
- ES6焦点图(已实现)
- JDBCUtils 的通用代码
- java web在linux环境下上传文件出现的一些问题
- Hadoop DataNode 无法连接到主机NameNode
- LeetCode 41. First Missing Positive
- |UVA 11729|贪心|Commando War
- java核心编程笔记