修改时间:2022/9/5
案例中是主动向安卓系统获取wifi信号强度,正常情况下是通过监听广播的方式来被动获取,看自己三年前写的代码还是挺好笑的,看到好多问题,再不改就误人子弟了,所以改了改。

  1. 给权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
  1. 获得WifiManager对象
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
  1. 通过WifiManager对象获得wifi信息
WifiInfo info = wm.getConnectionInfo();
  1. 通过WifiInfo获得wifi信息
//通过wifi管理对象获得wifi信息
WifiInfo info = wm.getConnectionInfo();
//获取wifi名称
String ssid = info.getSSID().replace("\"", "");
//获取mac地址
String MacAddr = info.getMacAddress();
//获取当前连接速度
int linkSpeed = info.getLinkSpeed();
//获取ip地址
int ipAddr = info.getIpAddress();
......

案例xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:padding="20dp"tools:context=".MainActivity"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="SSID:"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/wifiSSID"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/textView1"android:text="-"android:textColor="@android:color/black"android:textSize="30sp" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="信号强度"android:layout_below="@id/textView1"android:textColor="@android:color/black"android:textSize="30sp" /><ImageViewandroid:id="@+id/ivWifi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView2"android:background="@drawable/wifi1"/></RelativeLayout>

案例代码

public class MainActivity extends Activity {private WifiManager wm;private TextView wifiSSID;private ImageView ivWifi;//用于控制线程的停止标志位private boolean runFlag = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();initWifi();}private void initView() {wifiSSID = findViewById(R.id.wifiSSID);ivWifi = findViewById(R.id.ivWifi);}//使用Handler时应考虑内存泄漏问题private static Handler mHandler = new Handler(Looper.getMainLooper()) {@Overridepublic void handleMessage(@NonNull Message msg) {switch (msg.what) {case 1:wifiSSID.setText(msg.obj.toString());if (msg.arg1 <= 50) {ivWifi.setBackgroundResource(R.drawable.wifi4);} else if (msg.arg1 <= 70) {ivWifi.setBackgroundResource(R.drawable.wifi3);} else if (msg.arg1 <= 100) {ivWifi.setBackgroundResource(R.drawable.wifi2);}break;case 2:wifiSSID.setText("-");ivWifi.setBackgroundResource(R.drawable.wifi1);break;}}};private void initWifi() {runFlag = true;Thread thread = new Thread() {@Overridepublic void run() {while (runFlag) {try {sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//拿到wifi管理对象wm = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);if (wm.isWifiEnabled()) {//通过wifi管理对象获得wifi信息WifiInfo info = wm.getConnectionInfo();//获取wifi名称String ssid = info.getSSID().replace("\"", "");//获取mac地址String MacAddr = info.getMacAddress();//获取当前连接速度int linkSpeed = info.getLinkSpeed();//获取ip地址int ipAddr = info.getIpAddress();Message msg = Message.obtain();msg.what = 1;msg.obj = ssid;/*** getRssi()返回的是一个-100到0的数,直接取绝对值*  -50到0表示信号好* -50到-70表示信号一般*  -70到-100表示信号差*/msg.arg1 = Math.abs(info.getRssi());handler.sendMessage(msg);} else {Message msg = Message.obtain();msg.what = 2;handler.sendMessage(msg);}}}};thread.start();}@Overrideprotected void onDestroy() {super.onDestroy();//停止线程runFlag = false;//移除所有任务和消息mHandler.removeCallbacksAndMessages(null);}
}

获取wifi当前手机连接的wifi信息以及信号强度相关推荐

  1. android扫描隐藏wifi,安卓手机连接隐藏wifi 安卓连接隐藏wifi密码-192路由网

    安卓手机怎么连接隐藏wifi信号?近期有用户向小编咨询这个问题.下面小编用一部华为的荣耀3C手机为例,来给大家演示.介绍安卓手机连接隐藏wifi的操作方法.这里小编要提前说明一下,由于手机运行的安卓版 ...

  2. android 获取wifi信号强度,获取wifi当前手机连接的wifi信息以及信号强度

    1.获得WifiManager对象WifiManager wm = (WifiManager) getApplicationContext().getSystemService(Context.WIF ...

  3. 手机连上无线却手机不显示连接服务器,手机连接上wifi却上不了网该怎么处理...

    为什么手机连接上wifi却上不了网?有不少朋友都遇到过这个的问题,即手机能够搜索到wifi信号,而且也能够连接到wifi信号,但是就是不能够上网.出现这样的情况,多半是无线路由器设置有问题导致的.下面 ...

  4. ESP8266(基于arduino平台)每篇一个知识点—1.wifi STA模式连接指定wifi

    ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wifi 一.ESP8266(基于arduino平台)每篇一个知识点--1.wifi STA模式连接指定wif ...

  5. 计算机怎么添加隐藏的网络,win10怎么添加隐藏wifi?电脑连接隐藏wifi方法

    原标题:win10怎么添加隐藏wifi?电脑连接隐藏wifi方法 为了wifi的安全,有些用户将无线路由器的wifi设置为隐藏.如果需要连接,则需要自己手动追加,但是很多windows10系统用户不知 ...

  6. 解决电脑联网后,电脑使用网络手机就用不了WIFI,手机联了WIFI电脑就用不了网络的问题

    今天突然发现,电脑联网后,电脑使用网络手机就用不了WIFI,手机联了WIFI电脑就用不了网络,只能二选一.在网上也找不到解决办法,自己摸索后发现电脑更新了,试着卸载更新后发现问题成功解决! 1.首先先 ...

  7. 手机连接电脑wifi上网_手机设置无线路由器方法教你一分钟学会WIFI上网(无需电脑)...

    本文现场演示:TP-LINK WDR5630双频无线路由器 第一步:无线路由器插电后WLAN口网线连接光猫(黄色网线)的LAN口 第二步:手机连接TP-LINK_DF58(路由器出厂有WIFI,但默认 ...

  8. android 获取wifi的加密类型,Android WIFI开发:获取wifi列表,连接指定wifi,获取wifi加密方式,监听wifi网络变化等...

    下面是 Android 开发中 WiFi 的常用配置,如:获取当前 WiFi ,扫描 WiFi 获取列表,连接指定 WiFi ,监听网络变化等等. 下面是效果图: GitHub 下载地址:https: ...

  9. 红米手机连接小米wifi显示已连接服务器,小米(红米)无线路由器192.168.31.1手机登录设置教程...

    192.168.31.1是小米(红米)路由器的管理后台IP地址,在没有电脑的情况下,我们可以用手机来设置路由器上网.下面小编给大家整理的一些有关192.168.31.1用手机登录设置上网教程,希望对大 ...

最新文章

  1. CART树 python小样例
  2. 【最佳实践】如何通过OSS的Bucket Policy设置访问授权?
  3. Liunx——校准时间、时间同步(ntpd、ntpdate)
  4. Kotlin AAPT: error: resource android:attr/lStar not found.
  5. TCP/IP模型如何分层?路由器、网卡分别属于哪一层?
  6. 用 Python 分析今年考研形势
  7. php 获取用户名,php 获取Feedburner的用户名示例
  8. 部署ftp文件共享服务
  9. 软件设计师考试内容纲要
  10. Android控件之HorizontalScrollView 去掉滚动条
  11. java mvc接收json_java相关:SpringMVC中controller接收json数据的方法
  12. XenCenter 创建 New VM
  13. 3D 目标检测综述梳理图解
  14. Windows Server 2008安装nodejs
  15. 通过浏览器geolocation属性获取经度和纬度(1)
  16. 沈阳python没有工作经验,沈阳python初级程序员培训班学费(python学历低可以学吗)...
  17. systemd man手册
  18. Cache简介(一)
  19. 融云聊天室属性 kv
  20. 使用git控制word版本

热门文章

  1. 邢台比较好的计算机学校,谁知道邢台哪所计算机学校好啊
  2. Meta AI发布具有200种语言的高品质机器翻译人工智能模型
  3. [Python数据分析] 6-挖掘建模(无监督学习)
  4. 请求转发(Forward)和重定向(Redirect)
  5. gb和gib的区别_gb和gib的区别_KB / KiB,MB / MiB,GB / GiB,… 的区别是什么?
  6. 3. SpringSecurity 自定义手机号登录
  7. 404单页带时间访问一次自动更换壁纸
  8. No.77-HackTheBox-windows-Access-Walkthrough渗透学习
  9. eclipse rcp
  10. 338. 比特位计数