2009-07-27 8 views
7

J'ai besoin que mon application fonctionne sans que l'iPhone ne se mette en veille. Mais je voudrais éteindre l'écran. Quelque chose de similaire est fait dans l'application Téléphone, lorsque vous parlez au téléphone.Éteindre l'écran

J'empêche l'iPhone de se mettre en veille de la façon suivante: [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; Mais comment éteindre l'écran? Et comment puis-je le réactiver, lorsque l'utilisateur a touché l'écran?

Merci.

Répondre

5

Mise à jour: Cette méthode a été abandonnée. Voir le commentaire de Timothée Boucher ci-dessous.


Vous pouvez éteindre l'écran via le capteur de proximité, mais il n'existe aucun autre moyen public de mettre l'écran en veille.

-[UIApplication setProximitySensingEnabled:(BOOL)] 
+2

Pour quiconque lisant ceci, au moment de mon commentaire, la méthode a été dépréciée. De la documentation d'Apple: "Déconseillé: les propriétés' proximityMonitoringEnabled' et 'proximityState' de la classe' UIDevice' sont les remplacements. " –

0

Je ne peux pas confirmer qu'il s'agit d'une fonctionnalité publique, mais je sais qu'il y a un capteur de proximité qui peut détecter si le téléphone est près de votre visage ou non. Essayez de creuser et de déterminer si ce capteur est accessible au public, puis quelle fonction pourrait désactiver l'écran.

0

Il n'y a pas de manière officielle (publique) par programme d'activer ou de désactiver l'écran, ou même de changer la luminosité de l'affichage. Quelques applications "simulent" une luminosité en imposant une vue noire transparente sur le dessus de votre vue et en changeant son opacité pour donner l'apparence d'un changement de luminosité (le rétroéclairage restera allumé, cependant, il ne sera jamais On dirait que l'écran est éteint et vous ne sauvegarderez aucune batterie).

0

ya thair est la façon dont vous pouvez utiliser la fonction non documentée GSEventSetBacklightFactor (1); cela rendra l'écran sombre. Si vous remplacez 1 par 0, votre écran sera éteint. Ensuite, vous devez appuyer sur le bouton d'accueil. Pour l'utiliser, vous devez importer un cadre de service graphique cadre prié

+0

Il ne peut pas être activé avec "GSEventSetBacklightFactor (1);" sur un appareil avec la structure 3.1.2. Même le bouton d'accueil n'aide pas, mais ne fait que redémarrer l'appareil (Home + Sleep 10 secondes).Cela fonctionne sur un simulateur. L'appareil est non fissuré. – slatvick

+0

@slatvick - Vous voulez dire "pas jailbreaké", pas "non fissuré". J'espère que ce n'est pas fêlé. – Moshe

2

Eh bien, vous pouvez désactiver complètement la luminosité. Il ne verrouille pas l'écran et l'appareil affiche toujours, mais aucun rétroéclairage LCD ne le rend presque impossible à voir.

- (void) changeSystemBrightness: (NSString *) switchValue { 

if ([[UIScreen mainScreen] respondsToSelector:@selector(setBrightness:)]) { 
    if (switchValue) { 
     if ([switchValue isEqualToString:@"saveDefault"]) { 
      // 
      self.userBrightness = [UIScreen mainScreen].brightness; 
      //NSLog(@"User Brightness: %1.1f", userBrightness); 
     } else if ([switchValue isEqualToString:@"restoreDefault"]) { 
      [UIScreen mainScreen].brightness = self.userBrightness; 
      //NSLog(@"Restore Brightness: %1.1f", userBrightness); 
     } else if ([switchValue isEqualToString:@"min"]) { 
      //[UIScreen mainScreen].brightness = 0; 
     } else if ([switchValue isEqualToString:@"max"]) { 
      [UIScreen mainScreen].brightness = 1; 
     } else if ([switchValue isEqualToString:@"mid"]) { 
      [UIScreen mainScreen].brightness = 0.5; 
     } 
    } else { 
     [UIScreen mainScreen].brightness = self.userBrightness; 
     //NSLog(@"Restore Brightness: %1.1f", userBrightness); 
    } 
} 

}

d'abord sauvegarder le niveau de luminosité du système de l'utilisateur

[self changeSystemBrightness:@"saveDefault"]; 

Après cela, vous pouvez simplement désactiver l'écran:

[self changeSystemBrightness:@"min"]; 

Restaurer la luminosité:

[self changeSystemBrightness:@"restoreDefault"]; 

iOS restaure la luminosité du système par défaut une fois que l'écran est éteint normalement (verrouillage/déverrouillage), vous devez donc le détecter et le gérer.

Questions connexes