Android Wifi方法大全

来源:互联网 发布:为什么淘宝店铺打不开 编辑:程序博客网 时间:2024/06/05 05:10
package com.yarin.android.Examples_08_08; import java.util.List;  import android.content.Context;  import android.net.wifi.ScanResult;  import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo;  import android.net.wifi.WifiManager;  import android.net.wifi.WifiManager.WifiLock; public class WifiAdmin  {     //定义WifiManager对象      privateWifiManager mWifiManager;     //定义WifiInfo对象      privateWifiInfo mWifiInfo;     //扫描出的网络连接列表      privateList<ScanResult> mWifiList;    //网络连接列表      privateList<WifiConfiguration>mWifiConfiguration;     //定义一个WifiLock     WifiLock mWifiLock;      //构造器     public WifiAdmin(Context context)     {        //取得WifiManager对象        mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);        //取得WifiInfo对象        mWifiInfo =mWifiManager.getConnectionInfo();      }    //打开WIFI      publicvoid OpenWifi()      {        if(!mWifiManager.isWifiEnabled())         {            mWifiManager.setWifiEnabled(true);                    }      }    //关闭WIFI      publicvoid CloseWifi()      {        if(!mWifiManager.isWifiEnabled())         {            mWifiManager.setWifiEnabled(false);         }      }    //锁定WifiLock      publicvoid AcquireWifiLock()      {        mWifiLock.acquire();     }    //解锁WifiLock      publicvoid ReleaseWifiLock()      {        //判断时候锁定        if (mWifiLock.isHeld())        {            mWifiLock.acquire();         }      }    //创建一个WifiLock      publicvoid CreatWifiLock()      {        mWifiLock =mWifiManager.createWifiLock("Test");      }    //得到配置好的网络      publicList<WifiConfiguration>GetConfiguration()      {        return mWifiConfiguration;     }    //指定配置好的网络进行连接      publicvoid ConnectConfiguration(int index)      {        //索引大于配置好的网络索引返回        if(index >mWifiConfiguration.size())         {            return;         }         //连接配置好的指定ID的网络       mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,true);      }     publicvoid StartScan()      {        mWifiManager.startScan();        //得到扫描结果        mWifiList =mWifiManager.getScanResults();         //得到配置好的网络连接        mWifiConfiguration =mWifiManager.getConfiguredNetworks();      }    //得到网络列表      publicList<ScanResult> GetWifiList()     {        return mWifiList;     }    //查看扫描结果      publicStringBuilder 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地址      publicString GetMacAddress()      {        return (mWifiInfo == null) ?"NULL" : mWifiInfo.getMacAddress();      }    //得到接入点的BSSID      publicString GetBSSID()      {        return (mWifiInfo == null) ?"NULL" : mWifiInfo.getBSSID();      }    //得到IP地址      publicint GetIPAddress()      {        return (mWifiInfo == null) ? 0: mWifiInfo.getIpAddress();      }    //得到连接的ID      publicint GetNetworkId()      {        return (mWifiInfo == null) ? 0: mWifiInfo.getNetworkId();      }    //得到WifiInfo的所有信息包      publicString GetWifiInfo()      {        return (mWifiInfo == null) ?"NULL" : mWifiInfo.toString();      }    //添加一个网络并连接      publicvoid AddNetwork(WifiConfiguration wcg)      {        int wcgID =mWifiManager.addNetwork(wcg);        mWifiManager.enableNetwork(wcgID, true);      }    //断开指定ID的网络      publicvoid DisconnectWifi(int netId)      {       mWifiManager.disableNetwork(netId);        mWifiManager.disconnect();     } }  



注:

在android中,申请WakeLock可以使进程持续执行,即使进入睡眠模式,进程的执行也不间断,而且能保持屏幕常量。
WifiLock跟WakeLock用法作用与WakeLock相同,不过前者是针对Wifi的而已。
SMS Backup中关于WakeLock以及WifiLock的代码如下:

    private static void acquireWakeLock(Context ctx) {       if (sWakeLock == null) {          PowerManager pMgr = (PowerManager) ctx.getSystemService(POWER_SERVICE);   //保持当前进程持续有效          sWakeLock = pMgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,                 "SmsSyncService.sync()wakelock.");                    WifiManager wMgr = (WifiManager) ctx.getSystemService(WIFI_SERVICE);      //保持wifi有效          sWifiLock = wMgr.createWifiLock("SMSBackup");       }       sWakeLock.acquire();       sWifiLock.acquire();    }

用完一定要记得释放锁:

    private static void releaseWakeLock(Context ctx) {       sWakeLock.release();       sWifiLock.release();    }

而且要注意在AndroidManifest.xml中注明wakelock权限的申请:

<uses -permission android:name="android.permission.WAKE_LOCK"/>


0 0