마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

무선공유기 (AP) RSSI 측정 속도 개선방법 문의드립니다.

0 추천
안녕하세요.

주변 무선공유기(AP)들에 대한 RSSI 측정 관련 어플을 개발하고 있습니다.

현재 가능하면 빠른 속도로 계속 AP들의 RSSI 정보를 받아와야 하는데... 재성능이 나오지 않는건지 개발 방법이 틀린건지 속도가 매우 늦게 측정이 되서 전문가분들께 질문을 드립니다.

 

현재 WifiManager를 사용하여 아래 함수를 이용하여 측정하고 있습니다.

public BroadcastReceiver mReceiver = new BroadcastReceiver()
{
    @Override
    public void onReceive(Context context, Intent intent)
    {        
        final String action = intent.getAction();
        if (action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
        {
               getScanResult();        // WIFI scan result
               wifimanager.startScan();
        }
        else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION))
        {
            sendBroadcast(new Intent("wifi.ON_NETWORK_STATE_CHANGED"));
        }
    }
};

 

여기서 getScanResult() 함수를 통해 List collection 형태인 wifimanager.getScanResults();를 loop를 돌면서 동시에 주변 모든 AP의 RSSI 측정 결과를 합니다. 그래서 주변에 약 10~15개의 AP가 있을 경우 동시에 모든 AP의 RSSI를 받아오는데 약 3~4초 정도가 걸립니다.

아마 스마트폰 성능 프로세스 문제가 아닌 다른 방식 문제인듯 싶습니다.

 

일반적으로 고속 AP 측정하는 모듈 등의 구현 사례나 참고할 만한 코드가 있는지요?

 

감사합니다.
익명사용자 님이 2013년 4월 16일 질문

1개의 답변

0 추천

startScan()을 실행하면 wpa_supplicant에 SCAN 명령이 내려가는데, 이게 주변에 있는 무선랜 채널 전부를 scan 하는 명령이어서 1-14채널 까지 scan 하는것을 생각하면 약 3-4초 정도 걸리는 게 맞는것 같습니다. 

scan 명령외어 RSSI 만 가져올수 있는 다른 함수가 있는지 확인해보셔야 할것 같습니다. 

sungjin75 (140 포인트) 님이 2013년 4월 17일 답변
...