Ответ 1
- Активировать режим разработчика
- перейти к опциям разработчика
- включить "Бодрствовать"
После успешного использования устройства. Теперь мне нужно сделать устройство всегда в состоянии пробуждения, т.е. Всегда видимость пользовательского интерфейса, а не черный экран или экраны дневного света. Для этого я должен выполнить следующее:
Что я нашел, это все о прикладном уровне, то есть есть некоторые приложения, которые могут выполнять выше задачи. Но поскольку моя мобильная связь коренится, я хочу достичь системных файлов, чтобы даже если некоторые другие приложения попытались изменить выше функциональные возможности, они не должны этого делать.
Ваш основной вариант использования выглядит следующим образом (из вашего вопроса)
Даже если некоторые другие приложения пытаются изменить выше функциональные возможности то они не должны этого делать
Вы можете написать системную службу для запуска 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);
}
(Источник)
Я думаю, вам нужно будет изменить структуру... Создайте 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 для управления устройством.
Чтобы предотвратить спящий режим на определенном представлении, просто вызовите 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/...
Итак, внимательно прочитав ваш вопрос, я обнаружил, что вы не ищете программного решения. Вы не хотите устанавливать приложение, чтобы сделать то, что вам нужно, - это изменить системный файл, чтобы автоматически выполнять эту функцию.
В основном вы хотите изменить файл, который подвергает свои методы другим приложениям классом PowerManager, чтобы контролировать время сна и блокировку бодрствования. Две вещи, которые вам нужно знать здесь:
Заключение Я понимаю, что вы хотите сделать что-то сложное, делая это, но, к сожалению, это невозможно сделать, и даже если вы сделаете это, играя с этим файлом, все операции вашего телефона, обработанные классом PowerManager, начнут играть с вами.:)
Если вы хотите увеличить тайм-аут экрана с помощью команды adb shell, выполните следующие шаги:
Шаги
$ adb devices
$ adb shell settings put system screen_off_timeout 60000
Примечание
60000 = 1 минута
Итак, из параметров разработчика лучшее, что вы можете получить, это 30 минут или около того "Wake"...
В соответствии с this, есть несколько хороших приложений, которые могут переопределить функциональность и поддерживать экран неограниченно:
ОБНОВЛЕНИЕ
Вам нужно будет провести исследование того, как файловая система Android структурирована и как она работает, а затем перейти и изменить ее основные файлы. Нет простого способа сделать то, что вам нужно. Единственный способ - создать Android-приложение, которое никогда не будет иметь onDestroy() и будет непрерывно работать в фоновом режиме. Вы можете использовать WakeLock для достижения этого.
Посмотрите как использовать WakeLock