2011-02-19 2 views
1

Android 용 앱을 작성 중이며 Wi-Fi 상태를 주기적으로 확인하고 일부 조건에 따라 서비스를 변경하는 서비스를 생성합니다. 내 문제는 WifiManager 객체를 만들어 Wifi 상태를 확인하려고 할 때마다 초기화되지 않은 객체를 제공한다는 것입니다. 코드는 다음과 같습니다.서비스 내부에서 WifiManager 객체를 얻으려면 어떻게해야합니까?

다음은이 코드에 도달하면 로그에있는 행입니다.

02-18 05:22:59.274: INFO/System.out(1170): SSID: <none>, BSSID: <none>, MAC: <none>, Supplicant state: UNINITIALIZED, RSSI: -200, Link speed: -1, Net ID: -1 

분명히 시스템 WifiManager 개체가 표시되지 않습니다. 나는 그것이 하나의 실천이라는 사실과 관련이 있다는 것을 알고 있습니다. 그러나 나는 아직도 개념을 이해하는 데 어려움을 겪고 있으며, 왜 작동하지 않는지에 대한 약간의 설명과 그것을 고칠 수있는 방법에 대해 크게 이해할 것입니다.

+0

- 확신 해. LogCat에서 보여준 올바른 결과물을 얻으려면 어떻게 생각하십니까? – CommonsWare

답변

4

당신이 당신의 장치에서 무선 랜을 사용하도록 설정 (관련이없는 노트의 종류에, 나는 서비스의 라인 Toast.makeText(getBaseContext(), "Checking Wifi...", Toast.LENGTH_SHORT).show();를 사용할 수없는 이유에 대한 설명도 설명 할 생각)?

Wi-Fi가 활성화되어 있지 않으면 UNINITIALZED 출력이 표시됩니다.

난 그냥 코드를 시도하고 사용할 무선 랜과 함께 잘 작동 :

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
       WifiInfo w = wifi.getConnectionInfo(); 
       Log.d(LOG_TAG, w.toString()); 

로그 캣 : ". 분명히 나는 ​​시스템 WifiManager 객체를받지 못했습니다"

E/wpa_supplicant(4337): wpa_driver_priv_driver_cmd failed 
E/wpa_supplicant(4337): wpa_driver_priv_driver_cmd failed 
W/ActivityManager(1332): Activity idle timeout for HistoryRecord{454624f8 com.xxx.xxx/.ui.SomeScreen} 
D/SomeScreen(4365): SSID: <none>, BSSID: <none>, MAC: 00:26:E8:B7:D2:E0, Supplicant state: DORMANT, RSSI: -200, Link speed: 54, Net ID: -1 
+0

네 말이 맞아. 나는 AVD에서 이것을 시도했다. 나는 심지어 그것에 wifi를 시작할 수 없다. 감사. 나는 지금 정말로 멍청하다고 느낍니다 : P –

관련 문제