读书人

android的WIFI联接lt;转gt

发布时间: 2013-08-04 18:26:16 作者: rapoo

android的WIFI连接<转>

??????? WIFI就是一种无线联网技术,常见的是使用无线路由器。那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网。如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为“热点”。

??????? 在Android中对Wifi操作,android本身提供了一些有用的包,在android.net.wifi包下面。主要包括以下几个类和接口:

1.ScanResult

??????? 主要用来描述已经检测出的接入点,包括接入点的地址,接入点的名称,身份认证,频率,信号强度等信息。

2.WifiConfiguration

??????? Wifi网络的配置,包括安全设置等。

3.WifiInfo

??????? wifi无线连接的描述,包括接入点,网络连接状态,隐藏的接入点,IP地址,连接速度,MAC地址,网络ID,信号强度等信息。这里简单介绍一下这里的方法:

?????? getBSSID() 获取BSSID

?????? getDetailedStateOf() 获取客户端的连通性

?????? getHiddenSSID() 获得SSID 是否被隐藏

?????? getIpAddress() 获取IP 地址

?????? getLinkSpeed() 获得连接的速度

?????? getMacAddress() 获得Mac 地址

?????? getRssi() 获得802.11n 网络的信号

?????? getSSID() 获得SSID

?????? getSupplicanState() 返回具体客户端状态的信息

4.WifiManager

?????? 这个不用说,就是用来管理我们的wifi 连接,这里已经定义好了一些类,可以供我们使用。

? 获取WIFI网卡的状态
  WIFI网卡的状态是由一系列的整形常量来表示的。
  1.WIFI_STATE_DISABLED : WIFI网卡不可用(1)
  2.WIFI_STATE_DISABLING : WIFI网卡正在关闭(0)
  3.WIFI_STATE_ENABLED : WIFI网卡可用(3)
  4.WIFI_STATE_ENABLING : WIFI网正在打开(2) (WIFI启动需要一段时间)

  5.WIFI_STATE_UNKNOWN? : 未知网卡状态

?? 下面先写一个wifi的实例:

WifiActivity.java

public class WifiActivity extends Activity {/** Called when the activity is first created. */private TextView allNetWork;private Button scan;private Button start;private Button stop;private Button check;private WifiAdmin mWifiAdmin;// 扫描结果列表private List<ScanResult> list;private ScanResult mScanResult;private StringBuffer sb=new StringBuffer();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);mWifiAdmin = new WifiAdmin(WifiActivity.this);init();}public void init(){allNetWork = (TextView) findViewById(R.id.allNetWork);scan = (Button) findViewById(R.id.scan);start = (Button) findViewById(R.id.start);stop = (Button) findViewById(R.id.stop);check = (Button) findViewById(R.id.check);scan.setOnClickListener(new MyListener());start.setOnClickListener(new MyListener());stop.setOnClickListener(new MyListener());check.setOnClickListener(new MyListener());}private class MyListener implements OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.scan://扫描网络getAllNetWorkList();break;case R.id.start://打开WifimWifiAdmin.openWifi();Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();break;case R.id.stop://关闭WifimWifiAdmin.closeWifi();Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();break;case R.id.check://Wifi状态Toast.makeText(WifiActivity.this, "当前wifi状态为:"+mWifiAdmin.checkState(), 1).show();break;default:break;}}}public void getAllNetWorkList(){// 每次点击扫描之前清空上一次的扫描结果if(sb!=null){sb=new StringBuffer();}//开始扫描网络mWifiAdmin.startScan();list=mWifiAdmin.getWifiList();if(list!=null){for(int i=0;i<list.size();i++){//得到扫描结果mScanResult=list.get(i);sb=sb.append(mScanResult.BSSID+"  ").append(mScanResult.SSID+"   ").append(mScanResult.capabilities+"   ").append(mScanResult.frequency+"   ").append(mScanResult.level+"\n\n");}allNetWork.setText("扫描到的wifi网络:\n"+sb.toString());}}}

?WifiAdmin.java

public class WifiAdmin {//定义一个WifiManager对象private WifiManager mWifiManager;//定义一个WifiInfo对象private WifiInfo mWifiInfo;//扫描出的网络连接列表,实现Parcelable接口,//ScanResult里面放的全是wifi信息private List<ScanResult> mWifiList;//网络连接列表private List<WifiConfiguration> mWifiConfigurations;WifiLock mWifiLock;//构造函数public WifiAdmin(Context context){//取得WifiManager对象mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);//取得WifiInfo对象mWifiInfo = mWifiManager.getConnectionInfo();}//打开wifipublic void openWifi(){if(!mWifiManager.isWifiEnabled()){mWifiManager.setWifiEnabled(true);}}//关闭wifipublic void closeWifi(){if(mWifiManager.isWifiEnabled()){mWifiManager.setWifiEnabled(false);}}// 检查当前wifi状态public int checkState() {return mWifiManager.getWifiState();}//锁定wifiLockpublic void acquireWifiLock(){mWifiLock.acquire();}//解锁wifiLockpublic void releaseWifiLock(){//判断是否锁定if(mWifiLock.isHeld()){mWifiLock.acquire();}}//创建一个wifiLockpublic void createWifiLock(){mWifiLock = mWifiManager.createWifiLock("test");}//得到配置好的网络public List<WifiConfiguration> getConfiguration(){return mWifiConfigurations;}//指定配置好的网络进行连接public void connetionConfiguration(int index){if(index > mWifiConfigurations.size()){return ;}//连接配置好指定ID的网络mWifiManager.enableNetwork(mWifiConfigurations.get(index).networkId, true);}public void startScan(){mWifiManager.startScan();//得到扫描结果mWifiList = mWifiManager.getScanResults();//得到配置好的网络连接mWifiConfigurations = mWifiManager.getConfiguredNetworks();}//得到网络列表public List<ScanResult> getWifiList(){return mWifiList;}//查看扫描结果public StringBuffer lookUpScan(){StringBuffer sb = new StringBuffer();for(int i=0; i<mWifiList.size(); i++){sb.append("Index_" + new Integer(i + 1).toString() + ":");// 将ScanResult信息转换成一个字符串包// 其中把包括:BSSID、SSID、capabilities、frequency、levelsb.append((mWifiList.get(i)).toString()).append("\n");}return sb;}public String getMacAddress(){return (mWifiInfo==null)?"NULL":mWifiInfo.getMacAddress();}public String getBSSID(){return (mWifiInfo==null)?"NULL":mWifiInfo.getBSSID();}public int getIpAddress(){return (mWifiInfo==null)?0:mWifiInfo.getIpAddress();}//得到连接的IDpublic int getNetWordId(){return (mWifiInfo==null)?0:mWifiInfo.getNetworkId();}//得到wifiInfo的所有信息public String getWifiInfo(){return (mWifiInfo==null)?"NULL":mWifiInfo.toString();}//添加一个网络并连接public void addNetWork(WifiConfiguration configuration){int wcgId=mWifiManager.addNetwork(configuration);mWifiManager.enableNetwork(wcgId, true);}//断开指定ID的网络public void disConnectionWifi(int netId){mWifiManager.disableNetwork(netId);mWifiManager.disconnect();}}

?

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <uses-permission android:name="android.permission.WAKE_LOCK"/>

?
android的WIFI联接<转&gt
?

读书人网 >Android

热点推荐