【问题标题】:Get available wi-fi scan result in customized listview在自定义列表视图中获取可用的 wifi 扫描结果
【发布时间】:2014-09-17 20:49:45
【问题描述】:

我想要在活动开始时自定义列表视图中的可用 wifi 扫描结果。但是我想只显示 SSID 和允许的密钥管理,以及当我们检查其中的 wifi 列表时显示的与 android 手机相同的网络强度。

package com.am.wifi.amitwifi;

import java.util.List;

import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MainActivity extends Activity {
       WifiManager mainWifiObj;
       WifiScanReceiver wifiReciever;
       ListView list;
       String wifis[];


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        list = (ListView)findViewById(R.id.listView1);
          mainWifiObj = (WifiManager) getSystemService(Context.WIFI_SERVICE);
          wifiReciever = new WifiScanReceiver();
          mainWifiObj.startScan();

    }
       protected void onPause() {
              unregisterReceiver(wifiReciever);
              super.onPause();
           }

       protected void onResume() {
              registerReceiver(wifiReciever, new IntentFilter(
              WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
              super.onResume();
           }
       class WifiScanReceiver extends BroadcastReceiver {
              @SuppressLint("UseValueOf")
              public void onReceive(Context c, Intent intent) {
                 List<ScanResult> wifiScanList = mainWifiObj.getScanResults();
                 wifis = new String[wifiScanList.size()];
                 for(int i = 0; i < wifiScanList.size(); i++){
                    wifis[i] = ((wifiScanList.get(i)).toString());
                 }

                 list.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
                 android.R.layout.simple_list_item_1,wifis));
              }
           }
}

【问题讨论】:

  • 到目前为止你做了什么?
  • 我只是得到一个可用的 wi-fi 列表以及所有的细节。如SSID、BSSID、RSSID、允许的密钥管理等
  • 感谢编辑,请稍候
  • @NAbin 欢迎您 好的,我在等

标签: android android-listview wifi wifimanager


【解决方案1】:

在循环之后添加以下内容

String filtered[] = new String[wifiScanList.size()];
            int counter = 0;
            for (String eachWifi : wifis) {
                String[] temp = eachWifi.split(",");
                filtered[counter] = temp[0] +temp[2] +temp[3];//0->SSID, 2->Key Management 3-> Strength
                counter++;
            }
            list.setAdapter(new ArrayAdapter<String>(getApplicationContext(),
                    android.R.layout.simple_list_item_1, filtered));

要删除多余的单词,您可以执行以下操作:

temp[0].substring(5).trim() 

这会删除前 5 个字符并修剪所有空格。做与其他人类似的事情。并使用\n 进入下一行。

或者最好的办法是使用自定义适配器。 看我的回答here

祝你好运。

【讨论】:

  • 因为在我的设备上显示错误...应用不幸停止了
  • 它工作正常,但我只想要 SSID 和 SSID 下面的功能,例如 ABC [Wap 等] 而不是 SSID:ABC 等,你能帮我重新整理一下吗
  • 我已经检查了控制台上的代码。意味着我已确保 filtered 数组包含正确的数据
  • 你想在下一行显示?
  • 是的,我想在下一行显示,还想在 SSID 和密钥管理之前删除 SSID 和功能字
猜你喜欢
  • 2018-08-14
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
相关资源
最近更新 更多