Comment rendre l'appareil android toujours en mode veille?

Après le succès de la racine de l'appareil. Maintenant, je dois faire le dispositif toujours dans l'état de veille, c'est-à-dire toujours la visibilité de L'UI et pas d'écran noir ou n'importe quels écrans daydream. Pour ce faire, je pense que je dois accomplir ce qui suit :

  1. pas d'écran de verrouillage-désactivé
  2. Sommeil à "jamais"
  3. Daydream réglé sur "off"

ce que j'ai trouvé est tout au sujet de la couche application c.-à-d. Il y a des applications qui peuvent faire des tâches ci-dessus. Mais puisque mon mobile est enraciné Je veux atteindre avec système de fichiers de sorte que même si d'autres applications essayent de changer les fonctionnalités ci-dessus, elles ne devraient pas pouvoir le faire.

16
demandé sur Chitrang 2016-01-06 10:30:04

7 réponses

  1. Activer le mode développeur
  2. allez à options pour les Développeurs
  3. activer "Rester éveillé"
6
répondu Andrew Lam 2016-01-14 06:41:31

votre cas d'utilisation principale semble être comme suit (à partir de votre question)

même si d'autres applications essayent de changer les fonctionnalités ci-dessus alors ils ne devraient pas être en mesure de le faire

vous pouvez écrire un service système pour déclencher le PowerManager.WakeLock à intervalles réguliers. ( Source)

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();

pour optimiser le service, vous pouvez également essayer de régler le temps d'arrêt de l'écran le maximum possible à nouveau à intervalles réguliers de sorte que même si changé manuellement il est remis. (pas sûr de combien max est admis, vous aurez besoin de vérifier avec essais et erreurs)

  /**
   * set screen off timeout
   * @param screenOffTimeout int 0~6
   */
private void setTimeout(int screenOffTimeout) {
    int time;
    switch (screenOffTimeout) {
    case 0:
        time = 15000;
        break;
    case 1:
        time = 30000;
        break;
    case 2:
        time = 60000;
        break;
    case 3:
        time = 120000;
        break;
    case 4:
        time = 600000;
        break;
    case 5:
        time = 1800000;
        break;
    default:
        time = -1;
    }
    android.provider.Settings.System.putInt(getContentResolver(),
            Settings.System.SCREEN_OFF_TIMEOUT, time);
}