Как сделать устройство Android всегда в режиме пробуждения?

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

  • Нет блокировки экрана - выключен
  • Спящий режим установлен на "никогда"
  • Мечта отключена.

Что я нашел, это все о прикладном уровне, то есть есть некоторые приложения, которые могут выполнять выше задачи. Но поскольку моя мобильная связь коренится, я хочу достичь системных файлов, чтобы даже если некоторые другие приложения попытались изменить выше функциональные возможности, они не должны этого делать.

Ответы

Ответ 1

  • Активировать режим разработчика
  • перейти к опциям разработчика
  • включить "Бодрствовать"

Ответ 2

Ваш основной вариант использования выглядит следующим образом (из вашего вопроса)

Даже если некоторые другие приложения пытаются изменить выше функциональные возможности то они не должны этого делать

Вы можете написать системную службу для запуска PowerManager.WakeLock через регулярные промежутки времени. (Источник)

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

// screen and CPU will stay awake during this section

wl.release();

Чтобы оптимизировать службу, вы также можете попробовать установить тайм-аут экрана максимально возможное снова с регулярными интервалами, чтобы даже при изменении вручную оно получило reset. (не уверен, сколько допустимо max, вам нужно проверить с проб и ошибок)

  /**
   * set screen off timeout
   * @param screenOffTimeout int 0~6
   */
private void setTimeout(int screenOffTimeout) {
    int time;
    switch (screenOffTimeout) {
    case 0:
        time = 15000;
        break;
    case 1:
        time = 30000;
        break;
    case 2:
        time = 60000;
        break;
    case 3:
        time = 120000;
        break;
    case 4:
        time = 600000;
        break;
    case 5:
        time = 1800000;
        break;
    default:
        time = -1;
    }
    android.provider.Settings.System.putInt(getContentResolver(),
            Settings.System.SCREEN_OFF_TIMEOUT, time);
}

(Источник)

Ответ 3

Я думаю, вам нужно будет изменить структуру... Создайте framework.jar и нажмите на него.

Вы можете сослаться на эту ссылку, чтобы узнать, как изменить код рамки - Изменить код Java в файле framework.jar и https://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-2-hacking-around/

Другим вариантом, о котором я могу думать, является использование решения MDM (Mobile device management) от Airwatch/SOTI/SAP Afaria, у которых есть привилегированные API для управления устройством.

Ответ 4

Чтобы предотвратить спящий режим на определенном представлении, просто вызовите setKeepScreenOn(true) в этом представлении или установите для свойства keepScreenOn значение true.

По очереди это предотвратит выключение экрана, когда на экране отображается "Вид". Он работает, не требуя разрешения WAKE_LOCK (или любого специального разрешения), что является лучшей практикой здесь.

Кроме того, это не заставит телефон бодрствовать вне срока службы приложения. Вы можете столкнуться с этой проблемой с помощью WakeLock

Вы можете интегрировать вышеуказанный метод с другим подходом, чтобы получить полное решение (вне прикладного уровня):

Из корневой оболочки (например, оболочки adb) вы можете заблокировать:

echo mylockname >/sys/power/wake_lock 

After which the device will stay awake, until you do:

echo mylockname >/sys/power/wake_unlock    

С той же строкой для "mylockname".

Обратите внимание, что это не помешает экрану черным, но это предотвратит спящий режим процессора.

Обратите внимание, что /sys/power/wake_lock - это чтение и запись для пользовательского радио (1001) и групповой системы (1000), и, конечно же, root.

Источник: https://lwn.net/Articles/479841/

Источник: fooobar.com/questions/45203/...

Ответ 5

Итак, внимательно прочитав ваш вопрос, я обнаружил, что вы не ищете программного решения. Вы не хотите устанавливать приложение, чтобы сделать то, что вам нужно, - это изменить системный файл, чтобы автоматически выполнять эту функцию.

В основном вы хотите изменить файл, который подвергает свои методы другим приложениям классом PowerManager, чтобы контролировать время сна и блокировку бодрствования. Две вещи, которые вам нужно знать здесь:

  • Системный файл, который вы ищете, доступен в формате jar не в тексте или в любой другой форме.
  • Если вы каким-то образом найдете этот файл и начнете играть с ним, тогда вы закончите разбивку скомпилированной версии флеш-памяти Android, и после этого ваш телефон может ошибочно ошибиться.

Заключение Я понимаю, что вы хотите сделать что-то сложное, делая это, но, к сожалению, это невозможно сделать, и даже если вы сделаете это, играя с этим файлом, все операции вашего телефона, обработанные классом PowerManager, начнут играть с вами.:)

Ответ 6

Если вы хотите увеличить тайм-аут экрана с помощью команды adb shell, выполните следующие шаги:

Шаги

  • Включение отладки USB
  • Подключить устройство Android через USB-кабель.
  • Измените каталог на android-sdk/platform-tools/
  • В устройстве проверки терминала подключается команда: $ adb devices
  • Ошибка тайм-аута экрана: $ adb shell settings put system screen_off_timeout 60000

Примечание

60000 = 1 минута

Ответ 7

Итак, из параметров разработчика лучшее, что вы можете получить, это 30 минут или около того "Wake"...

В соответствии с this, есть несколько хороших приложений, которые могут переопределить функциональность и поддерживать экран неограниченно:

ОБНОВЛЕНИЕ

Вам нужно будет провести исследование того, как файловая система Android структурирована и как она работает, а затем перейти и изменить ее основные файлы. Нет простого способа сделать то, что вам нужно. Единственный способ - создать Android-приложение, которое никогда не будет иметь onDestroy() и будет непрерывно работать в фоновом режиме. Вы можете использовать WakeLock для достижения этого.

Посмотрите как использовать WakeLock