Вопрос

У меня есть приложение для Android, которое запускает службу переднего плана, и, хотя эта служба работает, я хотел бы дать пользователю возможность держать экран включенным.

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

глобальная переменная

private static final String PREFS_DEVICE = "DeviceInfo";

Код и оператор IF

SharedPreferences settings = getSharedPreferences(PREFS_DEVICE, 0);
            if(settings.getBoolean("screenPref", false)) {
                final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
                this.mWakeLock.acquire();
            }

А потом я добавил это в свой манифест

<uses-permission android:name="android.permission.WAKE_LOCK" />

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

Это было полезно?

Решение

Попробуй это:

mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,         
                            "");    
mWakeLock.acquire();

Другие советы

Вы можете использовать flag flag_keep_screen_on

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

И когда вы не хотите продолжать

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Таким образом намного лучше, BCZ использования меньше разрешений, услуг и батареи OFC:

public void setWakelock(Activity Target, boolean State)
{
    if (State) Target.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    else Target.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    return;
}

Отредактирован

Следуйте за шаблоном Марк Мерфи WakefulintEntentservice. Анкет и вы можете найти объяснение в его книга очень хороший

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top