ps:范围0-100,数值越大信号越好。

原理:通过WifiManager获取系统wifi强度数值。

操作:点击获取wifi细信息,开始循环任务获取数值。最大最小表明在本次测试过程中的wifi信号范围,来观察信号强度和是否稳定。

点击保存,在下面会增加一条记录,记录本次的区间。然后重新获取可以是另一点wifi信号强度的区间。

因为最近要开始做路由器开发,为测试newifi智能路由器的信号强度,昨晚临时赶出来的东西,目的是为了可测试可用。如有需要可以拿去用。有很多可以优化扩展的地方,但是现在没有大块的时间和精力做。

<span style="font-size:18px;">package com.example.testwifi;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;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.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {private TextView tv, max, min;private Button btn_start, btn_add, btn_clear;private WifiManager wifiManager;private WifiInfo info;private Handler handler;private Timer timer;private TimerTask task;private Message msg;private int id, maxId, minId, temp;private int textViewMax, textViewMin;private ListView lv;private Map data;private List<Map<String, Object>> list;private SimpleAdapter adapter;private boolean flag = true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();adapter = new SimpleAdapter(getApplicationContext(), list,android.R.layout.simple_list_item_2, new String[] {"max", "min" }, new int[] { android.R.id.text1,android.R.id.text2 });lv.setAdapter(adapter);wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);timer = new Timer();task = new TimerTask() {@Overridepublic void run() {msg = new Message();info = wifiManager.getConnectionInfo();temp = id;id = info.getRssi() + 100;if (flag) {msg.what = 3;msg.arg2 = id;flag = false;} else {if (id > textViewMax) {msg.what = 1;msg.arg2 = id;} else if (id < textViewMin) {msg.what = 2;msg.arg2 = id;}}msg.arg1 = id;handler.sendMessage(msg);}};btn_start.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {timer.scheduleAtFixedRate(task, 200, 500);btn.setEnabled(false);}});handler = new Handler() {@Overridepublic void handleMessage(Message msg) {int ssid = msg.arg1;int ssidTemp = msg.arg2;data = new HashMap<String, Object>();if (msg.what == 1) {max.setText("最大" + ssidTemp + "");textViewMax = ssidTemp;} else if (msg.what == 2) {min.setText("最小" + ssidTemp + "");textViewMin = ssidTemp;} else if (msg.what == 3) {textViewMax = ssidTemp;textViewMin = ssidTemp;max.setText("最大" + ssidTemp + "");min.setText("最小" + ssidTemp + "");}tv.setText("-----" + ssid);data.put("max", "最大" + textViewMax);data.put("min", "最小" + textViewMin);}};btn_add.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {list.add(data);adapter.notifyDataSetChanged();System.out.println(list);flag = true;}});btn_clear.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {list.clear();adapter.notifyDataSetChanged();}});}private void init() {tv = (TextView) findViewById(R.id.tv);max = (TextView) findViewById(R.id.max);min = (TextView) findViewById(R.id.min);btn_start = (Button) findViewById(R.id.btn);btn_add = (Button) findViewById(R.id.btn2);btn_clear = (Button) findViewById(R.id.btnClear);lv = (ListView) findViewById(R.id.lv);list = new ArrayList<Map<String, Object>>();}
}</span>

xml文件

<span style="font-size:18px;"><RelativeLayout 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" ><TextViewandroid:id="@+id/tv"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="hi"android:textSize="30dp" /><LinearLayoutandroid:id="@+id/ll"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/tv"android:orientation="horizontal" ><Buttonandroid:id="@+id/btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="获取wifi信息" /><Buttonandroid:id="@+id/btn_add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="保存" /><Button android:id="@+id/btnClear"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="清除列表"/></LinearLayout><TextViewandroid:id="@+id/max"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/ll"android:text="最大"android:textSize="20dp" /><TextViewandroid:id="@+id/min"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/max"android:text="最小"android:textSize="20dp" /><TextViewandroid:id="@+id/state"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/min"android:text="50-100最好,30-50差,30以下最差"android:textSize="22dp" /><ListViewandroid:id="@+id/lv"android:background="#a1a1a1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/state" /></RelativeLayout></span>

权限:

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

android wifi信号检测相关推荐

  1. Android WiFi开发教程(三)——WiFi热点数据传输

    在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)--WiFi的搜索和连接.本篇接着简单介绍手机上如何通过WiFi热点进行数据传输. 跟 ...

  2. Android Wi-Fi基本操作

    2019独角兽企业重金招聘Python工程师标准>>> 从用户角度看,Android Wi-Fi模块自下向上可以看为5层:硬件驱动程序,wpa_suppplicant,JNI,WiF ...

  3. Android Wi-Fi子系统学习笔记

    一.学习目的 了解Android  Wi-Fi模组的移植及调试 二.基础知识 1.wifi的两个标志: (1)无线 (2)基于IEEE802.11协议 2.Android wifi模块的三个作用 (1 ...

  4. Android Wifi开发之WifiConfiguration

    最近在写一个和Wifi有关的程序,原来的意图是想去拿到手机当前WIFI连接下的密码.如果是对于有Root过的手机,我们可以从路径:/data/data/com.android.settings/dat ...

  5. mac android wifi调试

    mac android wifi调试 1,用USB连接你的手机: 2,打开命令行输入: adb tcpip 5555; 结果: MacBook-Pro:~ user$ adb tcpip 5555;r ...

  6. android Wifi开发相关内容

    今天,简单讲讲android里如何使用WifiManager. 之前,我看代码时,看到了wifi相关的代码,发现自己对于这个内容的使用还很不熟悉,所以在网上查找资料,最终解决了问题.这里记录一下. 移 ...

  7. Android开发之Android WIFI ADB(ADB WIFI)无线调试的技巧

    老套路线上效果图 以前又adb wifi可以使用,不过那是17年我用的AS2.3版本,并且除了adb wifi这个插件外还得手机安装一个app才可以,特别麻烦. 显示有心插件了->Android ...

  8. Android wifi驱动的移植 realtek 8188

    Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...

  9. linux wifi开发书籍,Android WIFI开发介绍.pdf

    Android WIFI开发介绍: WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心.WifiSe ...

  10. Android WiFi开发

    概述 介绍Android WiFi的扫描.连接.信息.以及WiFi热点等等的实现,并用代码实现. 详细 代码下载:http://www.demodashi.com/demo/10660.html 一. ...

最新文章

  1. POJ2417 Discrete Logging | A,C互质的bsgs算法
  2. vue中axios的封装以及使用
  3. Jshop小程序商城,小程序端。后台采用Thinkphp5.1框架开发
  4. 办公 自动化 录制行为_我们可以自动化开放行为吗?
  5. Java学习——基本数据类型
  6. 爱立信卫翰思:已囊括拉美一半以上…
  7. 虚拟仪器的python实现_基于Python的虚拟仪器技术探究及实现.pdf
  8. dexposed框架Android在线热修复
  9. 将转为时间戳php,php将时间转化为时间戳的方法
  10. EastFax USB SERVER推动天润集团U盾管理提效升级
  11. 专题分纲目录 思维导图 手绘基础篇
  12. 万国觉醒服务器维护,《万国觉醒》怎么换服 更换服务器方法攻略
  13. WEB前端项目实战/酒仙网开发-李强强-专题视频课程
  14. 数据结构——前序线索二叉树及其前序遍历
  15. 618蓝牙耳机选哪一款比较好?推荐口碑最好的无线蓝牙耳机品牌
  16. SQL39 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。
  17. 无Internet访问权限却可以上网
  18. 如何解决图片403问题
  19. 9 Openstack-Ussuri-Neutron控制/计算节点集群部署-centos8
  20. HTPC知识普及第三讲:高清软硬解之争

热门文章

  1. 等差素数列 蓝桥杯 python
  2. 阿里云服务器搭建私人云盘
  3. 显示器接口_显示器接口 - CNZHIQIANG
  4. Linux安装缺少字体包,linux版wps-office安装缺少的字体
  5. MITK通用插件(四)The Dicom Browser Plugin
  6. ubuntu安装词典goldendict
  7. java毕业设计_基于java的毕业设计
  8. QCC302X/QCC303X蓝牙对讲与蓝牙扩音器
  9. VS2003下载地址3CD
  10. segger_rtt使用帮助