Android学习笔记之——获取WIFI的RSSI以及名称

本博文为本人学习Android开发以来第一次实例编写。点击一个按钮,获取当前的wifi名称以及接受的信号强度。

 

目录

代码

定义界面

mainactivity

需要的权限

效果

参考资料


 

代码

首先创建一个工程文件命名为WifiTest

定义界面





    

mainactivity

package com.example.wifitest;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    String wifi_name;
    int wifi_rssi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //定义按键实例
        Button button1=(Button) findViewById(R.id.wifi_rssi);
        //定义按钮点击事件
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //在此处定义获取WIFI的信号与名称,然后通过Toast显示出来
                WifiManager wifiManager= (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);//获取wifi服务
                assert wifiManager != null;
                WifiInfo wifiInfo=wifiManager.getConnectionInfo();
                wifi_name=wifiInfo.getSSID();

                //华为手机解决
                int networkID=wifiInfo.getNetworkId();
                List configuredNetworks = wifiManager.getConfiguredNetworks();
                for (WifiConfiguration wifiConfiguration:configuredNetworks){
                    if (wifiConfiguration.networkId==networkID){
                        wifi_name=wifiConfiguration.SSID;
                        break;
                    }
                }

//                //8.0之后,再这样获取,拿到的就是了
//                ConnectivityManager ctm = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
//                NetworkInfo networkInfo = ctm.getActiveNetworkInfo();
//                String wifi_name = networkInfo.getExtraInfo();


                wifi_rssi=wifiInfo.getRssi();
                Log.d("wifiInfo", wifiInfo.toString());
                Log.d("SSID",wifiInfo.getSSID());
                //通过Toast输出
                Toast.makeText(MainActivity.this, "rssi:"+wifi_rssi+"---wifiId:"+wifi_name,Toast.LENGTH_SHORT).show();
            }
        });
    }

    //***********定义一系列函数************
//    //获取wifi的名称
//    private String getConnectWifiSsid() {
//        WifiManager wifiManager= (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);//获取wifi服务
//        WifiInfo wifiInfo=wifiManager.getConnectionInfo();
//    }

}

 

需要的权限

获取WIFI信息状态的权限

获取网络状态改变的权限




    
    
    
    


    
        
            
                

                
            
        
    

效果

Android学习笔记之——获取WIFI的RSSI以及名称_第1张图片

 

参考资料

https://mp.weixin.qq.com/s?__biz=MzIzMzk1MzMxMA==&mid=100000021&idx=1&sn=8be982e2e209af5ac5936ea3cd48d6e1&chksm=68fc80645f8b0972d31952efe9672194322d0e1fa04db657e0bcfa2cb3fdf26c721a36112f23&mpshare=1&scene=1&srcid=&sharer_sharetime=1588991015172&sharer_shareid=a02329314a01e92e427ef82703762420&key=f01754a5c69cbc04e24e431562058769dd9b63f70372315077ccf99e09b6859f0d389fdfa1be90f25e32db5b09428952f4e5ccec2f6154e9c1e41f06d13d0cf4b1965c46a35644be91281fe574bd3f0f&ascene=1&uin=MTIxMjY0NjM2Mw%3D%3D&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&exportkey=A84BktrA9FlsDV8LC0kEbfc%3D&pass_ticket=bTX3SpfctiytmpVhJjPbQDkQlYp%2BLiI8P7FMq1Fqsmx61bpTqomwXOY%2BU4Fy%2BcWA

 

 

你可能感兴趣的:(Android)