在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"/>

android WIFI信息获取的更多相关文章

  1. Android屏幕信息获取

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

  2. Android电池信息获取

    Android 可以通过BroadcastReceiver来获取电池信息改变的广播(ACTION_BATTERY_CHANGED),从而获取到相关的电池信息. 电池信息,及其对应的相关常数(参考网址: ...

  3. android sdcard信息获取

    手机存储都有两种,一种是 手机自带的存储,称为internal storage,另外一种用户额外插入的存储,称为removable storage (也就是外置sdcard的部分). removabl ...

  4. android 手机信息获取

    1. adb已安装 2. adb shell getprop 此时已列出所有相关信息

  5. 获取wifi信息

    最近有个项目需要获取手机附近wifi列表,查了许多资料发现,现在只能查到wifi的SSID,并且用到的是私有api,无法通过app store审核,这里记录一下,方便学习,新手勿喷,欢迎大神指教(wi ...

  6. Android设备网络、屏幕尺寸、SD卡、本地IP、存储空间等信息获取工具类

    Android设备网络.屏幕尺寸.SD卡.本地IP.存储空间.服务.进程.应用包名等信息获取的整合工具类. package com.qiyu.ddb.util; import android.anno ...

  7. 【风马一族_Android】Android 从命令行界面获取手机信息

    Android 从命令行界面获取手机信息 1: cmd 打开命令行界面 2:adb devices   获取与电脑相连的设备,例如:模拟器.真机(手机) (右击“标记”,选择设备名称,点击“Ctrl+ ...

  8. iOS获取当前连接的wifi信息

    导入框架CaptiveNetwork #import <SystemConfiguration/CaptiveNetwork.h> 获取当前连接的wifi信息 // 只能获取当前的SSID ...

  9. 解决Android 6.0获取wifi Mac地址为02:00:00:00:00:00问题【转】

    本文转载自:http://www.jb51.net/article/128398.htm 这篇文章主要介绍了Android 6.0获取wifi Mac地址为02:00:00:00:00:00的解决方法 ...

随机推荐

  1. 服务器编程心得(四)—— 如何将socket设置为非阻塞模式

    1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的: SOCKET WSAAPI socket( _In_ int af, _In_ ...

  2. Windows环境下安装 mysql-8.0.11-winx64 遇到的问题解决办法

    下载mysql安装包,我的是下载mysql-8.0.11-winx64,解压到你想安装的目录下,然后配置环境(window环境下,mac本还没试过), 1.首先,配置环境:右击此电脑->属性-& ...

  3. Java:清空文件内容

    文章来源:https://www.cnblogs.com/hello-tl/p/9139432.html import java.io.*; public class FileBasicOperati ...

  4. Linux文件和目录的权限笔记

    查看文件或者目录的权限命令:ls -al # -a 表示全部文件包含隐藏文件,-l 表示列出每个文件的详细信息 比如执行 ls -al total 115 drwxr--x--- 4 root roo ...

  5. Python数据分析 Pandas模块 基础数据结构与简介(一)

    pandas 入门 简介 pandas 组成 = 数据面板 + 数据分析工具 poandas 把数组分为3类 一维矩阵:Series 把ndarray强大在可以存储任意数据类型可以专门处理时间数据 二 ...

  6. [mvc]MVC_Model

    1,Model的职责: Model只负责与数据处理相关的工作. 2,开发Model的基本观念 采用ORM信息访问技术开发 ORM是将结构化的关系型数据,映射成面向对象模型.对于EF来说,就是关系型数据 ...

  7. 1. node.js环境搭建 第一行代码

    一.NodeJs简介 NodeJS官网上的介绍: Node.js is a platform built on  Chrome's JavaScript runtime  for easily bui ...

  8. Sql Server数据库视图的创建、修改

    if OBJECT_ID('Sales.USACusts') is not null drop view Sales.USACusts; go create view Sales.USACusts a ...

  9. xth 砍树(codevs 1369)

    题目描述 Description 在一个凉爽的夏夜,xth 和 rabbit 来到花园里砍树.为啥米要砍树呢?是这样滴,小菜儿的儿子窄森要出生了.Xth这个做伯伯的自然要做点什么.于是他决定带着rab ...

  10. POJ 3036 Honeycomb Walk

    http://poj.org/problem?id=3036 在每一个格子可以转移到与这个各自相邻的六个格子 那么设置转移变量 只需要六个 int d[6][2] = {-1, 0, -1, 1, 0 ...