3

Wi-Fi信号強度を取得しています。Android 3.0では正常に動作していますが、Android 4.0で同じコードを実行して信号強度を取得しようとすると、信号強度が取得されますが、別の場所に移動して信号強度を取得しようとすると、同じ強度が取得されます。変更はありません。

これがwifi信号強度を取得するための私のコードです:

1)BroadcastReceiver

public class WiFiScanReceiver extends BroadcastReceiver {
    private static final String TAG = "WiFiScanReceiver";
    WiFiDemo wifiDemo;
    Context context;

    public WiFiScanReceiver(WiFiDemo wifiDemo) {
        super();
        this.wifiDemo = wifiDemo;
        context = wifiDemo;             

        if(results != null){
            receiver.clearAbortBroadcast();
            receiver = null;
        }

        List<ScanResult> results = wifiDemo.wifiManager.getScanResults();

    }

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

            ScanResult bestSignal = null;

            for (ScanResult result : results) {
                if (bestSignal == null || WifiManager.compareSignalLevel(bestSignal.level,result.level) < 0)
                    bestSignal = result;
            }

            String message = String.format(
                    "%s networks found. %s is the strongest.", results.size(),
                    bestSignal.SSID);
            Log.i("System out","Results : "+results);
    }
}

onCreate()強さを得る方法

BroadcastReceiver receiver = new WiFiScanReceiver(this);    

        registerReceiver(receiver, new IntentFilter(
                WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

    for (int i = 0; i < results.size(); i++) {

        wifiStrength = wifiNameMap.get(results.get(i).SSID);
        if(wifiStrength==null){
            wifiStrength = new ArrayList<Integer>();
        }           

        wifiStrength.add(results.get(i).level);
        wifiNameMap.put(results.get(i).SSID, wifiStrength);                     
    }
4

0 に答える 0