Как отслеживать несколько приемников вещания - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть 2 разных файла, которые должны инициализировать один и тот же широковещательный приемник. У меня проблемы с получением результатов. Иногда я получаю нулевые значения, что является результатом неспособности правильно ссылаться на класс, который инициировал сканирование.

Вот пример кода.

public void Connection_Logic (Context c)

    IntentFilter wififilter; 
    wififilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
    public WifiManager wifiManager;
    wifireceiver = serviceConsume.wifireceiver;
    c.registerReceiver(wifireceiver, wififilter);
    wifiManager.startScan();
}

public class serviceConsume {
    public WifiManager wifiMan;
    wifiMan = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
    public BroadcastReceiver wifireceiver = new Wifi_Broadcast(this);
    IntentFilter wififilter; 
    wififilter = new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); 
    registerReceiver(wifireceiver, wififilter);
    wifiMan.startScan();
}

public class Wifi_Broadcast extends BroadcastReceiver {

    public ServiceConsume main;
    public Connection_Logic ConnLog;

    public Wifi_Broadcast(ServiceConsume main) {
        super();
        this.main = main;
    }

    public Wifi_Broadcast(Connection_Logic ConnLog) {
        super();
        this.ConnLog = ConnLog;
    }

    @Override
    public void onReceive(Context c, Intent intent) {

        if(main != null) {
            List<ScanResults> results = ConnLog.wifiManager.getScanResults();
        } else if (ConnLog != null) {
            List<ScanResults> results = ConnLog.wifiMan.getScanResults();
        }
    }
}

У кого-нибудь есть идеи, почему я могу получить нулевые значения для результатов? Я делаю это неправильно? Если у кого-нибудь есть пример кода этой работы, это будет оценено.

Спасибо!

1 Ответ

0 голосов
/ 10 сентября 2011
if(main != null) {
            List<ScanResults> results = ConnLog.wifiManager.getScanResults();
        } else if (ConnLog != null) {
            List<ScanResults> results = main.wifiMan.getScanResults();
        }

в вашем else if вы используете main, но main равно null .. Возможно, это должно выглядеть так:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...