在androi中WIFI信息的获取能够通过系统提供的WIFI Service获取

[java] 
WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE); 
WifiInfo    wifiInfo     = wifi_service.getConnectionInfo();

当中WifiInfo 中比較经常使用的信息有:
[java] 
 /*
   info.getBSSID();      获取BSSID地址。
   info.getSSID();       获取SSID地址。

须要连接网络的ID
   info.getIpAddress();  获取IP地址。4字节Int, XXX.XXX.XXX.XXX 每一个XXX为一个字节
   info.getMacAddress(); 获取MAC地址。

info.getNetworkId()。  获取网络ID。
   info.getLinkSpeed();  获取连接速度。能够让用户获知这一信息。
   info.getRssi();       获取RSSI,RSSI就是接受信号强度指示
*/

同一时候能够通过接收系统的广播,获取当前WIFI的状态
[java]
 /*
   WifiManager.WIFI_STATE_DISABLING   正在停止
   WifiManager.WIFI_STATE_DISABLED    已停止
   WifiManager.WIFI_STATE_ENABLING    正在打开
   WifiManager.WIFI_STATE_ENABLED     已开启
   WifiManager.WIFI_STATE_UNKNOWN     未知
*/

下面给出详细的实例:
1.在布局文件里添加一个WIFI图标,和显示详细信息的文本  (activity_wifi_example.xml)
[html] 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"  
    android:gravity="center" 
    android:orientation="vertical"> 
 
    <ImageButton 
        android:id="@+id/Icon_WifiStatus" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/ic_wifi"/> 
     
    <TextView 
        android:id="@+id/Label_WifiDetail" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:maxWidth="320dp"/> 
 
</LinearLayout>

2. 为WIFI图标加入一组可选的图标,在drawable-hdpi文件夹下添加ic_wifi.xml文件,内容例如以下:
[html] view plaincopy
<level-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:maxLevel="0"   android:drawable="@drawable/ic_wifi_s0" /> 
    <item android:maxLevel="50"  android:drawable="@drawable/ic_wifi_s3" /> 
    <item android:maxLevel="70"  android:drawable="@drawable/ic_wifi_s2" /> 
    <item android:maxLevel="100" android:drawable="@drawable/ic_wifi_s1" /> 
</level-list> 
注意须要导入用到的图片

3.在代码中接收WIFI状态广播,开启一个500ms的Timer实时查询WIFI状态 (WifiExample.java)

[java] 
package com.example.wifiexample; 
 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.WifiInfo; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.os.Handler; 
import android.util.Log; 
import android.view.Menu; 
import android.widget.ImageButton; 
import android.widget.TextView; 
 
public class WifiExample extends Activity { 
 
    private final String TAG = "WifiExample"; 
     
    private IntentFilter      mWifiIntentFilter; 
    private BroadcastReceiver mWifiIntentReceiver; 
     
    private ImageButton       mIconWifi; 
    private TextView          mLabelWifi; 
    private Handler           mHandler; 
     
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_wifi_example); 
         
        mIconWifi  = (ImageButton)findViewById(R.id.Icon_WifiStatus); 
        mLabelWifi = (TextView)findViewById(R.id.Label_WifiDetail);  
                 
        mWifiIntentFilter = new IntentFilter(); 
        mWifiIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 
         
        mWifiIntentReceiver = new mWifiIntentReceiver(); 
        registerReceiver(mWifiIntentReceiver, mWifiIntentFilter); 
         
        mHandler = new Handler(); 
        mHandler.post(new TimerProcess()); 
    } 
 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        getMenuInflater().inflate(R.menu.activity_wifi_example, menu); 
        return true; 
    } 
     
    private class TimerProcess implements Runnable{ 
        public void run() { 
            showWIFIDetail(); 
            mHandler.postDelayed(this, 500); 
        } 
    } 
     
    public void showWIFIDetail() 
    { 
        WifiInfo info = ((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo(); 
        mIconWifi.setImageLevel(Math.abs(info.getRssi())); 
         
        /*
        info.getBSSID();      获取BSSID地址。
        info.getSSID();       获取SSID地址。  须要连接网络的ID
        info.getIpAddress();  获取IP地址。4字节Int, XXX.XXX.XXX.XXX 每一个XXX为一个字节
        info.getMacAddress(); 获取MAC地址。
        info.getNetworkId();  获取网络ID。
        info.getLinkSpeed()。  获取连接速度。能够让用户获知这一信息。
        info.getRssi();       获取RSSI,RSSI就是接受信号强度指示
         */ 
         
        int Ip = info.getIpAddress(); 
        String strIp = "" + (Ip & 0xFF) + "." + ((Ip >> 8) & 0xFF) + "." + ((Ip >> 16) & 0xFF) + "." + ((Ip >> 24) & 0xFF); 
         
        mLabelWifi.setText("BSSID : " + info.getBSSID() + "\nSSID : " + info.getSSID() +  
                "\nIpAddress : " + strIp + "\nMacAddress : " + info.getMacAddress() + 
                "\nNetworkId : " + info.getNetworkId() + "\nLinkSpeed : " + info.getLinkSpeed() + "Mbps" +  
                "\nRssi : " + info.getRssi()); 
        info.getIpAddress(); 
    } 
     
    private class mWifiIntentReceiver extends BroadcastReceiver{ 
 
        public void onReceive(Context context, Intent intent) { 
 
            WifiInfo info = ((WifiManager)getSystemService(WIFI_SERVICE)).getConnectionInfo(); 
            mIconWifi.setImageLevel(Math.abs(info.getRssi())); 
         
            /*
            WifiManager.WIFI_STATE_DISABLING   正在停止
            WifiManager.WIFI_STATE_DISABLED    已停止
            WifiManager.WIFI_STATE_ENABLING    正在打开
            WifiManager.WIFI_STATE_ENABLED     已开启
            WifiManager.WIFI_STATE_UNKNOWN     未知
             */ 
             
            switch (intent.getIntExtra("wifi_state", 0)) { 
            case WifiManager.WIFI_STATE_DISABLING: 
                Log.d(TAG, "WIFI STATUS : WIFI_STATE_DISABLING"); 
                break; 
            case WifiManager.WIFI_STATE_DISABLED: 
                Log.d(TAG, "WIFI STATUS : WIFI_STATE_DISABLED"); 
                break; 
            case WifiManager.WIFI_STATE_ENABLING: 
                Log.d(TAG, "WIFI STATUS : WIFI_STATE_ENABLING"); 
                break; 
            case WifiManager.WIFI_STATE_ENABLED: 
                Log.d(TAG, "WIFI STATUS : WIFI_STATE_ENABLED"); 
                break; 
            case WifiManager.WIFI_STATE_UNKNOWN: 
                Log.d(TAG, "WIFI STATUS : WIFI_STATE_UNKNOWN"); 
                break; 
        } 
    } 
    } 
}

4.最后在AndroidManifest.xml添加获取WIFI权限的支持
[html] 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

转载于:https://www.cnblogs.com/wzjhoutai/p/6867120.html

android WIFI信息获取相关推荐

  1. Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息

    一.怎样获取wifi对象并进行操作 ================= 要操作 WIFI 设备,需要先获取  Context.getSystemService(Context.WIFI_SERVICE ...

  2. android wifi 信息

    在androi中WIFI信息的获取可以通过系统提供的WIFI Service获取 WifiManager wifi_service = (WifiManager)getSystemService(WI ...

  3. Android Gnss信息获取 绘制卫星图

    Android GNSS基本信息获取 Android 中GNSS为GPS定位中包含的原始定位信息,主要包含三个接口(api >= 24),提供不同信息: // GNSS处理后信息,包含一些常用信 ...

  4. Android屏幕信息获取

    Android中有时需要获取屏幕的size信息以便对控件位置进行动态控制,最近做了一些研究,现在将获取屏幕大小信息的方法总结如下,可能存在一些地方理解的不全面. 1.getMetrics Java代码 ...

  5. android获取到电信的手机号码,Android基站信息获取以及Sim卡相关信息获取

    概述: 本篇主要介绍Android获取基站信息的方式,除此之外,还有SIM卡相关字段获取,先介绍一些缩写的概念,后续更新代码的写法. 前言:之前有碰到一个需求,需要获取SIM卡的相关属性:IMSI号. ...

  6. android日历信息获取错误,flutter对android的日历数据相关操作

    系统日历 三个不同URL的作用 每个url通过contentProvider能获得对应数据库的访问句柄,所以可以理解三个url对应三个数据库,如果通过一个事件关联3个库呢,下面会详细介绍. 数据库介绍 ...

  7. Android设备信息获取

    近个多月之前整理的,记录,共享. 1)android 获取设备型号.OS版本号: import android.os.Build; // ..... Build bd = new Build(); S ...

  8. Android多媒体信息获取

    Android多媒体涉及视频.音频.图片,首先有几个概念: 1.Android中所有的多媒体文件除了存储在物理硬盘上,还会将文件信息(路径.id.类型.)保存到数据库中,这样当我们想要获取这些文件的信 ...

  9. android wifi热点广播,在Android wifi热点获取wifi广播地址

    MP23.. 13 首先,您可以检查您的IP地址: public InetAddress getIpAddress() { InetAddress inetAddress = null; InetAd ...

最新文章

  1. Oracle执行exists优化,PHP_解决Oracle性能优化中的问题, 在Oracle性能优化时,用exists - phpStudy...
  2. 元计算:《元计算破解生命密码》听课笔记
  3. IOS - 快速入门
  4. 转录组分析综述A survey of best practices for RNA-seq data analysis
  5. Objective-C 2.0 with Cocoa Foundation--- 9,内存管理
  6. 在 Vue 中是使用插槽
  7. 省市区三级联动 mysql_省市区三级联动实现
  8. 萤火虫小程序_实测!成都人私藏的免费耍水地,抓螃蟹、烤烧烤、赏萤火虫,周末一天来回!...
  9. 115网盘正式版评测
  10. 彩色西装 来一整套·都市周报
  11. 《深度学习:21 天实战 Caffe》资源已上传至码云、github
  12. QQ、微博、陌陌:社交难逃社交命
  13. 微信广告转化统计java,百度推广oCPC微信号复制转化次数统计系统数据接口
  14. 使用itextpdf实现横板PDF文件与竖版PDF文件的相互转换
  15. 牛客练习赛87 B k小数查询(STL)
  16. C语言实现简单扫雷游戏
  17. 计算机学院品牌活动,47个CCF学生分会线上热议:如何组织品牌活动
  18. 基于jsp的职工年终考核分数计算
  19. ai人工智能相关职业_2020年及以后的5个人工智能最佳职业
  20. Shell 打印空行的行号/去掉空行

热门文章

  1. 《Python程序设计》教学大纲
  2. Nmap经常使用的场景用法
  3. centos6.4安装使用wine 持续更新中
  4. python大杀器之requests安装
  5. makemoney 秘密
  6. 在mac中导入hadoop2.6.0源代码至eclipse
  7. 把十进制转化为二进制的一种方法
  8. 剑指offer 数值的整次方
  9. Apache Iceberg 快速入门
  10. 是时候理解下HTTPS及背后的加密原理了