大家学习安卓WiFi基本使用的时候首先应该请清楚什么是WiFi,在现在这个时代相信绝大多数人都接触过WiFi了 ,我们整天说WiFi可是WiFi到底是什么呢?很多人也许只知道有WiFi可以免费上网,这话没毛病,WiFi其实是一种允许电子设备连接到无线局域网(WLAN)的技术,基本上现在的手机,平板等很多电子设备都支持WiFi技术,我们在初次学习安卓WiFi的基本使用时,我们应该学会一下三个基本操作;
第一就是简单的可以打开WiFi热点,这个功能很简单就是我们添加一个按钮,点击之后会打开手机的WiFi开关。
第二就是打开WiFi热点之后进行对热点的关闭,跟打开WiFi的步骤差不多
第三就是会操作显示WiFi相关信息
首先我们来看第一个操作-----打开WiFi,顾名思义我们需要一个按钮,然后给这个按钮添加一个事件监听器,我们最想知道的就是通过什么代码可以控制手机WiFi的开关,其实很简单,在安卓中提供了一个wifiManager我们可以通过这个类来对WiFi进行相关的操作,然而打开WiFi的操作也只需要一个简短的代码就可以搞定,那就是
wifiManager.setWifiEnabled(true);这段代码的意思是打开WiFi,另外在进行安卓WiFi操作的时候我们需要申请一些WiFi相关的操作,有以下操作权限需要申请
<uses-permission android:name="android.permission.CHANGE_WIFI_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.ACCESS_NETWORK_STATE"/>具体的打开WiFi的示例代码如下
btOpenWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wifiManager.setWifiEnabled(true);
}
});
这应该不难理解,就是对一个按钮添加了一个事件监听器,我觉得有些人看到这里就应该知道第二步关闭WiFi的操作了,大家可以分析这句代码wifiManager.setWifiEnabled(true);参数的类型是布尔型,当为真的时候是打开WiFi,相应的关闭WiFi的时候就是为假了如下代码
btCloseWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wifiManager.setWifiEnabled(false);
}
});
到这里我们基本上知道如何打开和关闭手机WiFi了,下一步就是需要我们去获取WiFi的一些相关信息了,这一块需要使用到这个类叫wifiinfo,在我们的WiFi已经连同了之后,
可以通过这个类获得一些已经连同的WiFi连接的信息,获取当前连接的信息,这里信息比较简单,这里简单介绍一下其中的几个方法
getBSSID()获取BSSID
getDetailedStateOf() 获取客户端的连通性
getHiddenSSID() 获得SSID 是否被隐藏
getIpAddress() 获取IP 地址
getLinkSpeed() 获得连接的速度
getMacAddress() 获得Mac 地址
getRssi() 获得802.11n 网络的信号
getSSID() 获得SSID
getSupplicanState() 返回具体客户端状态的信息
那么我们该如何使用呢,让我们一步一步来F分析,首先我们要获取WiFi的相关信息,这个信息肯定是要给人看的,是要展示出去的,所以我们需要一
显示WiFi信息的媒介,当然是用一个textview来解决了,接下来让我们看一下下面的代码
TextView tvWifiInfo = (TextView)findViewById(R.id.tvWifiInfo);
StringBuffer sb = new StringBuffer();
sb.append("wifi信息
");
sb.append("mac地址:"+wifiInfo.getMacAddress()+"
");
sb.append("接入点的BSSID:"+wifiInfo.getBSSID()+"
");
sb.append("IP地址(int):"+wifiInfo.getIpAddress()+"
");
这些代码的作用是将WiFi的相关信息输入到缓冲区,然后通过settext的方法赋值, 效果图如下
完整的代码如下
public class MainActivity extends AppCompatActivity {
private Button btOpenWifi;
private Button btCloseWifi;
private WifiManager wifiManager;
private WifiInfo wifiInfo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
//获得连接信息对象
wifiInfo = wifiManager.getConnectionInfo();
btOpenWifi = (Button)findViewById(R.id.btOpenWifi);
btOpenWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wifiManager.setWifiEnabled(true);
}
});
btCloseWifi = (Button)findViewById(R.id.btCloseWifi);
btCloseWifi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wifiManager.setWifiEnabled(false);
}
});
TextView tvWifiInfo = (TextView)findViewById(R.id.tvWifiInfo);
StringBuffer sb = new StringBuffer();
sb.append("wifi信息
");
sb.append("mac地址:"+wifiInfo.getMacAddress()+"
");
sb.append("接入点的BSSID:"+wifiInfo.getBSSID()+"
");
sb.append("IP地址(int):"+wifiInfo.getIpAddress()+"
");
tvWifiInfo.setText(sb);
}
}