Cambio de la retroiluminación Nivel, el iPhone
-
21-09-2019 - |
Pregunta
Busqué una manera de establecer el nivel de luz de fondo dentro de una aplicación en el iPhone. He encontrado una solución a este problema:
http://www.iphonedevsdk.com/forum/29097-post3.html
El problema que tengo es, cuando agrego esto a mi aplicación me da un error y una advertencia. Mi código es el siguiente:
#include "GraphicsServices.h"
- (void) viewWillAppear:(BOOL)animated
{
NSNumber *bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel" ), CFSTR("com.apple.springboard"));
previousBacklightLevel = [bl floatValue];
//Error here : incompatible types in assignment
[bl release];
GSEventSetBacklightLevel(0.5f);
// Warning here : implicit declaration of function 'GSEventSetBacklightLevel'
}
//...The rest of my app
- (void)applicationWillTerminate:(UIApplication *)TheNameOfMyAppIsHere
{
GSEventSetBacklightLevel(previousBacklightLevel);
}
no estoy seguro de lo que está causando esto. Asimismo, no se sabe muy bien lo que tiene que estar en mi archivo .h aquí, pero tengo:
NSNumber *previousBacklightLevel;
EDITAR // Changed
NSNumber *previousBacklightLevel
a
float previousBacklightLevel;
como se sugiere y esto ordenadas según los tipos incompatibles en el error de asignación.
Ahora dejado con:
"_ GSEventSetBacklightLevel", hace referencia a:
- [MyAppViewController viewWillAppear:] en MyAppViewController.o
- [MyAppViewController applicationWillTerminate] en MyAppViewController.o
símbolo (s) no encontrados
collect2: ld devolvió el código de salida 1
No está seguro de cómo solucionar este problema, ya sea uno!
sería apreciada Cualquier ayuda,
// editar
Todos los problemas ordenados. Gracias a todos los que me ayudó. Realmente lo aprecio y no puedo esperar hasta que puedo dar un poco hacia atrás, respondiendo a algunas preguntas.
Muchas gracias,
Stu
Solución
La razón de que está recibiendo una advertencia se debe a GSEventSetBacklightLevel()
es una API privada no declarado en cualquiera de los encabezados de SDK. Si usted está planeando enviar esto a la tienda de aplicaciones de su aplicación va a ser rechazado si se llama a ella. Si se trata de un dispositivo con jailbreak, puede declarar la función de sí mismo.
void GSEventSetBacklightLevel(float level);
La razón de que está recibiendo el error se debe a que está intentando asignar un flotador (que es un escalar) a una NSNumber *
. Es posible que desee cambiar previousBacklightLevel ser un flotador.
Otros consejos
puede agregar el marco privado arrastrando jus y soltar a su proyecto Xcode desde /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework y también importar la cabecera #import "GraphicsServices.h"
en su archivo .h