Как синхронизировать WifiManager.startscan () и WifiManager.getScanResults? - PullRequest
1 голос
/ 06 января 2012

Я пытаюсь сканировать точки доступа каждую секунду.Вот что я делаю.

      if (isScanning()) {               
            new Timer().schedule(new TimerTask() {
                @Override
                public void run()
                {   
                    results = manager.getScanResults();
                    manager.startScan();                                            
                }                   
            }, 0,1000); 
            adapter.notifyDataSetChanged();

Я отображаю результаты с помощью BaseAdapter.

public View getView(int position, View convertView, ViewGroup parent) {

    ScanResult result = results.get(position);

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.network_list_row, null);

    }
    // Get textview fields
    TextView txtSSID = (TextView) convertView.findViewById(R.id.txtSSID);
    TextView txtBSSID = (TextView) convertView.findViewById(R.id.txtBSSID);
    TextView txtCapabilities = (TextView) convertView
            .findViewById(R.id.txtCapabilities);
    TextView txtFrecuency = (TextView) convertView
            .findViewById(R.id.txtFrecuency);
    TextView txtLevel = (TextView) convertView.findViewById(R.id.txtLevel);

if (result.SSID.equalsIgnoreCase(ScanNetworks.manager
                .getConnectionInfo().getSSID()))
                {
            txtSSID.setText(convertView.getContext().getString(
                    R.string.ssid_msg, result.SSID));
            txtBSSID.setText(convertView.getContext().getString(
                    R.string.bssid_msg, result.BSSID));
            txtCapabilities.setText(convertView.getContext().getString(
                    R.string.capabilities_msg, result.capabilities));
            txtFrecuency.setText(convertView.getContext().getString(
                    R.string.frecuency_msg,
                    Integer.toString(result.frequency)));
            txtLevel.setText(convertView.getContext().getString(
                    R.string.signal_level_msg,
                    Integer.toString(result.level)));
            ;

Я вижу много дубликатов при отображении результатов сканирования.Я знаю, что между каждой секундой запускается startScan ().Есть ли способ устранить дубликаты на дисплее?Кроме того, как мне синхронизировать вызовы startScan () и getScanresults ()?Пожалуйста посоветуй.Спасибо

...