android wifi信号检测
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信号检测相关推荐
- Android WiFi开发教程(三)——WiFi热点数据传输
在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)--WiFi的搜索和连接.本篇接着简单介绍手机上如何通过WiFi热点进行数据传输. 跟 ...
- Android Wi-Fi基本操作
2019独角兽企业重金招聘Python工程师标准>>> 从用户角度看,Android Wi-Fi模块自下向上可以看为5层:硬件驱动程序,wpa_suppplicant,JNI,WiF ...
- Android Wi-Fi子系统学习笔记
一.学习目的 了解Android Wi-Fi模组的移植及调试 二.基础知识 1.wifi的两个标志: (1)无线 (2)基于IEEE802.11协议 2.Android wifi模块的三个作用 (1 ...
- Android Wifi开发之WifiConfiguration
最近在写一个和Wifi有关的程序,原来的意图是想去拿到手机当前WIFI连接下的密码.如果是对于有Root过的手机,我们可以从路径:/data/data/com.android.settings/dat ...
- mac android wifi调试
mac android wifi调试 1,用USB连接你的手机: 2,打开命令行输入: adb tcpip 5555; 结果: MacBook-Pro:~ user$ adb tcpip 5555;r ...
- android Wifi开发相关内容
今天,简单讲讲android里如何使用WifiManager. 之前,我看代码时,看到了wifi相关的代码,发现自己对于这个内容的使用还很不熟悉,所以在网上查找资料,最终解决了问题.这里记录一下. 移 ...
- Android开发之Android WIFI ADB(ADB WIFI)无线调试的技巧
老套路线上效果图 以前又adb wifi可以使用,不过那是17年我用的AS2.3版本,并且除了adb wifi这个插件外还得手机安装一个app才可以,特别麻烦. 显示有心插件了->Android ...
- Android wifi驱动的移植 realtek 8188
Android wifi驱动的移植 一般我们拿到的android源代码中wifi应用层部分是好的, 主要是wifi芯片的驱动要移植并添加进去. wifi驱动的移植, 以realtek的8188etv为 ...
- linux wifi开发书籍,Android WIFI开发介绍.pdf
Android WIFI开发介绍: WifiStateTracker 会创建WifiMonitor 接收来自底层的事件,WifiService 和WifiMonitor 是整个模块的核心.WifiSe ...
- Android WiFi开发
概述 介绍Android WiFi的扫描.连接.信息.以及WiFi热点等等的实现,并用代码实现. 详细 代码下载:http://www.demodashi.com/demo/10660.html 一. ...
最新文章
- POJ2417 Discrete Logging | A,C互质的bsgs算法
- vue中axios的封装以及使用
- Jshop小程序商城,小程序端。后台采用Thinkphp5.1框架开发
- 办公 自动化 录制行为_我们可以自动化开放行为吗?
- Java学习——基本数据类型
- 爱立信卫翰思:已囊括拉美一半以上…
- 虚拟仪器的python实现_基于Python的虚拟仪器技术探究及实现.pdf
- dexposed框架Android在线热修复
- 将转为时间戳php,php将时间转化为时间戳的方法
- EastFax USB SERVER推动天润集团U盾管理提效升级
- 专题分纲目录 思维导图 手绘基础篇
- 万国觉醒服务器维护,《万国觉醒》怎么换服 更换服务器方法攻略
- WEB前端项目实战/酒仙网开发-李强强-专题视频课程
- 数据结构——前序线索二叉树及其前序遍历
- 618蓝牙耳机选哪一款比较好?推荐口碑最好的无线蓝牙耳机品牌
- SQL39 针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。
- 无Internet访问权限却可以上网
- 如何解决图片403问题
- 9 Openstack-Ussuri-Neutron控制/计算节点集群部署-centos8
- HTPC知识普及第三讲:高清软硬解之争