Using Broadcast Receiver in Android View Model
I am using MVVM to develop an application that displays the names, MAC addresses, signal strengths and link speeds of the Wi-Fi networks in the phone’s coverage area in recyclerView.
But I cannot run WifiReceiver broadcast from MainViewModel.
All I want is to take the wifi list from WifiReceiver and integrate it into my Data model, can you please help?
public class WifiReceiver extends BroadcastReceiver { WifiManager wifiManager; StringBuilder sb; ListView wifiDeviceList; public List<ScanResult> wifiList; public ArrayList<String> deviceList; public WifiReceiver(WifiManager wifiManager, ListView wifiDeviceList) { this.wifiManager = wifiManager; this.wifiDeviceList = wifiDeviceList; } public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) { sb = new StringBuilder(); wifiList = wifiManager.getScanResults(); deviceList = new ArrayList<>(); for (ScanResult scanResult : wifiList) { sb.append("\n").append(scanResult.SSID).append(" - ").append(scanResult.capabilities); deviceList.add(scanResult.SSID + " - " + scanResult.capabilities); String wifi_names = scanResult.SSID; System.out.println(" Wifi names "+ wifi_names ); } */ } } } }
public class MainViewModel extends ViewModel { MutableLiveData<ArrayList<Data>> LiveData; ArrayList<Data> dataArrayList; private ListView wifiList; private WifiManager wifiManager; WifiReceiver receiverWifi; public MainViewModel() { LiveData = new MutableLiveData<>(); init(); } public MutableLiveData<ArrayList<Data>> getUserMutableLiveData() { return LiveData; } public void init(){ populateList(); LiveData.setValue(dataArrayList); } public void populateList(){ //Example Data data = new Data("Turk Telekom","12:12:23:34:34","Low","High"); dataArrayList = new ArrayList<>(); dataArrayList.add(data); } }
public class Data { private String name; private String mac; private String streght; private String speed; public Data(String name, String mac, String streght, String speed) { this.name = name; this.mac = mac; this.streght = streght; this.speed = speed; } public Data() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMac() { return mac; } public void setMac(String mac) { this.mac = mac; } public String getStreght() { return streght; } public void setStreght(String streght) { this.streght = streght; } public String getSpeed() { return speed; } public void setSpeed(String speed) { this.speed = speed; } }