Wi-Fi просто переходит в режим ожидания - PullRequest
2 голосов
/ 10 июня 2010

Я написал некоторое программное обеспечение, которое использует Wi-Fi в качестве возможного средства подключения к Интернету. Однако я заметил, что через некоторое время (я предполагаю около 15-20 минут) после того, как устройство перейдет в режим энергосбережения (в любом случае, когда экран стал черным) соединение с Wi-Fi будет просто сброшено, даже если оно все еще используется :( Это на ADP 2 (таким образом, Google Ion с Android 1.6) ... Мне удалось получить следующий журнал:

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

Это какая-то известная ошибка / функция? Если да, то как ее обойти? Также есть ли способ перехватить это СОБЫТИЕ, а затем игнорировать его или переустановить соединение Wi-Fi?Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 10 июня 2010

Вам необходимо создать блокировку Wi-Fi.Вот как вы это делаете:

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

lock.acquire();

// your code here

lock.release();

Обратите внимание, что блокировку Wi-Fi следует создавать только при активном использовании Wi-Fi (т. Е. При загрузке большого файла), в противном случае это может повлиять на срок службы батареи.

0 голосов
/ 03 января 2014

Получение блокировки Wi-Fi не является предпочтительным решением для этого. Цель блокировки Wi-Fi - удерживать ее только при активном доступе к сети, то есть при загрузке файла. Например. Skype и Google HangOut не берут и не держат блокировку Wi-Fi. Вы должны делать то, что сказал Мартин Молнар в своем комментарии выше. Вы должны позволить пользователю решить, хочет ли он разрешить своему устройству (и вашему приложению на своем устройстве) оставаться подключенным к Wi-Fi, когда дисплей выключен с помощью настройки «Wi-Fi активен во время сна». Если вы абсолютно настаиваете на том, чтобы ваше приложение оставляло Wi-Fi включенным даже через 15 минут после выключения дисплея, даже если пользователь установил «WiFi в спящем режиме в спящем режиме» на «Нет», вы должны взять на себя функцию Partial Wake Lock. Снова Skype не принимает блокировку частичного пробуждения.

Если вы действительно хотите иметь удобное приложение, которое может асинхронно получать данные / уведомления, вам следует настроить push-уведомления GCM.

0 голосов
/ 18 октября 2010

Я получаю исключение SecurityException при вызове WifiLock.acquire (). Я пропускаю разрешение на использование в моем манифесте или мне нужно предварительно что-то проверить в коде? Я предполагаю, что это связано с дополнительными настройками на странице настроек Wi-Fi, установленными на НИКОГДА.

...