2012-08-13 4 views
2

내 모든 무선 기기를 감지하고 안드로이드 기기에서 신호 강도를 얻을 수있는 방법이 있습니까?주변에서 와이파이 기기 감지하기

실험적 용도로 일부 Android 기기에서 앱을 실행하고 싶습니다. 앱은 각 휴대 전화와 다른 휴대 전화 사이의 신호 강도를 기록해야합니다. 외부 라우터를 사용하지 않고 "연결"을 전화 사이에서 직접하고 싶습니다. 안드로이드 폰이 와이파이 라우터로 작동 할 수 있으므로 다른 기기에서 안드로이드 폰을 감지 할 수 있으므로 가능하다고 생각합니다. 하지만 프로그래밍 방식으로 어떻게 접근해야할지 모르겠습니다.

아무도 도와 줄 수 있습니까? 이것이 가능하다고 생각하십니까?

답변

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 Direct (P2P)을 사용하면 라우터/액세스 포인트없이 Wi-Fi를 통해 두 장치간에 통신 할 수 있습니다. 이 기능은 Android 4.0에서 액세스 할 수 있다고 생각합니다. 그렇지 않으면 확실하지 않습니다.