定期的にwifiの状態をチェックし、いくつかの条件に基づいて変更するサービスを生成するAndroid用のアプリを書いています。私の問題は、Wi-Fiの状態をチェックする(そしておそらくそれを制御する)ためにWifiManagerオブジェクトを作成しようとすると、初期化されていないオブジェクトが表示されることです。コードは次のとおりです。
public class WifiCheckerService extends Service {
// Service code and run() method
private void checkWifi() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
System.out.println(wifi.getConnectionInfo());
// Rest of code
}
}
そして、これがこのコードに到達したときのログの行です。
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オブジェクトを取得していません。私はスレッドであるサービスに参加しているという事実と関係があることは知っていますが、それでも概念を理解するのに苦労しており、なぜそれが機能しないのか、そしてどのように修正できるのかについて少し説明していただければ幸いです。
(ある種の無関係なメモでは、説明は私がサービスで回線を使用できない理由も説明すると思いますToast.makeText(getBaseContext(), "Checking Wifi...", Toast.LENGTH_SHORT).show();
)