package com.zzx.factorytest; import android.os.Bundle; import android.os.Handler; import android.os.Handler.Callback; import android.os.Message; import android.util.Log; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import com.zzx.factorytest.bean.WifiStrength; import com.zzx.factorytest.manager.FactoryTestManager; import com.zzx.factorytest.manager.WifiStatusManager; import com.zzx.factorytest.view.WifiStrengthView; import java.util.HashMap; import java.util.List; import java.util.Map; public class WifiTestActivity extends TestItemBaseActivity implements Callback { private LinearLayout ll_content; // private WifiStateReceiver wifiReceiver; private List<WifiStrength> scanResultsList; private WifiStatusManager manager; private Handler mHandler; private WifiStrengthView strengthView; private Thread wifiStateMonitor; private final int AUTO_TEST_TIMEOUT = 10;// private final int AUTO_TEST_MINI_SHOW_TIME = 5;// private boolean thread_flag = true; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.wifi_layout); ll_content = (LinearLayout) findViewById(R.id.ll_content); // ChartFactory.getCombinedXYChartView(this, dataset, renderer, types); strengthView = (WifiStrengthView) findViewById(R.id.strengthView); manager = new WifiStatusManager(this); manager.openWifi(); mHandler = new Handler(this); mHandler.sendEmptyMessage(0); wifiStateMonitor = new WifiStateMonitor(); wifiStateMonitor.start(); super.onCreate(savedInstanceState); } @Override void executeAutoTest() { super.startAutoTest(AUTO_TEST_TIMEOUT, AUTO_TEST_MINI_SHOW_TIME); } @Override protected void onDestroy() { try { if (!Thread.interrupted()) { thread_flag = false; wifiStateMonitor.interrupt(); } } catch (Exception e) { e.printStackTrace(); } manager.closeWifi(); super.onDestroy(); } @Override protected void onResume() { manager.startScan(); super.onResume(); } class WifiStateMonitor extends Thread { @Override public void run() { while (thread_flag) { try { mHandler.sendEmptyMessage(0); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } } @Override public boolean handleMessage(Message msg) { scanResultsList = manager.getWifiInfoStrength(); if (FactoryTestManager.currentTestMode == FactoryTestManager.TestMode.MODE_AUTO_TEST) { checkAutoTestResult(scanResultsList); } strengthView.updateData(scanResultsList); manager.startScan(); Log.i("test", "-------------------scanResultsList"); return false; } /** * 检测自动测试结果 */ private Map<String, Integer> preStrengthMap = new HashMap<String, Integer>(); private void checkAutoTestResult(List<WifiStrength> list) { boolean flag1 = false;// 撝有一个信号大于-90的 boolean flag2 = false;// 两次信号差值大于20 WifiStrength wifiStrength; if (list.size() > 0) { for (int i = 0; i < list.size(); i++) { wifiStrength = list.get(i); if (wifiStrength.strength > -90) { flag1 = true; } if (preStrengthMap.size() > 0) { Integer preStrength = preStrengthMap .get(wifiStrength.label); if (preStrength != null && Math.abs(preStrength - wifiStrength.strength) > 20) { flag2 = true; } } preStrengthMap.put(wifiStrength.label, wifiStrength.strength); } } if (flag1 && !flag2) { if (!Thread.interrupted()) { // thread_flag = false; // wifiStateMonitor.interrupt(); } stopAutoTest(true); } // if (xResult && yResult && zResult) { // synchronized (this) { // mSensorManager.unregisterListener(this, gravitySensor); // stopAutoTest(true); // } // } } }