2012-08-13 17 views
2

有沒有一種方法可以檢測我周圍的所有Wifi設備,並從android設備獲取信號強度。使用android檢測我周圍的wifi設備

對於實驗性使用,我想在某些android設備上運行應用程序。應用程序應該記錄每部手機和其他手機之間的信號強度。 我想「連接」直接在手機之間,而不使用外部路由器。 我相信這是可能的,因爲android手機有能力作爲Wifi路由器,所以它可能被其他設備檢測到。但我不知道如何以編程方式處理這個問題。

任何人都可以幫忙嗎? 你認爲這是可能的嗎?

回答

1

如果你想在附近掃描所有的無線網絡,試試這個

創建wifiManager,廣播接收器,並使用任何異步任務掃描所有的無線網絡連接,掃描的結果將獲得廣播接收器

WifiManager wManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
// wifi Scan 
    new wifiScan().execute(); // call to async task 

    BroadcastReceiver br = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context c, Intent intent) { 
    wifiList = wManager.getScanResults(); 

    for (int i = 0; i < wifiList.size(); i++) { 
    ScanResult scanresult = wManager.getScanResults().get(i); 
    ssid = scanresult.SSID;//ssid is Name of wifi (String) 
    bid = scanresult.BSSID;// bssid: MAC of wifi (String) 
    level = scanresult.level;//level: strength of wifi(int) 
     } 

     }; 



// Async task 

public class wifiScan extends AsyncTask<Void, String, Void> { 
     int i = 0; 

    protected void onPreExecute() { 

    } 

    protected void onPostExecute(Void results) { 
     if (results != null) { if (i < 6) { new wifiScan().execute(); 
        } 
        } 


    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     registerReceiver(br, new IntentFilter(
       WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); 
     wManager.startScan(); 
     return null; 
    } 
} 

通過WiFi,您可以在兩臺設備之間進行通信,無需路由器/接入點即可使用Wifi Direct (P2P)。 我覺得這個功能可以從Android 4.0訪問,否則我不確定。