在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. GC 机制

    1. 为什么需要垃圾回收? 因为内存是有限的,在不断的分配内存空间而不回收的话内存迟早都会被消耗完,所以垃圾回收是必须的. 2. 触发GC 的条件: 1.GC在优先级最低的线程中运行,一般在应用程序空 ...

  2. ubuntu14.04 RockMongo的配置

    安装php5 安装php5     sudo apt-get install php5 让Apache支持php      sudo apt-get install libapache2-mod-ph ...

  3. jquery ajax示例

    $.ajax({ type: "POST",//方法类型 dataType: "json",//预期服务器返回的数据类型 url: "${ctx }/ ...

  4. pwntools使用简介3

    连接 本地process().远程remote().对于remote函数可以接url并且指定端口. IO模块 下面给出了PwnTools中的主要IO函数.这个比较容易跟zio搞混,记住zio是read ...

  5. Milk(sort+结构体)

    Description Ignatius drinks milk everyday, now he is in the supermarket and he wants to choose a bot ...

  6. 「BZOJ1537」Aut – The Bus(变形Dp+线段树/树状数组 最优值维护)

    网格图给予我的第一反应就是一个状态 f[i][j] 表示走到第 (i,j) 这个位置的最大价值. 由于只能往下或往右走转移就变得显然了: f[i][j]=max{f[i-1][j], f[i][j-1 ...

  7. Android开发——Accessibility机制实现模拟点击(微信自动抢红包实现)

    1. 何为Accessibility机制 许多Android使用者因为各种情况导致他们要以不同的方式与手机交互.对于那些由于视力.听力或其它身体原因导致不能方便使用Android智能手机的用户,And ...

  8. Jmeter接口测试-正则表达式提取器-提取token

    在使用Jmeter过程中会有这样的场景, A接口执行后返回json字符串, 这个json中有B接口需要的某一个参数, 那如何来实现呢? 第一步:添加正则表达式 方法非常简单, 这就是我们今天要讲的正则 ...

  9. 【shell】通过shell编写ping包及arp的监控并发送短信

    1 #!/bin/bash 2 NOW="`date +%Y%m%d-%H:%M:%S`" 3 PHONES=15134567893 4 IP=10.100.8.78 5 GATE ...

  10. UITableView点击背景

    系统自定义的点击背景有时间觉得效果不好想换个 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelect ...