7 ответов:
один из вариантов-это использовать Примечание. Пример из документов:
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();и по на этой странице это описывает различные виды wakelocks.
имейте в виду, что некоторые меры предосторожности должны быть приняты при использовании блокировки пробуждения. Убедитесь, что вы всегда
release()замок, когда вы закончите с ним (или не на переднем плане). В противном случае ваше приложение может потенциально вызвать серьезную утечку батареи и использование процессора.в документация также содержит страница это описывает различные подходы к поддержанию устройства в сознании, и когда вы можете выбрать, чтобы использовать один. Если "предотвратить устройство от перехода в спящий режим" относится только к (и не сохраняя процессор активным), то блокировка пробуждения, вероятно, больше, чем вам нужно.
вы также должны быть уверены, что у вас есть номера набор разрешений в манифесте для использования этого метода.
если вы просто хотите, чтобы предотвратить спящий режим на определенный
View, просто позвонитеsetKeepScreenOn(true)наViewи выберитеkeepScreenOnсвойствоtrue. Это позволит предотвратить экран от выключения в то время какViewна экране. Для этого не требуется специального разрешения.
Я нашел другое рабочее решение: добавьте следующую строку в свое приложение под событием onCreate.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);мой пример проекта Cordova выглядит так:
package com.apps.demo; import android.os.Bundle; import android.view.WindowManager; import org.apache.cordova.*; public class ScanManActivity extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); super.loadUrl("http://stackoverflow.com"); } }после этого мое приложение не будет спать, пока оно было открыто. Спасибо, что anwer идет в xSus.
android:keepScreenOn="true"может быть лучшим вариантом, чтобы иметь от макета XML.дополнительная информация:https://developer.android.com/training/scheduling/wakelock.html
установите флаги в окне активности, как показано ниже
@Override public void onResume() { super.onResume(); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } @Override public void onPause() { super.onPause(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); }
из корневой оболочки (например, adb shell), вы можете заблокировать с:
echo mylockname >/sys/power/wake_lockпосле чего устройство будет бодрствовать, пока вы будете делать:
echo mylockname >/sys/power/wake_unlockС той же строкой для 'mylockname'.
обратите внимание, что это не помешает экрану стать черным, но это помешает процессору спать.
обратите внимание, что /sys/power/wake_lock-это чтение-запись для пользовательского радио (1001) и групповой системы (1000), и, конечно же, root.
ссылка здесь: http://lwn.net/Articles/479841/
то, что сказал @eldarerathis, правильно во всех аспектах, блокировка пробуждения-это правильный способ удержать устройство от сна.
Я не знаю, что вам нужно сделать, но очень важно что вы думаете о том, как архитектор вашего приложения, так что вы не заставляете телефон бодрствовать больше, что вам нужно, или срок службы батареи будет страдать чрезвычайно.
Я бы указал вам на это действительно хороший пример как использовать
AlarmManagerto пожарные события и разбудить телефон и (ваше приложение), чтобы выполнить то, что вам нужно сделать, а затем снова заснуть: Alarm Manager (источник: commonsware.com)
Comments