나는 Wifi 방송 수신기를 사용하여 응용 프로그램을 개발했습니다. 내 요구 사항은 Wifi가 IP 주소를 얻음으로써 라우터에 연결되었을 때 Wifi가 이전에 연결된 라우터와 연결되어 있지 않을 때 다른 함수를 호출 할 때 함수 호출을 얻는 것입니다. wifi 방송 수신기 다중 목적
나는 방송 수신기를 등록하는
<action android:name="android.net.wifi.STATE_CHANGE" />
매니페스트이를 사용했다.
및 OnReceive
에 방송 수신기 클래스의
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
NetworkInfo.State state = networkInfo.getState();
if (state == NetworkInfo.State.CONNECTED) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wi = wifiManager.getConnectionInfo();
Log.e("++++WiFi Conected","++++WiFi Conected");
Flags.wifiState = true;
updateWifiSyncTrue(context);
if (wi.getIpAddress() != 0) {
intent = new Intent(context, ConnectionService.class);
intent.putExtra("intentValue", "signalOn");
intent.putExtra("bssId", wi.getBSSID());
context.startService(intent);
}
}
if (state == NetworkInfo.State.DISCONNECTED) {
Log.e("++++WiFi DisConected","++++WiFi DisConnected");
Flags.wifiState = false;
updateWifiSyncFalse(context);
updateRouterSyncFalse(context);
intent = new Intent(context, ConnectionService.class);
intent.putExtra("intentValue", "signalOff");
context.startService(intent);
}
모든 것은 킷캣 까지 일하지만에 롤리팝 버전이 테스트 할 때를 위해 전화를 여러 번받을 수 있습니다.
나는 그것의 결과에 내 무선 랜을 켜면 같은 주 : 유휴 --Connecting-- 인증하는 - 포로 확인 - 연결 - 연결. 간혹 연결이 끊어 질 수도 있습니다.
해제하는 동안. 은 연결 - 연결 끊김 - 연결 끊김 - 연결 끊김 - NetworkInfo
의 디버그 결과는 다음과 같습니다
끊김 :
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/AUTHENTICATING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CONNECTING, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/OBTAINING_IPADDR, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTING/CAPTIVE_PORTAL_CHECK, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]
[type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "DJ Hostspot", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false].
나는 친절하게 같은 날 도움을 요청합니다. wifi가 켜져있을 때 코드를 사용하면 CONNECTED
상태가 여러 번 실행되고 DISCONNECTED
상태이기도합니다.
WIFI가 꺼져있는 경우 연결됨 상태가 생성 된 후 4-5 연결이 끊긴 상태입니다.
I 테스트 용으로 HTC 전화를 사용했습니다.
나는 간단한 코딩을 사용했는데, 이것에 대한 더 깊은 상태 확인이 필요합니까? (자세한 상태 등 ...)
이 솔루션을 처리하는 가장 좋은 방법은 무엇입니까?
수정 및 수정 해 주셔서 감사합니다. –