2016-01-06 1 views
16

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

  1. нет экрана блокировки - выключен
  2. сна набор «никогда»
  3. Daydream установлен в положение «выключено»

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

+0

вы можете написать фоновую службу, которая делает это? –

+0

Поскольку мое устройство коренится, что делать, если другое приложение пытается заблокировать или спящий режим на устройстве. – Chitrang

+0

Не думайте, что это даже имеет значение, если оно коренится или нет ... да, я не уверен, что даже постоянное обслуживание может постоянно переопределять все –

ответ

-1

Так из вариантов разработчика лучшее, что вы можете получить 30 минут или так «Wake» ...

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

  1. Keep Screen On
  2. Stay Alive
  3. Wakey

UPDATE

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

Посмотрите здесь how to use the WakeLock

+0

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

+0

Обновлен ответ – TejjD

4

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

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

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

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(); 

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

/** 
    * 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); 
} 

(Source)

+0

Q1- Как написать «Системное обслуживание»? Q2 - Ваша ссылка для ответа говорит, что метод thia изображен, будет ли он работать с Lollipop os? – Chitrang

+0

Системное обслуживание: http://stackoverflow.com/questions/6649810/how-to-add-our-own-system-service-in-android-framework – AndroidMechanic

+0

Для устаревших методов просто прекрасны последние альтернативы. – AndroidMechanic

6
  1. режим разработчика Activate
  2. перейти к опции разработчика
  3. очередь на «Stay awake»
+0

@Abdrew ..Пожалуйста, поймите вопрос правильно. – Chitrang

+0

Что касается предотвращения доступа других приложений к корневому доступу, чтобы они не могли изменить ваши настройки? –

+0

Да, это одна из причин, и для этого я упоминал, что мне нужно сделать это с системными файлами, а не с каким-либо ручным решением. – Chitrang

1

Чтобы предотвратить спящий режим при определенном просмотре, просто позвоните 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) и, конечно же, корневым.

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

Источник: https://stackoverflow.com/a/18968753/3125120

2

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

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

Другой альтернативы я могу вспомнить, с помощью некоторого MDM (Управление мобильного устройств) решения от AirWatch/ГОТОПА/SAP Afaria, которые имеют API привилегий для управления устройством.

+0

framework.jar - это java-файл, используемый операционной системой Android. Приложение НЕ сможет изменить это, когда-либо. – apmartin1991

+1

@ apmartin1991 yup, но так как это самотённый телефон, мы можем изменить код и нажать на него изменения. Мы можем прошивать нашу собственную прошивку ... –

1

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

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

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

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

+1

Вы понимаете это полностью, и да, я хочу сделать что-то сложное, но, очевидно, без любое странное поведение после этого. – Chitrang

+0

Спасибо. Пожалуйста, наградите меня, если вы считаете, что я имею право. :) –

0

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

шаги

  1. Включите отладку USB
  2. Connect андроида устройство через USB-кабель
  3. Изменить каталог на android-sdk/platform-tools/
  4. В устройстве проверки терминала подключается команда: $ adb devices
  5. Проблема времени ожидания команды экрана: $ adb shell settings put system screen_off_timeout 60000

Примечание

60000 = 1 минута

Смежные вопросы