Frage

Ich habe einige Software geschrieben, die Wi-Fi als mögliches Internet-Verbindungsmedium verwendet .. Ich habe bemerkt aber, dass nach einiger Zeit (ich vermute, bin um die 15 bis 20 Minuten), nachdem das Gerät in den Energiesparmodus gegangen ist (sowieso, wenn der Bildschirm schwarz weg hat) die Wireless-LAN-Verbindung wird einfach fallen gelassen werden, auch wenn es noch verwendet :( Dieser auf einen ADP 2 (also ein Google Ion mit Android 1.6) ... Ich konnte das folgende Log bekommen:

06-10 15:04:27.009: DEBUG/WifiService(72): got ACTION_DEVICE_IDLE
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: ERROR/wpa_supplicant(538): Set_key: Wrong Key
06-10 15:04:27.069: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-STATE-CHANGE id=0 state=8]
06-10 15:04:27.079: VERBOSE/WifiStateTracker(72): Changing supplicant state: COMPLETED ==> DORMANT
06-10 15:04:27.079: DEBUG/WifiStateTracker(72): Deconfiguring interface and stopping DHCP
06-10 15:04:27.099: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys]
06-10 15:04:27.099: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-STATE-CHANGE id=-1 state=8]
06-10 15:04:27.139: WARN/Smack/Packet(169): notify conn break (IOEx), close connection
06-10 15:04:27.139: DEBUG/Smack(169): [XMPPConn] close connection, notifyClosed=false
06-10 15:04:27.139: ERROR/MediaPlayer(390): error (1, -17)
06-10 15:04:27.139: ERROR/MediaPlayer(390): Error (1,-17)
06-10 15:04:28.109: VERBOSE/WifiMonitor(72): Event [CTRL-EVENT-DRIVER-STATE STOPPED]
06-10 15:04:28.129: VERBOSE/WifiStateTracker(72): New network state is DISCONNECTED
06-10 15:04:28.129: VERBOSE/WifiStateTracker(72): Changing supplicant state: DORMANT ==> DORMANT
06-10 15:04:28.189: INFO/MediaUploader(199): No need to wake up
06-10 15:04:28.189: DEBUG/GpsLocationProvider(72): updateNetworkState available
06-10 15:04:28.189: DEBUG/GpsLocationProvider(72): NetworkThread wait for 4484259ms
06-10 15:04:28.289: DEBUG/NetworkLocationProvider(72): onDataConnectionStateChanged 3
06-10 15:04:28.299: DEBUG/GpsLocationProvider(72): state: CONNECTING apnName: iinternet reason: null
06-10 15:04:32.979: DEBUG/NetworkLocationProvider(72): onDataConnectionStateChanged 3
06-10 15:04:33.029: DEBUG/GpsLocationProvider(72): state: CONNECTED apnName: iinternet reason: null
06-10 15:04:33.099: DEBUG/GpsLocationProvider(72): updateNetworkState available
06-10 15:04:33.099: DEBUG/GpsLocationProvider(72): NetworkThread wait for 4479355ms
06-10 15:04:33.129: INFO/MediaUploader(199): No need to wake up
06-10 15:04:33.299: INFO/ActivityManager(72): Stopping service: com.android.mms/.transaction.TransactionService
06-10 15:04:33.339: ERROR/TransactionSettings(156): Invalid APN setting: MMSC is empty
06-10 15:04:33.419: INFO/ActivityManager(72): Stopping service: com.android.providers.downloads/.DownloadService
06-10 15:04:38.309: DEBUG/dalvikvm(199): GC freed 301 objects / 19232 bytes in 92ms
06-10 15:04:43.349: DEBUG/dalvikvm(216): GC freed 1430 objects / 84920 bytes in 121ms
06-10 15:04:48.319: DEBUG/dalvikvm(156): GC freed 323 objects / 15152 bytes in 96ms

Ist das eine Art von bekannter Bug / Feature? Wenn ja, wie um es zu bekommen? Auch ist es irgendwie tatsächlich abfangen dieser Veranstaltung und dann soimehow ignorieren oder Neueinstellung einer WiFi-Verbindung? Vielen Dank im Voraus

War es hilfreich?

Lösung

Sie benötigen eine WLAN-Sperre zu erstellen. Hier ist, wie Sie es tun:

WifiManager wifimanager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
WifiLock lock = wifimanager.createWifiLock("my_lock");

lock.acquire();

// your code here

lock.release();

Hinweis: Sie sollten nur eine WiFi-Sperre erstellen, wenn Sie aktiv mit WiFi (das heißt das Herunterladen einer großen Datei), sonst werden Sie unnötig Auswirkungen Akkulaufzeit.

Andere Tipps

Ich erhalte eine Security wenn ich WifiLock.acquire () aufrufen. Fehle ich eine uses-Erlaubnis in meinem Manifest oder gibt es etwas, das ich vorher in Code zu überprüfen? Ich gehe davon aus, es hat mit den erweiterten Einstellungen in dem Wi-Fi-Einstellungen Seite Satz nie zu tun.

Eine Sperre erhalten Wi-Fi ist nicht die bevorzugte Lösung dieses Problems. Die Absicht der Wi-Fi-Sperre ist nur zu halten, wenn Sie das Netzwerk aktiv sind zugreifen, das heißt das Herunterladen einer Datei. Z.B. Skype und Google HangOut nehmen Sie nicht und halten Sie die Wi-Fi-Sperre. Sie sollen was Martin Molnar oben in seinem Kommentar sagte tun. Sie sollten der Benutzer entscheiden lassen, wenn er will, sein Gerät (und Ihre App auf seinem Gerät) ermöglichen, WiFi in Verbindung zu bleiben, wenn die Anzeige über das „WiFi wach, während im Schlaf“ -Einstellung ist ausgeschaltet. Wenn Sie unbedingt darauf bestehen, dass Ihre App WiFi auf sogar 15 Minuten halten sollen, nachdem das Display ausgeschaltet ist, selbst wenn der Benutzer Satz „WiFi wach, während im Schlaf“ auf „nein“, dann sollen Sie den Teil Wake Lock nehmen. Wieder Skype nicht den Teil Wake Lock-nehmen.

Wenn Sie wirklich eine glatte App haben wollen, die asynchron Daten / Meldungen empfangen können, dann sollten Sie GCM Push-Benachrichtigungen einrichten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top