Блокировка пробуждения в Samsung Galaxy Tab

#android #wakelock #android-wake-lock

#Android #блокировка пробуждения #android-блокировкапробуждения

Вопрос:

Я разрабатываю приложение, в котором мне нужно отправлять и получать пакеты в фоновом режиме. Но я обнаружил, что при выключении экрана также отключаются процессор и сеть. Итак, я обнаружил у разработчиков Android, что я должен использовать блокировку пробуждения и блокировку Wi-Fi, чтобы позволить процессору работать в режиме ожидания, если экран погас. Это решение работает для других устройств, таких как LG Optimus One, но не для Samsung Galaxy Tab. С этим устройством, когда экран выключен, я больше не могу получать пакеты (UDP), и волшебным образом, когда я нажимаю кнопку питания для повторного включения экрана, я перезагружаюсь для получения пакетов. В моем коде я вызываю:

 powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_W AKE_LOCK, "TAG");
  

затем

 wakeLock.acquire();
  

Я думаю, что это ошибка Samsung, но я не уверен в этом, и если кто-нибудь может дать мне подсказку, я был бы очень признателен.

P.S. Мне нужна помощь в программировании… Я уже знаю, что если я изменю некоторые настройки вручную, чтобы избежать выключения экрана, это сработает. Но я разрабатываю приложение, и мне нужен код!!

Ответ №1:

Вы должны использовать PARTIAL_WAKE_LOCK в вашем случае.

Я не уверен, почему SCREEN_DIM_WAKE_LOCK этого недостаточно (не нашел никакой документации, которая это оправдывает), но PARTIAL_WAKE_LOCK у меня все отлично работало в аналогичном сценарии.

В качестве другого варианта вы можете использовать WifiLock . Но вам нужно быть умным в этом, поскольку ваше сетевое подключение может быть 2G или 3G, а не только Wi-Fi. Таким образом, вы не должны удерживать блокировку Wi-Fi, когда вы на самом деле используете 3G / 2G / и т.д.

Комментарии:

1. Вы пробовали использовать Galaxy Tab?? потому что я пробовал это, но когда экран выключен, я могу только отправлять, а не получать.. PARTIAL_WAKE_LOCK должен поддерживать работоспособность процессора, но в этом случае кажется, что при выключении экрана это не работает.

2. Да, это работает на Galaxy Tab (я только что перепроверил). Как вы думаете, почему это относится именно к Galaxy Tab?

3. Потому что с другими устройствами, которые я тестирую (LG Optimus One), это действительно работает!! Также я проверяю, но с помощью PARTIAL_WAKE_LOCK прием udp через Wi-Fi не работает, когда экран выключен.. Я думаю, что это ошибка Samsung. Что-то вроде функции энергосбережения.

4. Вам следует протестировать свой код на других устройствах Samsung, посмотреть, сможете ли вы повторить вашу проблему на них.

Ответ №2:

Возможно, вы также захотите проверить расширенные настройки Wi-Fi. В настройках — Настройки Wi-Fi вы можете нажать клавишу меню, щелкнуть значок дополнительно и проверить значение политики ожидания Wi-Fi. Один из вариантов — «Когда экран выключается».

Комментарии:

1. В этих настройках мои отмеченные параметры — «Никогда». Также мне нужен ответ по программированию, потому что я разрабатываю приложение.