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

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

目录

代码

定义界面

mainactivity

需要的权限

效果

参考资料


代码

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

定义界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <Button
        android:id="@+id/wifi_rssi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="WiFi RSSI"
        android:textAllCaps="false"
        />


</LinearLayout>

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<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();
                for (WifiConfiguration wifiConfiguration:configuredNetworks){
                    if (wifiConfiguration.networkId==networkID){
                        wifi_name=wifiConfiguration.SSID;
                        break;
                    }
                }

//                //8.0之后,再这样获取,拿到的就是<unknown ssid>了
//                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信息状态的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

获取网络状态改变的权限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.wifitest">

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

效果

参考资料

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

猜你喜欢

转载自blog.csdn.net/gwplovekimi/article/details/106011814