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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top