先来了解下Android如何获取wifi的信息:

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);

WifiInfo wifiInfo = wifi_service.getConnectionInfo();

其中WifiManager是管理wifi的最重要的类,详细请参考

http://developer.android.com/reference/android/net/wifi/WifiManager.html

其中wifiInfo有以下的方法:

wifiinfo.getBSSID();

wifiinfo.getSSID();

wifiinfo.getIpAddress();获取IP地址。

wifiinfo.getMacAddress();获取MAC地址。

wifiinfo.getNetworkId();获取网络ID。

wifiinfo.getLinkSpeed();获取连接速度,可以让用户获知这一信息。

wifiinfo.getRssi();获取RSSI,RSSI就是接受信号强度指示。在这可以直 接和华为提供的Wi-Fi信号阈值进行比较来提供给用户,让用户对网络或地理位置做出调整来获得最好的连接效果。

这里得到信号强度就靠wifiinfo.getRssi();这个方法。得到的值是一个0到-100的区间值,是一个int型数据,其中0到-50表示信号最好,-50到-70表示信号偏差,小于-70表示最差,有可能连接不上或者掉线,一般Wifi已断则值为-200。

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/wifi_p_w_picpath"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="145dp"

android:layout_gravity="center" />

package com.my.phonesingle;

import java.util.Timer;

import java.util.TimerTask;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.net.wifi.WifiInfo;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.widget.ImageView;

import android.widget.Toast;

public class MainActivity extends Activity {

private WifiInfo wifiInfo = null;  //获得的Wifi信息

private WifiManager wifiManager = null; //Wifi管理器

private Handler handler;

private ImageView wifi_p_w_picpath;   //信号图片显示

private int level;      //信号强度值

@SuppressLint("HandlerLeak")

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//图片控件初始化

wifi_p_w_picpath = (ImageView) findViewById(R.id.wifi_p_w_picpath);

// 获得WifiManager

wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);

// 使用定时器,每隔5秒获得一次信号强度值

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

@Override

public void run() {

wifiInfo = wifiManager.getConnectionInfo();

//获得信号强度值

level = wifiInfo.getRssi();

//根据获得的信号强度发送信息

if (level <= 0 && level >= -50) {

Message msg = new Message();

msg.what = 1;

handler.sendMessage(msg);

} else if (level < -50 && level >= -70) {

Message msg = new Message();

msg.what = 2;

handler.sendMessage(msg);

} else if (level < -70 && level >= -80) {

Message msg = new Message();

msg.what = 3;

handler.sendMessage(msg);

} else if (level < -80 && level >= -100) {

Message msg = new Message();

msg.what = 4;

handler.sendMessage(msg);

} else {

Message msg = new Message();

msg.what = 5;

handler.sendMessage(msg);

}

}

}, 1000, 5000);

// 使用Handler实现UI线程与Timer线程之间的信息传递,每5秒告诉UI线程获得wifiInto

handler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

// 如果收到正确的消息就获取WifiInfo,改变图片并显示信号强度

case 1:

wifi_p_w_picpath.setImageResource(R.drawable.single4);

Toast.makeText(MainActivity.this,

"信号强度:" + level + " 信号最好", Toast.LENGTH_SHORT)

.show();

break;

case 2:

wifi_p_w_picpath.setImageResource(R.drawable.single3);

Toast.makeText(MainActivity.this,

"信号强度:" + level + " 信号较好", Toast.LENGTH_SHORT)

.show();

break;

case 3:

wifi_p_w_picpath.setImageResource(R.drawable.single2);

Toast.makeText(MainActivity.this,

"信号强度:" + level + " 信号一般", Toast.LENGTH_SHORT)

.show();

break;

case 4:

wifi_p_w_picpath.setImageResource(R.drawable.single1);

Toast.makeText(MainActivity.this,

"信号强度:" + level + " 信号较差", Toast.LENGTH_SHORT)

.show();

break;

case 5:

wifi_p_w_picpath.setImageResource(R.drawable.single0);

Toast.makeText(MainActivity.this,

"信号强度:" + level + " 无信号", Toast.LENGTH_SHORT)

.show();

break;

default:

//以防万一

wifi_p_w_picpath.setImageResource(R.drawable.single0);

Toast.makeText(MainActivity.this, "无信号",

Toast.LENGTH_SHORT).show();

}

}

};

}

}

Android的参数大致分成两块:系统服务参数和平台系统信息。

系统服务参数:Android的系统服务不仅指服务组件,而且还包括 Android 系统提供的服务功能。Android为这些系统服务参数提供了接口---管理器,不同的组件会有不同的管理器进行管理,主要有Wi-Fi管理,连接管理, 电话管理,电源管理,振动管理,音量管理,输入法管理,窗口管理等等,我们通过这些系统服务接口就可以方便地获取系统信息。我在此处把一些可能和华为项目 相关的管理器拿出来仔细研究研究。

Wi-Fi管理(重点):

WifiManager wifi_service = (WifiManager)getSystemService(WIFI_SERVICE);

//获取Wi-Fi配置接口的属性

List wifiConfig = wifi_service.getConfiguredNetworks();

wifiConfig中包含四个属性:

BSSID:BSS是一种特殊的Ad-hoc LAN(一种支持点对点访问的无线网络应用模

式)的应用,一个无线网络至少由一个连接到有线网络的AP和若干无线

工作站组成,这种配置称为一个基本服务装置。一群计算机设定相同的

BSS名称,即可自成一个group,而此BSS名称,即所谓BSSID。通常,手

机WLAN中,bssid其实就是无线路由的MAC地址。

networkid:网络ID。

PreSharedKey:无线网络的安全认证模式。

SSID:SSID(Service Set Identif)用于标识无线局域网,SSID不同的无线网

络是无法进行互访的。

//获取Wi-Fi的连接信息

WifiInfo wifiinfo = wifi_service.getConnectionInfo();

wifiinfo.getBSSID():获取BSSIS(上面已说明)。

wifiinfo.getSSID():获取SSID(上面已说明)。

wifiinfo.getIpAddress():获取IP地址。

wifiinfo.getMacAddress():获取MAC地址。

wifiinfo.getNetworkId():获取网络ID。

wifiinfo.getLinkSpeed():获取连接速度,可以让用户获知这一信息。

wifiinfo.getRssi():获取RSSI,RSSI就是接受信号强度指示。在这可以直

接和华为提供的Wi-Fi信号阈值进行比较来提供给用户,让用户对网络

或地理位置做出调整来获得最好的连接效果。

//获取DHCP信息

DhcpInfo dhcpinfo = wifi_service.getDhcpInfo();

ipAddress:获取IP地址。

gateway:获取网关。

netmask:获取子网掩码。

dns1:获取DNS。

dns2:获取备用DNS。

serverAddress:获取服务器地址。

//获取扫描信息

List scanResult = wifi_service.getScanResults();

BSSID:获取BSSID(上面已说明)。

SSID:获取网络名(上面已说明)。

level:获取信号等级。

frequency:获取频率。

capabilites:对该访问点安全方面的描述。

//获取Wi-Fi的网络状态

int wifiState = wifi_service.getWifiState();

WIFI_STATE_DISABLING:常量0,表示停用中。

WIFI_STATE_DISABLED:常量1,表示不可用。

WIFI_STATE_ENABLING:常量2,表示启动中。

WIFI_STATE_ENABLED:常量3,表示准备就绪。

WIFI_STATE_UNKNOWN:常量4,表示未知状态。

说明:进行网络连接的时候,这些状态都会被显示在Notification上,直

接可以通过此处获取各个状态来完成华为的Notification中Wi- Fi

状态显示的需求。

连接管理:

ConnectivityManager connectionManager = (ConnectivityManager)

getSystemService(CONNECTIVITY_SERVICE);

//获取网络的状态信息,有下面三种方式

NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();

NetworkInfo wifiInfo =

connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

NetworkInfo mobileInfo =

connectionManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

getDetailedState():获取详细状态。

getExtraInfo():获取附加信息。

getReason():获取连接失败的原因。

getType():获取网络类型(一般为移动或Wi-Fi)。

getTypeName():获取网络类型名称(一般取值“WIFI”或“MOBILE”)。

isAvailable():判断该网络是否可用。

isConnected():判断是否已经连接。

isConnectedOrConnecting():判断是否已经连接或正在连接。

isFailover():判断是否连接失败。

isRoaming():判断是否漫游。

//网络状态侦听器的使用

在程序中写一个Service类继承BroadcasrReceiver:

public class NetMonitor extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

}

}

在androidManifest.xml中申明该Rervice:

当网络状态发生改变的时候,就可以通过该Rervice监听到该变化,并作出相应

的动作。

电源管理:

PowerManager power = (PowerManager) getSystemService(POWER_SERVICE);

PARTIAL_WAKE_LOCK:屏幕关闭,键盘关闭。

SCREEN_DIM_WAKE_LOCK:屏幕边暗,键盘关闭。

SCREEN_BRIGHT_WAKE_LOCK:屏幕点亮,键盘关闭。

FULL_WAKE_LOCK:屏幕点亮,键盘点亮。

ACQUIRE_CAUSES_WAKEUP:当通过唤醒锁唤醒设备时,强制屏幕或键盘马上点

亮(例如:作为重要信息的通知)。

ON_AFTER_RELEASE:当唤醒锁释放时用户的Activity组件会被重置,这会造

成屏幕持续显示较长的事件。

//通过唤醒锁的“acquire”方法按照指定的等级来唤醒设备,当不需要唤醒锁时

可以通过“release”方法来释放。

PowerManager.WakeLock locker = powerManager.NewWakeLock(PowerManager.

ACQUIRE_CAUSES_WAKEUP|powerManager.SCREEN_BRIGHT_WAKE_LOCK,

"PowerServiceDemo");

locker.acquire();

locker.release();

振动管理:

Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);

通过振动器的“vibrate”方法就可以设置震动持续的时间并启动震动,通过震动

器的“cancel”方法取消震动,或者当用户的程序退出时,所有用户启动的震动都将停

止。

平台系统信息:Android平台对系统中的进程管理,文件系统,环境变量,系统时间,平台信息和电池管理等核心部分的访问进行深层次的封装,从而让开发者能够获得更多的核心系统信息。

android.os.Process

//获取当前进程的方法

android.os.Process.getElapsedCpuTime():获取消耗的时间。

android.os.Process.myPid():获取该进程的ID。

android.os.Process.myTid():获取调用进程的ID。

android.os.Process.myUid():获取该进程的用户ID。

android.os.Process.supportsProcesses:判断该进程是否支持多进程。

// 获取/设置线程优先级

getThreadPriority(int tid):获取指定ID的线程的优先级。

setThreadPriority(int priority):设置当前线程的优先级。

setThreadPriority(int tid,int priority):设置指定ID的线程的优先级。

//管理进程

killProcess(int pid):杀死指定的进程。

sendSignal(int pid,int singal):向指定的进程发送信号。

android.os.Environment

//获取系统环境变量

getDataDirectory():获取当前系统中数据文件夹环境变量。

getDownloadCacheDirectory():获取当前系统中下载缓存文件环境变量。

getExternalStorageDirectory():获取当前系统中外部存储文件环境变量。

getRootDirectory():获取当前系统中根文件环境变量

oncreate方法中加入:

5.在onResume方法中注册,在onPause方法中销毁:

Override

android读取wlan信息,Android判断Wlan信号强弱及wlan管理信息相关推荐

  1. Android判断Wlan信号强弱及wlan管理信息

    http://blog.csdn.net/zd_1471278687/article/details/12158367 先来了解下Android如何获取wifi的信息: WifiManager wif ...

  2. android 读取usb 文件,android开发:手机连接电脑读取文件

    满意答案 pretty_102 2013.05.16 采纳率:47%    等级:10 已帮助:967人 展开全部 一.打开手机USB调试模式 打开手机系统设置:[菜单(menu)]->[设置] ...

  3. 教你判断iPhone信号强弱,信号差怎么解决?这三个方法很管用!

    目前真正在使用的iPhone,使用的基带分高通和英特尔,前者的信号一直比后者要强一些.那么,怎么判断使用的iPhone信号强弱呢?下面果师兄工程师教大家判断信号强弱的判断方法. 一.信号查询代码 1. ...

  4. android读取excel数据库,Android 读取Excel数据并保存在本地数据库

    在工作中遇到需要将Excel的数据读取出来并保存在本地数据库中的操作,数据如下: 图片.png 需要做以下准备: 读取Excel的jar包[文章末尾会分享该jar包] 保存数据的数据库框架,在这里我们 ...

  5. android读取外部图片,Android读取本地图库与调用摄像头拍摄

    本文主要介绍如何读取Android本地图库的图片以及调用安卓的摄像头进行拍摄. 一.布局 布局比较简单,MainActviivty的布局文件只有两个按钮,一个是读取图库的,另一个是打开摄像头的,另外R ...

  6. android 读取xlsx文件,android怎么解析表格.xlsx文件

    在網上搜了一下,現在用的是jxl.jar2.6.12解析xlsx文件,但只能解析到51行,后面的獲取不到了,這是什么問題? 用的是網上的這段代碼 http://www.open-open.com/ho ...

  7. android 读取音频音量,Android AudioRecord和MediaRecorder录音并实现了实时获取音量大小...

    [实例简介] Android AudioRecord和MediaRecorder录音并实现了实时获取音量大小 看代码就知道了 [实例截图] [核心代码] MediaRecorer和AudioRecor ...

  8. java android 读取微信文件,Android 实现微信,QQ文件在其他应用打开并获取到路径

    例如: 1.想实现其他应用打开出现自己的应用,需要在清单文件中增加配置 注:自己需要什么样的文件格式自己可以配置,其中 minType 代表要打开的文件类型. 常用的类型: {".3gp&q ...

  9. android读取xml 字符串,Android 读取本地Xml文件,并转换成String

    问题 不是解析本地 xml 文件, 而是要将 xml 文件中的所有内容(包含格式,标签等),直接转换成 String. 与前端H5页面交互时, iOS 在请求远程 xml 文件耗时太长(有时需要4~5 ...

  10. android读取网络配置文件,Android 中保存、读取设置配置数据、记录登录状态

    记录登录状态,我认为可以在用户登录成功后,与服务器约定一个 token 凭据,保存这个 token 凭据,而不是直接保存用户名.密码. 当然,保存 token 与保存设置数据是一样的,本文只讲解如何保 ...

最新文章

  1. Linux下找不到动态链接库
  2. Linux文本处理及用户组管理命令练习
  3. 4月25日 python学习总结 互斥锁 IPC通信 和 生产者消费者模型
  4. php随机生成车牌号,生成汽车牌照
  5. Linux下静态库.a与.so库文件的生成与使用
  6. ADO.Net 数据库访问技术
  7. quartus仿真24:数据选择器MUX四选一74153八选一74151
  8. HttpServletRequest--request.getParameter /getParameterValues/getParameterNames()/getParameterValues
  9. 冯鑫、雷军、王峰、蒋涛、傅盛等金山系老将,已将区块链拼成完整生态图
  10. 香槟分校计算机研究生专业,2019伊利诺伊大学香槟分校计算机专业申请要求
  11. word2010 2003公式编辑器 格式设置
  12. linux删除tmp文件找回,如何在 Linux 下快速找到被删除的文件?
  13. 王思聪 远程操控女主播“翻床”
  14. 【软件工程】软件维护
  15. 从eclipse官网下载32位eclipse并配置tomcat
  16. 有关于成长的七个关键词
  17. 【记录读论文时遇到的一些算法2】—— Occupancy Grid Map
  18. 前端学习(8)下拉框、文本域、文件域
  19. 公司常用云服务器详解:企业2核4G、4核8G、8核16G配置介绍
  20. Unity 利用花生壳搭建一个可供外网联机的游戏服务器

热门文章

  1. mysql概念模型中的3种基本联系_数据库建模三步骤:概念模型
  2. EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)
  3. Input用户输入完后再执行方法
  4. 移动端抓包工具spy-debugger使用
  5. 前端开发学习(七七)
  6. 程序员的奋斗史(三十二)——人在囧途之应聘篇(二)
  7. 橙色优学:PS扣图技术讲解,六种方法你都知道吗?
  8. VMware 设置虚拟机全屏
  9. 使用Javascript 实现 分享到 新浪微博 QQ 空间等
  10. 如何彻底杀死/关闭烦人的弹窗广告