Question

J'ai une application Android qui offre un service de premier plan, et bien que le service est en cours d'exécution, je voudrais donner à l'utilisateur la possibilité de garder l'écran.

J'ajouté à mes préférences de paramètres, une préférence de cases à cocher et si cela est vrai, je voudrais garder l'écran, mais faites-le sur off par défaut. Il est juste quelque chose que mes utilisateurs ont demandé. À l'heure actuelle j'ai la préférence, mais quand je lance le service de mon écran se ferme d'ici est encore ce que je l'ai fait

variable globale

private static final String PREFS_DEVICE = "DeviceInfo";

code et instruction 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();
            }

puis j'ai ajouté à mon manifeste

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

Y at-il quelque chose que je fais mal. Y at-il une autre façon de le faire à partir d'un service ou est-il tout simplement pas possible d'un service (espoir qui n'est pas le cas).

Était-ce utile?

La solution

Essayez ceci:

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

Autres conseils

Vous pouvez utiliser FLAG_KEEP_SCREEN_ON flag

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

et quand vous ne voulez pas continuer à

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

De cette façon est beaucoup mieux, d'utiliser BCZ moins les autorisations, les services et le COF batterie :

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;
}

ÉDITÉ

Suivre le modèle Mark Murphy offre la WakefulIntentService . et vous pouvez trouver l'explication dans son livre très bon

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top