2010-11-23 4 views
3

Android에서 새로운 Wi-Fi 네트워크 근처에 있다는 알림을 제공하나요? 기기가 Wi-Fi 네트워크에 연결되도록 설정되어 있는지 여부는 기기에 특정 Wi-Fi 네트워크에 대한 Wi-Fi 설정이 있는지에 따라 다르지만 새로운 Wi-Fi 네트워크에 연결할 때마다 알림을받을 수 있습니까?
WifiManager 클래스를 보았지만 클래스 내부의 상태가 내가하려는 것을 달성하지 못하는 것 같습니다. 어떤 아이디어?Android - 새 액세스 포인트가 감지되면 알림을 받으시겠습니까?

+0

Wi-Fi 네트워크를 특정 간격으로 점검하는 서비스를 사용해야합니다. – Sandy

답변

7

등록 된 BroadcastReceiver을 사용하여 작업의 의도를 수신하십시오 : WifiManager.NETWORK_STATE_CHANGED_ACTION.

이 브로드 캐스트 리시버에서는 의도에서 NetworkInfo 객체를 추출 할 수 있습니다 :

NetworkInfo ni = (NetworkInfo) intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 

그리고 와이파이 네트워크에서 연결/연결 해제를 확인 ni.getState()를 처리합니다.

이 제품은 찾고 계신 것입니다. 대답 후


편집

그래서 당신은 와이파이 네트워크를 사용할 수있는 알고 싶다면,이 당신에게 Scanresult 객체에 가까운 액세스 포인트의 목록을 제공 WifiManager.getScanResults() 사용합니다. 여기에는 각각 네트워크 이름과 MAC 주소 인 액세스 포인트의 SSID와 BSSID가 포함됩니다.

WifiManager.SCAN_RESULTS_AVAILABLE_ACTION으로 인 텐트를 수신하도록 등록 된 BroadcastReceiver을 사용하여이 정보를 비동기 적으로 가져올 수 있습니다. 그런 다음 시스템에서 Wi-Fi 스캔을 수행 할 때마다 알림을 받게되며 마지막 스캔 이후 새 SSID (즉 네트워크 이름)가 나타나는지 확인할 수 있습니다.

마지막으로 시스템이 기본적으로 스캔하는 것보다 더 자주 스캔하려는 경우 WifiManager.startScan()을 사용하여 무선 스캔을 직접 트리거 할 수 있습니다.

+0

답변 주셔서 감사합니다,하지만 이것은 새로운 와이파이 네트워크의 징후를주지 않는가? 나는 그것이 연결된 네트워크의 상태에 변화를 준다라고 생각한다 –

+0

고마워! 두 번째 시나리오 솔루션이 필요했습니다. WifiManager.SCAN_RESULTS_AVAILABLE_ACTION을 (를) 등록하는 중입니다. 고마워, 내가 그것을 체크 아웃 하고이 방법으로 작동 희망 :) –

관련 문제