在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. [LUOGU] P3469 [POI2008]BLO-Blockade

    https://www.luogu.org/problemnew/show/P3469 求无向图分别删去每个点后不连通的点对数. 首先,对于任何一个点,它本身删了,就会和剩下的n-1个点不连通,点对是 ...

  2. SpringBoot的线程调度

    Spring Boot默认提供了一个ThreadPoolTaskExecutor作为线程调度器,只需要在配置类中使用注解EnableAsync即可开启异步线程调度.在实际要执行的Bean中使用@Asy ...

  3. (9) openssl enc(对称加密)

    对称加密工具,了解对称加密的原理后就很简单了,原理部分见下文. openssl   enc  -ciphername   [-in filename]   [-out filename]   [-pa ...

  4. Go:文件操作

    一.打开文件和关闭文件 os包File结构体的两个方法: func Open(name string) (file *File, err error) Open打开一个文件用于读取.如果操作成功,返回 ...

  5. img元素srcset属性浅析

    img srcset 属性 img 元素的 srcset 属性用于浏览器根据宽.高和像素密度来加载相应的图片资源. 属性格式:图片地址 宽度描述w 像素密度描述x,多个资源之间用逗号分隔.例如: &l ...

  6. qt5.5.1配置winpcap4.1.2

    下载winpcap开发包,下载地址是http://www.winpcap.org/devel.htm 下载之后解压

  7. oracle如何重做日志组

    1.查询数据库中的重做日志组 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STA ...

  8. linux赋权限

    给该文件夹赋权限命令 chmod u+x service-hcm-job.sh

  9. Laya 分帧加载优化

    Laya 分帧加载优化 @author ixenos Flash中的EnterFrame事件在Laya中等同于Laya.timer.frameLoop(1,...) Laya.timer.frameL ...

  10. gitHub网站上常见英语翻译

    为开发者而建Built for developers GitHub is a development platform inspired by the way you work.GitHub是一个受你 ...