Android сохраните экран в приложении
-
27-10-2019 - |
Вопрос
У меня есть приложение для 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. Анкет и вы можете найти объяснение в его книга очень хороший