安卓WiFi基本使用

大家学习安卓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信息\n");
        sb.append("mac地址:"+wifiInfo.getMacAddress()+"\n");
        sb.append("接入点的BSSID:"+wifiInfo.getBSSID()+"\n");
        sb.append("IP地址(int):"+wifiInfo.getIpAddress()+"\n");
这些代码的作用是将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信息\n");
        sb.append("mac地址:"+wifiInfo.getMacAddress()+"\n");
        sb.append("接入点的BSSID:"+wifiInfo.getBSSID()+"\n");
        sb.append("IP地址(int):"+wifiInfo.getIpAddress()+"\n");
        tvWifiInfo.setText(sb);

    }
}


posted @ 2017-03-28 16:52  ithuangqing  阅读(163)  评论(0编辑  收藏  举报