您的位置:首页 > 移动开发 > Android开发

WIFI相关

2016-12-09 13:31 190 查看
[align=left]packageorg.sunchao;[/align]
[align=left]
[/align]
[align=left]importjava.util.List;[/align]
[align=left]
[/align]
[align=left]importandroid.content.Context;[/align]
[align=left]importandroid.net.wifi.ScanResult;[/align]
[align=left]importandroid.net.wifi.WifiConfiguration;[/align]
[align=left]importandroid.net.wifi.WifiInfo;[/align]
[align=left]importandroid.net.wifi.WifiManager;[/align]
[align=left]importandroid.net.wifi.WifiManager.WifiLock;[/align]
[align=left]importandroid.util.Log;[/align]
[align=left]
[/align]
publicclassWifiAdmin
{
[align=left]     privatefinalstaticStringTAG="WifiAdmin";[/align]
[align=left]     privateStringBuffermStringBuffer=newStringBuffer();[/align]
[align=left]     privateList<ScanResult>listResult;[/align]
[align=left]     privateScanResultmScanResult;[/align]
     //
定义WifiManager对象
     privateWifiManagermWifiManager;
     //
定义WifiInfo对象
[align=left]     privateWifiInfomWifiInfo;[/align]
     //
网络连接列表
[align=left]     privateList<WifiConfiguration>mWifiConfiguration;[/align]
     //
定义一个WifiLock
[align=left]     WifiLockmWifiLock;[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 构造方法[/align]
[align=left]      */[/align]
     publicWifiAdmin(Contextcontext)
{
          mWifiManager=
(WifiManager)context
[align=left]                   .getSystemService(Context.WIFI_SERVICE);[/align]
[align=left]          mWifiInfo=mWifiManager.getConnectionInfo();[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 打开Wifi网卡[/align]
[align=left]      */[/align]
     publicvoidopenNetCard()
{
          if(!mWifiManager.isWifiEnabled())
{
[align=left]              mWifiManager.setWifiEnabled(true);[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 关闭Wifi网卡[/align]
[align=left]      */[/align]
     publicvoidcloseNetCard()
{
          if(mWifiManager.isWifiEnabled())
{
[align=left]              mWifiManager.setWifiEnabled(false);[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 检查当前Wifi网卡状态[/align]
[align=left]      */[/align]
     publicvoidcheckNetCardState()
{
          if(mWifiManager.getWifiState()
== 0) {
[align=left]              Log.i(TAG,"网卡正在关闭");[/align]
          }elseif(mWifiManager.getWifiState()
== 1) {
[align=left]              Log.i(TAG,"网卡已经关闭");[/align]
          }elseif(mWifiManager.getWifiState()
== 2) {
[align=left]              Log.i(TAG,"网卡正在打开");[/align]
          }elseif(mWifiManager.getWifiState()
== 3) {
[align=left]              Log.i(TAG,"网卡已经打开");[/align]
[align=left]          }else{[/align]
[align=left]              Log.i(TAG,"---_---晕......没有获取到状态---_---");[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 扫描周边网络[/align]
[align=left]      */[/align]
     publicvoidscan()
{
[align=left]          mWifiManager.startScan();[/align]
[align=left]          listResult=mWifiManager.getScanResults();[/align]
          if(listResult!=null)
{
[align=left]              Log.i(TAG,"当前区域存在无线网络,请查看扫描结果");[/align]
[align=left]          }else{[/align]
[align=left]              Log.i(TAG,"当前区域没有无线网络");[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 得到扫描结果[/align]
[align=left]      */[/align]
     publicString
getScanResult() {
          //
每次点击扫描之前清空上一次的扫描结果
          if(mStringBuffer!=null)
{
[align=left]              mStringBuffer=newStringBuffer();[/align]
[align=left]          }[/align]
          //
开始扫描网络
[align=left]          scan();[/align]
[align=left]          listResult=mWifiManager.getScanResults();[/align]
          if(listResult!=null)
{
              for(inti=
0;i<listResult.size();i++)
{
[align=left]                   mScanResult=listResult.get(i);[/align]
                   mStringBuffer=mStringBuffer.append("NO.").append(i+
1)
                             .append("
:").append(mScanResult.SSID).append("->")
[align=left]                             .append(mScanResult.BSSID).append("->")[/align]
[align=left]                             .append(mScanResult.capabilities).append("->")[/align]
[align=left]                             .append(mScanResult.frequency).append("->")[/align]
[align=left]                             .append(mScanResult.level).append("->")[/align]
[align=left]                             .append(mScanResult.describeContents()).append("\n\n");[/align]
[align=left]              }[/align]
[align=left]          }[/align]
[align=left]          Log.i(TAG,mStringBuffer.toString());[/align]
[align=left]          returnmStringBuffer.toString();[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 连接指定网络[/align]
[align=left]      */[/align]
     publicvoidconnect()
{
[align=left]          mWifiInfo=mWifiManager.getConnectionInfo();[/align]
[align=left]          [/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 断开当前连接的网络[/align]
[align=left]      */[/align]
     publicvoiddisconnectWifi()
{
          intnetId=
getNetworkId();
[align=left]          mWifiManager.disableNetwork(netId);[/align]
[align=left]          mWifiManager.disconnect();[/align]
[align=left]          mWifiInfo=null;[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 检查当前网络状态[/align]
[align=left]      *[/align]
[align=left]      *@returnString[/align]
[align=left]      */[/align]
     publicvoidcheckNetWorkState()
{
          if(mWifiInfo!=null)
{
[align=left]              Log.i(TAG,"网络正常工作");[/align]
[align=left]          }else{[/align]
[align=left]              Log.i(TAG,"网络已断开");[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 得到连接的ID[/align]
[align=left]      */[/align]
     publicintgetNetworkId()
{
          return(mWifiInfo==null)
? 0 :mWifiInfo.getNetworkId();
[align=left]     }[/align]
[align=left]
[/align]
[align=left]     /**[/align]
[align=left]      * 得到IP地址[/align]
[align=left]      */[/align]
     publicintgetIPAddress()
{
          return(mWifiInfo==null)
? 0 :mWifiInfo.getIpAddress();
[align=left]     }[/align]
[align=left]
[/align]
     //
锁定WifiLock
     publicvoidacquireWifiLock()
{
[align=left]          mWifiLock.acquire();[/align]
[align=left]     }[/align]
[align=left]
[/align]
     //
解锁WifiLock
     publicvoidreleaseWifiLock()
{
          //
判断时候锁定
          if(mWifiLock.isHeld())
{
[align=left]              mWifiLock.acquire();[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
     //
创建一个WifiLock
     publicvoidcreatWifiLock()
{
[align=left]          mWifiLock=mWifiManager.createWifiLock("Test");[/align]
[align=left]     }[/align]
[align=left]
[/align]
     //
得到配置好的网络
     publicList<WifiConfiguration>
getConfiguration() {
[align=left]          returnmWifiConfiguration;[/align]
[align=left]     }[/align]
[align=left]
[/align]
     //
指定配置好的网络进行连接
     publicvoidconnectConfiguration(intindex)
{
          //
索引大于配置好的网络索引返回
          if(index>=mWifiConfiguration.size())
{
[align=left]              return;[/align]
[align=left]          }[/align]
          //
连接配置好的指定ID的网络
[align=left]          mWifiManager.enableNetwork(mWifiConfiguration.get(index).networkId,[/align]
[align=left]                   true);[/align]
[align=left]     }[/align]
[align=left]
[/align]
     //
得到MAC地址
     publicString
getMacAddress() {
          return(mWifiInfo==null)
?"NULL":mWifiInfo.getMacAddress();
[align=left]     }[/align]
[align=left]
[/align]
     //
得到接入点的BSSID
     publicString
getBSSID() {
          return(mWifiInfo==null)
?"NULL":mWifiInfo.getBSSID();
[align=left]     }[/align]
[align=left]
[/align]
     //
得到WifiInfo的所有信息包
     publicString
getWifiInfo() {
          return(mWifiInfo==null)
?"NULL":mWifiInfo.toString();
[align=left]     }[/align]
[align=left]
[/align]
     //
添加一个网络并连接
     publicintaddNetwork(WifiConfigurationwcg)
{
[align=left]          intwcgID=mWifiManager.addNetwork(mWifiConfiguration.get(3));[/align]
[align=left]          mWifiManager.enableNetwork(wcgID,true);[/align]
[align=left]          returnwcgID;[/align]
[align=left]     }[/align]
[align=left]}[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]一一一一一一一一一一一我是一条你看不见的分割线一一一一一一一一一[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]
[/align]

打开RE,进入/data/misc/wifi/wpa_supplicant.conf

会看到有很多类似network={****}字段:

比如:

network={

ssid="BH02"

psk="86625757"

key_mgmt=WPA-PSK

priority=4

}

其中ssid表示wifi名称;

psk表示wifi密码。

一一一一一一一一一一一我是一条你看不见的分割线一一一一一一一一一

打开或者关闭飞行模式

//打开
privatevoidoff()
{
[align=left]          [/align]
[align=left]          try{[/align]
              Processp=
Runtime.getRuntime().exec("su");
[align=left]              DataOutputStreamdos=newDataOutputStream(p.getOutputStream());[/align]
              dos.writeBytes("settings
put global airplane_mode_on 1\n");
[align=left]              dos.flush();[/align]
              dos.writeBytes("am
broadcast -a android.intent.action.AIRPLANE_MODE --ez state true\n");
[align=left]              dos.flush();[/align]
[align=left]              dos.close();[/align]
[align=left]              [/align]
          }catch(IOExceptione)
{             
[align=left]              e.printStackTrace();[/align]
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]     [/align]
[align=left]//关闭[/align]
     privatevoidon()
{
[align=left]          try{[/align]
              Processp=
Runtime.getRuntime().exec("su");
[align=left]              DataOutputStreamdos=newDataOutputStream(p.getOutputStream());[/align]
              dos.writeBytes("settings
put global airplane_mode_on 0\n");
[align=left]              dos.flush();[/align]
              dos.writeBytes("am
broadcast -a android.intent.action.AIRPLANE_MODE --ez state false\n");
[align=left]              dos.flush();[/align]
[align=left]              dos.close();[/align]
[align=left]              [/align]
          }catch(Exceptione)
{           
[align=left]          }[/align]
[align=left]     }[/align]
[align=left]
[/align]
[align=left]
[/align]
[align=left]权限[/align]
[align=left]   <uses-permissionandroid:name="android.permission.WRITE_SETTINGS"/>[/align]
[align=left]
[/align]
[align=left]一一一一一一一一一一一我是一条你看不见的分割线一一一一一一一一一[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android wi-fi 安卓 飞行