В настоящий момент я пытаюсь создать приложение для Android, которое сможет найти устройство с поддержкой Wi-Fi в помещении. Поэтому я разбил его на несколько шагов по порядку, и один из шагов - сканировать доступные беспроводные сети и вернуть уровень сигнала и т. Д., Связанные с каждой точкой доступа, которую он обнаруживает (ему не нужно подключаться к точкам доступа, но просто нужно пинговать их для получения информации). Ниже показан фрагмент кода, который я создал, и когда код отлажен, он не идентифицирует точки доступа Wi-Fi, поэтому кто-то может сказать мне, где проблема, или указать мне в правильном направлении.wifiManager.startScan не возвращает никаких результатов (необходимо руководствоваться)
myWifiMan.startScan();
List<ScanResult> wifiList = myWifiMan.getScanResults();
if (wifiList != null) {
//Construct Clue
for(int i = 0; i < wifiList.size(); i++) {
message = message + "'" + wifiList.get(i).SSID +"':" + Integer.toString(wifiList.get(i).level);
if((i+1) < wifiList.size())
message = message + ",";
}
message = message + "}]";
В связи с ответом, приведенным ниже, приведенный ниже код даст мне желаемые результаты?
private void initializeWiFiListener(){
System.out.println("executing initializeWiFiListener");
String connectivity_context = Context.WIFI_SERVICE;
final WifiManager wifi = (WifiManager)getSystemService(connectivity_context);
if(!wifi.isWifiEnabled()){
if(wifi.getWifiState() != WifiManager.WIFI_STATE_ENABLING){
wifi.setWifiEnabled(true);
}
}
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
boolean a= wifiManager.startScan();//request a scan for access points
final List<ScanResult> results= wifiManager.getScanResults();//list of access points from the last scan
for(final ScanResult result : results){
System.out.println("ScanResult level: "+ result.level);
}
}
}, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
}
ok - это пересмотренный код выше правильной идеи? – user3270260
Я бы не объявлял свой «BroadcastReceiver» анонимным классом, так как, возможно, захочу его отменить, когда покончу с этим. Также включение Wi-Fi по-видимому навязчиво и требует дополнительного разрешения. Я бы попросил пользователя включить его явно. –
У меня возникла проблема с транслятором, который получает SCAN_RESULTS_AVAILABLE_ACTION на 2-м устройстве Moto X (2014). В принципе, я могу видеть сканирование в пользовательском интерфейсе системы, но не могу связаться с ними в своем приложении. Я использую необходимые разрешения, и это поведение не происходит в других устройствах (S6, Nexus 5 ...). – leRobot