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



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

1418   7  

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, правильно во всех аспектах, блокировка пробуждения-это правильный способ удержать устройство от сна.

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

Я бы указал вам на это действительно хороший пример как использовать AlarmManager to пожарные события и разбудить телефон и (ваше приложение), чтобы выполнить то, что вам нужно сделать, а затем снова заснуть: Alarm Manager (источник: commonsware.com)

Comments

    Ничего не найдено.