Android Wifi开发

添加权限

<!-- 以下是使用wifi访问网络所需的权限 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

获取WifiManager

wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);

然后使用wifiManager就可以来使用Wifi了。具体见 这里

使用WifiAdmin工具类进行快捷开发

wifiAdmin工具类对wifiManager进行了封装,可以更方便地进行wifi的开发

public class WifiAdmin {    public WifiManager getWifiManager() {        return mWifiManager;    }    // 定义WifiManager对象    private WifiManager mWifiManager;    // 定义WifiInfo对象    private WifiInfo mWifiInfo;    // 扫描出的网络连接列表    private List<ScanResult> mWifiList;    // 网络连接列表    private List<WifiConfiguration> mWifiConfiguration;    // 定义一个WifiLock    WifiManager.WifiLock mWifiLock;    // 构造器    public WifiAdmin(Context context) {        // 取得WifiManager对象        mWifiManager = (WifiManager) context                .getSystemService(Context.WIFI_SERVICE);        // 取得WifiInfo对象        mWifiInfo = mWifiManager.getConnectionInfo();    }    // 打开WIFI    public void openWifi() {        if (!mWifiManager.isWifiEnabled()) {            mWifiManager.setWifiEnabled(true);        }    }    // 关闭WIFI    public void closeWifi() {        if (mWifiManager.isWifiEnabled()) {            mWifiManager.setWifiEnabled(false);        }    }    // 检查当前WIFI状态    public int checkState() {        return mWifiManager.getWifiState();    }    // 锁定WifiLock    public void acquireWifiLock() {        mWifiLock.acquire();    }    // 解锁WifiLock    public void releaseWifiLock() {        // 判断时候锁定        if (mWifiLock.isHeld()) {            mWifiLock.acquire();        }    }    // 创建一个WifiLock    public void creatWifiLock() {        mWifiLock = mWifiManager.createWifiLock("Test");    }    // 得到配置好的网络    public List<WifiConfiguration> getConfiguration() {        return mWifiConfiguration;    }    // 指定配置好的网络进行连接    public void connectConfiguration(int index) {        // 索引大于配置好的网络索引返回        if (index > mWifiConfiguration.size()) {            return;        }        // 连接配置好的指定ID的网络        mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,                true);    }    public void startScan() {        mWifiManager.startScan();        // 得到扫描结果        mWifiList = mWifiManager.getScanResults();        // 得到配置好的网络连接        mWifiConfiguration = mWifiManager.getConfiguredNetworks();    }    // 得到网络列表    public List<ScanResult> getWifiList() {        return mWifiList;    }    // 查看扫描结果    public StringBuilder lookUpScan() {        StringBuilder stringBuilder = new StringBuilder();        for (int i = 0; i < mWifiList.size(); i++) {            stringBuilder                    .append("Index_" + new Integer(i + 1).toString() + ":");            // 将ScanResult信息转换成一个字符串包            // 其中把包括:BSSID、SSID、capabilities、frequency、level            stringBuilder.append((mWifiList.get(i)).toString());            stringBuilder.append("/n");        }        return stringBuilder;    }    // 得到MAC地址    public String getMacAddress() {        return (mWifiInfo == null) ? "NULL" : mWifiInfo.getMacAddress();    }    // 得到接入点的BSSID    public String getBSSID() {        return (mWifiInfo == null) ? "NULL" : mWifiInfo.getBSSID();    }    // 得到IP地址    public int getIPAddress() {        return (mWifiInfo == null) ? 0 : mWifiInfo.getIpAddress();    }    // 得到连接的ID    public int getNetworkId() {        return (mWifiInfo == null) ? 0 : mWifiInfo.getNetworkId();    }    // 得到WifiInfo的所有信息包    public String getWifiInfo() {        return (mWifiInfo == null) ? "NULL" : mWifiInfo.toString();    }    // 添加一个网络并连接    public void addNetwork(WifiConfiguration wcg) {        int wcgID = mWifiManager.addNetwork(wcg);        boolean b = mWifiManager.enableNetwork(wcgID, true);        System.out.println("a--" + wcgID);        System.out.println("b--" + b);    }    // 断开指定ID的网络    public void disconnectWifi(int netId) {        mWifiManager.disableNetwork(netId);        mWifiManager.disconnect();    }    //定义几种加密方式,一种是WEP,一种是WPA,还有没有密码的情况    public enum WifiCipherType {        WIFICIPHER_WEP, //WEP        WIFICIPHER_WPA, //WPA        WIFICIPHER_NOPASS, //没有密码        WIFICIPHER_INVALID //无效的    }    /**     * 创建 一个 WifiConfiguration,之后调用wifiManager.addNetwork保存wifi密码     * @param SSID     * @param password     * @param type     * @return     */    public WifiConfiguration createWifiInfo(String SSID, String password, int type) {        WifiConfiguration config = new WifiConfiguration();        config.allowedAuthAlgorithms.clear();        config.allowedGroupCiphers.clear();        config.allowedKeyManagement.clear();        config.allowedPairwiseCiphers.clear();        config.allowedProtocols.clear();        config.SSID = "\"" + SSID + "\"";        WifiConfiguration tempConfig = this.isExsits(SSID);        if (tempConfig != null) {            mWifiManager.removeNetwork(tempConfig.networkId);        } else {        }        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 WifiConfiguration isExsits(String SSID) { // 查看以前是否已经配置过该SSID        List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();        for (WifiConfiguration existingConfig : existingConfigs) {            if (existingConfig.SSID.equals("\"" + SSID + "\"")) {                return existingConfig;            }        }        return null;    }}

使用Wifi进行数据传输

使用Wifi进行数据传输其实很简单
服务端这边开启一个wifi热点
然后客户端这边连接到这个热点
然后就组成了一个局域网
然后使用Socket进行通信就可以了 ~

参考

http://www.bkjia.com/Androidjc/1003613.html
http://www.cnblogs.com/pied/p/3767336.html
http://blog.csdn.net/h3c4lenovo/article/details/9627781
http://blog.csdn.net/hudashi/article/details/25283087
http://blog.csdn.net/hudashi/article/details/25284439

Demo

wifi开发示例

更多相关文章

  1. 如何调试Android(安卓)Annotation Processor程序
  2. Android(安卓)N调用系统安装APK方法报错原因整理及解决方案
  3. Win10下编译Android(安卓)Ogre3d 1.12.6
  4. Android使用HttpURLConnection请求网络资源
  5. android Volley网络通信框架学习
  6. android实现上传本地图片到网络功能
  7. Gradle???????
  8. kotlin 配置开发环境
  9. Android(安卓)网络编程 Socket Http

随机推荐

  1. android 插件化 与一个轻量级框架
  2. Android在xml布局中找不到自定义属性的问
  3. Android Material Design 进度条 自定义
  4. [原创]Android(安卓)init.rc文件解析过程
  5. 工作总结
  6. Android数据储存之SharedPreferences
  7. 两分钟彻底让你明白Android(安卓)Activit
  8. android去除状态栏和下面视图之前的黑线
  9. 在Android中使用Timer,并创建一个应用程序
  10. android中设置activity的出现方式