Modification de la luminosité du rétroéclairage sur iPhone Programmatically
Question
Est-ce que le kit de développement fournissent un moyen de changer la luminosité du rétro-éclairage, ou la désactiver temporairement?
La solution
Non. Ce n'est pas disponible dans le SDK. Si c'est quelque chose que vous pensez serait utile, je vous suggère une demande d'amélioration .
Autres conseils
Je suis en train de faire la même chose. Comme il arrive il y a des postes de numéro là-bas dans les internets avec des « solutions » pour cela.
La plus détaillée est succincte
Le problème est que je l'ai essayé ces derniers et tous comptent sur appeler cette fonction
GSEventSetBacklightLevel();
qui a besoin de cette tête à importer
#import <GraphicsServices/GraphicsServices.h>
Et que l'importation échoue dans le SDK de reporting que le fichier d'en-tête ne peut pas être trouvé.
Je l'ai cherché une solution, mais ne l'ai pas trouvé. On parle de « construire la toolchain » (pour la meilleure description que j'ai trouvé voir ici ) mais cela semble impliquer sans passer par le SDK tout à fait. drastique Jolie.
Résumé: Il est possible, mais pas avec le SDK iPhone norme. J'imagine une mise à jour du SDK viendra bientôt qui devrait permettre cela.
Faites-moi savoir si vous trouvez une autre solution.
-(void)changeLight{
GSEventSetBacklightLevel(float number);//number between 0.0 - 1.0
}
appeler la méthode ci-dessus en utilisant
[self performSelector:@selector(changeLight) withObject:nil afterDelay:0.0];
vous pouvez ajouter le cadre privé par simple glisser-déposer à votre projet Xcode de /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework.
Ajoutez également #import en-tête "GraphicsServices.h" dans votre fichier .h .. Rappelez-vous: puisque vous utilisez cadre privé, vous demande rejettera en push app store
Dans mon SDK (5.0.1), il semble que « GraphicsServices.h » est plus là, mais vous pouvez déclarer vous-même comme ceci:
void GSEventSetBacklightLevel(float level);
Notez que l'éditeur de liens se plaindra, sauf si vous incluez le GraphicsServices.framework-cadre dans votre projet.
A propos de votre question au sujet de tourner le rétro-éclairage, je trouve que vous pouvez le faire en passant un nombre négatif très important à GSEventSetBacklightLevel, comme ceci:
GSEventSetBacklightLevel(-INFINITY);
Dans mes tests ce sera complètement noir sur l'écran.
Rappelez-vous que cela pourrait encore causer le burn-in dans les pixels LCD si vous affichez des graphiques statiques, même lorsque le rétro-éclairage est éteint. Et que cet appel entraînera le rejet si submitteed à l'App Store.
essayez ce code. J'espère que cela aide ...
// dans viewWillAppear
float prevBrightnessLevel = [UIScreen mainScreen] .brightness;
[UIScreen mainScreen] .brightness = 1,0;
// dans viewWillDisappear
[UIScreen mainScreen] = .brightness prevBrightnessLevel;