当前位置: 移动技术网 > IT编程>移动开发>Android > Android开发实验之通过WifiManager监听Wifi信号强弱

Android开发实验之通过WifiManager监听Wifi信号强弱

2018年10月27日  | 移动技术网IT编程  | 我要评论

爱康延时喷剂,吞噬星空全文下载,周杰伦的歌词

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

wifimanager wifi_service = (wifimanager)getsystemservice(wifi_service);

wifiinfo wifiinfo = wifi_service.getconnectioninfo();

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

https://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。

界面很简单,只有一个imageview用来显示图片,activity_main.xml:



 


用于获得信号强度并改变图片的activity:mainactivity

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_image;			//信号图片显示
	private int level;						//信号强度值

	@suppresslint("handlerleak")
	@override
	public void oncreate(bundle savedinstancestate) {
		super.oncreate(savedinstancestate);
		setcontentview(r.layout.activity_main);
		//图片控件初始化
		wifi_image = (imageview) findviewbyid(r.id.wifi_image);
		// 获得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_image.setimageresource(r.drawable.single4);
					toast.maketext(mainactivity.this,
							"信号强度:" + level + " 信号最好", toast.length_short)
							.show();
					break;
				case 2:
					wifi_image.setimageresource(r.drawable.single3);
					toast.maketext(mainactivity.this,
							"信号强度:" + level + " 信号较好", toast.length_short)
							.show();
					break;
				case 3:
					wifi_image.setimageresource(r.drawable.single2);
					toast.maketext(mainactivity.this,
							"信号强度:" + level + " 信号一般", toast.length_short)
							.show();
					break;
				case 4:
					wifi_image.setimageresource(r.drawable.single1);
					toast.maketext(mainactivity.this,
							"信号强度:" + level + " 信号较差", toast.length_short)
							.show();
					break;
				case 5:
					wifi_image.setimageresource(r.drawable.single0);
					toast.maketext(mainactivity.this,
							"信号强度:" + level + " 无信号", toast.length_short)
							.show();
					break;
				default:
					//以防万一
					wifi_image.setimageresource(r.drawable.single0);
					toast.maketext(mainactivity.this, "无信号",
							toast.length_short).show();
				}
			}

		};

	}
}

然后只需要打开wifi测试一下,就行啦!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网