当前位置: 移动技术网 > IT编程>移动开发>Android > Android 控制wifi 相关操作实例

Android 控制wifi 相关操作实例

2019年07月24日  | 移动技术网IT编程  | 我要评论

女艾滋病的早期症状,运动会开幕式致辞,不知火舞外星人

android 控制wifi相关操作

wifi的全称是wireless fidelity,又称802.11b标准,是一种高速的无线通信协议,传输速度可以达到11mb/s。

实际上,对wifi并不需要过多的控制(当成功连接wifi后,就可以直接通过ip在wifi设备之间进行通信了),一般只需要控制打开或关闭wifi以及获得一些与wifi相关的信息(例如,mac地址、ip等)。

如果读者的android手机有wifi功能,可以在手机上测试本节的例子。要注意的是,wifi功能不能在android模拟器上测试,就算在有wifi功能的真机上也需要先通过wifi和计算机或其他wifi设备连接后,才能获得与wifi相关的信息。

本节的例子可以关闭和开始wifi,并获得各种与wifi相关的信息。首先确认手机通过wifi与其他wifi设备成功连接,然后运行

本节的例子,会看到如图所示的输出信息。

本例的完整实现代码如下:

package eoe.demo.wifi; 
 
import java.net.inet4address; 
import java.util.list; 
import android.app.activity; 
import android.content.context; 
import android.net.wifi.wificonfiguration; 
import android.net.wifi.wifiinfo; 
import android.net.wifi.wifimanager; 
import android.os.bundle; 
import android.widget.checkbox; 
import android.widget.compoundbutton; 
import android.widget.textview; 
import android.widget.compoundbutton.oncheckedchangelistener; 
 
public class main extends activity implements oncheckedchangelistener { 
private wifimanager wifimanager; 
private wifiinfo wifiinfo; 
private checkbox chkopenclosewifibox; 
private list<wificonfiguration> wificonfigurations; 
@override 
public void oncreate(bundle savedinstancestate) { 
super.oncreate(savedinstancestate); 
setcontentview(r.layout.main); 
// 获得wifimanager对象 
wifimanager = (wifimanager) getsystemservice(context.wifi_service); 
// 获得连接信息对象 
wifiinfo = wifimanager.getconnectioninfo(); 
chkopenclosewifibox = (checkbox) findviewbyid(r.id.chkopenclosewifi); 
textview tvwificonfigurations = (textview) findviewbyid(r.id.tvwificonfigurations); 
textview tvwifiinfo = (textview) findviewbyid(r.id.tvwifiinfo); chkopenclosewifibox.setoncheckedchangelistener(this); 
// 根据当前wifi的状态(是否被打开)设置复选框的选中状态 
if (wifimanager.iswifienabled()) { 
chkopenclosewifibox.settext("wifi已开启"); 
chkopenclosewifibox.setchecked(true); 
} else { 
chkopenclosewifibox.settext("wifi已关闭"); 
chkopenclosewifibox.setchecked(false); 
} 
// 获得wifi信息 
stringbuffer sb = new stringbuffer(); 
sb.append("wifi信息\n"); 
sb.append("mac地址:" + wifiinfo.getmacaddress() + "\n"); 
sb.append("接入点的bssid:" + wifiinfo.getbssid() + "\n"); 
sb.append("ip地址(int):" + wifiinfo.getipaddress() + "\n"); 
sb.append("ip地址(hex):" + integer.tohexstring(wifiinfo.getipaddress()) + "\n"); sb.append("ip地址:" + ipinttostring(wifiinfo.getipaddress()) + "\n"); 
sb.append("网络id:" + wifiinfo.getnetworkid() + "\n"); 
tvwifiinfo.settext(sb.tostring()); 
// 得到配置好的网络 
wificonfigurations = wifimanager.getconfigurednetworks(); 
tvwificonfigurations.settext("已连接的无线网络\n"); 
for (wificonfiguration wificonfiguration : wificonfigurations) { 
tvwificonfigurations.settext(tvwificonfigurations.gettext() + wificonfiguration.ssid + "\n"); 
} 
} 
// 将int类型的ip转换成字符串形式的ip 
private 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 ""; 
} 
} 
 
@override 
public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { 
// 当选中复选框时打开wifi 
if (ischecked) { 
wifimanager.setwifienabled(true); 
chkopenclosewifibox.settext("wifi已开启"); 
} 
// 当取消复选框选中状态时关闭wifi 
else { 
wifimanager.setwifienabled(false); 
chkopenclosewifibox.settext("wifi已关闭"); 
} 
} 
 
} 

 

在androidmanifest.xml文件中要使用如下的代码打开相应的权限。

xml/html代码
<uses-permission android:name="android.permission.access_wifi_state"> 
</uses-permission> 
<uses-permission android:name="android.permission.wake_lock"> 
</uses-permission> 
<uses-permission android:name="android.permission.change_wifi_state"> 
</uses-permission> 

以上就是对android wifi 简单实例的源码,在做android开发wifi 模块的朋友可以参考下。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网