Проверьте наличие сигнала Wi-Fi в спящем режиме. - PullRequest
1 голос
/ 21 июля 2011

Моя цель - иметь возможность сканировать изменения в сетях Wi-Fi (в основном, чтобы проверить, какие сети доступны).Правильно знаете, я делаю это, регистрируя приемник:

registerReceiver(wifiReceiver, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));

, где WifiReceiver - это мой BroadcastReceiver.

Проблема в том, что он работает только при включенном телефоне.Как только он переходит в режим ожидания (нажатием кнопки питания или через некоторое время), приемник прекращает прием.Я уже приобрел блокировку wake в onCreate моего основного класса и выпустил ее в onDestroy (это частичная блокировка wake).Кроме того, я попробовал это:

Settings.System.putInt(getContentResolver(),Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);

, чтобы не дать Wi-Fi спать.К сожалению, это не помогло.

Есть ли возможность сканировать изменения сети, даже когда телефон спит?Я хочу иметь возможность проверить, какие сети находятся в зоне действия (по SSID).Может быть, я должен использовать другое действие?

Ценю вашу помощь.

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Буквально нет, как правило, аппаратное обеспечение не разработано, а драйверы низкого уровня написаны для того, чтобы позволить Wi-Fi работать, пока процессор приложения находится в режиме ожидания - в отличие от случая с интерфейсом мобильной сети, который предназначен для приема push-событий, таких кактелефонные звонки, смс и gmail "щекочут".

Таким образом, вы можете либо решить, как успешно заблокировать устройство (до свидания), либо периодически просыпаться с помощью будильника, активировать Wi-Fi иопросить ситуацию (все еще не хорошо для батареи, но не так радикально).

0 голосов
/ 21 июля 2011

Боюсь, что этим режимом сна управляет система в разделе (на Android 2.3.4) Настройки> Беспроводные сети> Настройки Wi-Fi> Нажмите Меню > Дополнительно> Политика сна Wi-Fi.

Это может пойти против пользователей, осторожно.

Однако я думаю, что должен быть способ изменить этот параметр.программно, используя следующие настройки: Settings.System и, конечно, соответствующее разрешение в вашем манифесте.

...