在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. VS C++项目报错warning C4199: ……use /Zc:twoPhase-

    具体的报错如下: c1xx : warning C4199: two-phase name lookup is not supported for C++/CLI, C++/CX, or OpenMP ...

  2. 彻底卸载WIN10 OneDrive

    彻底卸载WIN10 OneDrive @ECHO OFF %SystemRoot%\SysWOW64\OneDriveSetup.exe /uninstall RD "%UserProfil ...

  3. 怎么给xshell服务配置密钥远程登陆

    xshell密钥登陆 1.找一台测试服务器xiuxiu-test生成密钥对2. cd ./.ssh/ && 把公钥放在~/.ssh/authorized_keys文件中  cat id ...

  4. docker:安装tomcat

    文章来源:http://www.cnblogs.com/hello-tl/p/8929879.html 0.下载镜像 # docker pull tomcat:8.5 1.复制tomcat配置 先启动 ...

  5. 一个关于vue+mysql+express的全栈项目(五)------ 实时聊天部分socket.io

    一.基于web端的实时通讯,我们都知道有websocket,为了快速开发,本项目我们采用socket.io(客户端使用socket.io-client) Socket.io是一个WebSocket库, ...

  6. 为什么在属性中设置private set

    引言: 属性的引入来自C#的封装机制,也就是说对象的内部数据不应该由对象实例来直接访问,我们可以使用传统的Get和Set方法,来封装字段,C#为我们提供了语法糖,也就是属性.属性包括get和set,分 ...

  7. 论MySQL中如何代替Oracle中select into new_table from old_table

    v_receipt         warehouse_receipt%ROWTYPE;-- 这里创建表类型,v_receipt复刻了warehouse_receipt的类型(相当于拥有了所有相同的字 ...

  8. 【瞎扯】我的OI之路

    这里大概是一些我自己对我的OI之路的一些记录. 2015.11不知道哪一天-- 我听说了"编程". 当时还不懂得啥是信息学竞赛,以为这只是纯粹的程序设计.后来才明白信息学竞赛是算法 ...

  9. 实现List集合中数据逆序排列

    Collections.reverse(list); 实现list集合逆序排列

  10. Linux核心参数Shmmax,shmall,shmni

    Linux 下核心参数调整 kernel.shmmax shmmax是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax设置应足够大,能在一个共享内存段下容纳下整个的SGA,设置 ...