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;

	@Override
	protected 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() {

			@Override
			public 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() {

			@Override
			public void onClick(View arg0) {

				timer.scheduleAtFixedRate(task, 200, 500);
				btn.setEnabled(false);
			}
		});
		handler = new Handler() {
			@Override
			public 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() {

			@Override
			public void onClick(View arg0) {
				list.add(data);
				adapter.notifyDataSetChanged();
				System.out.println(list);
				flag = true;
			}
		});
		btn_clear.setOnClickListener(new OnClickListener() {

			@Override
			public 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" >

    <TextView
        android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="hi"
        android:textSize="30dp" />

    <LinearLayout
        android:id="@+id/ll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/tv"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="获取wifi信息" />

        <Button
            android: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>

    <TextView
        android:id="@+id/max"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/ll"
        android:text="最大"
        android:textSize="20dp" />

    <TextView
        android:id="@+id/min"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/max"
        android:text="最小"
        android:textSize="20dp" />

    <TextView
        android: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" />

    <ListView
        android: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" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值