2009-11-22 7 views
1

Я искал вокруг, чтобы установить уровень подсветки в приложении на iPhone. Я нашел решение здесь:Изменение уровня подсветки, iPhone

http://www.iphonedevsdk.com/forum/29097-post3.html

У меня есть проблема в том, когда я добавить это в мое приложение, я получаю сообщение об ошибке и предупреждение. Мой код выглядит следующим образом:

#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); 
} 

Я не уверен, что вызывает это. Я также не знаю, что должно быть в моем файле .h здесь, но у меня есть:

NSNumber *previousBacklightLevel; 

EDIT // Изменено

NSNumber *previousBacklightLevel 

в

float previousBacklightLevel; 

как предложено и это отсортировало несовместимые типы в ошибке присваивания.

Теперь осталось:

"_GSEventSetBacklightLevel", ссылки из:

- [MyAppViewController viewWillAppear:] в MyAppViewController.o

- [MyAppViewController applicationWillTerminate] в MyAppViewController.o

символ (ы) не найден

collect2: ld 1 статус выхода

Не знаете, как исправить это!

Любая помощь будет оценена,

// EDIT

Все проблемы, упорядоченные. Спасибо всем, кто помог мне. Я действительно ценю это и не могу дождаться, пока я немного вернусь, отвечая на некоторые вопросы.

Большое спасибо,

Stu

+0

Все проблемы отсортированы. Спасибо всем, кто помог мне. Я действительно ценю это и не могу дождаться, пока я немного вернусь, отвечая на некоторые вопросы. – Stumf

+0

Возможный дубликат: http://stackoverflow.com/questions/4740261/iphone-brightness-private-api-not-working-properly – Max

+0

частный API или нет, есть ли способ изменить уровень подсветки в IOS 4.2? Если кто-то может любезно предоставить свои частные заголовки API и т. Д., Это будет большой помощью? Приложения, которые хотят использовать энергосбережение, должны иметь возможность изменять уровень подсветки ... – jcpennypincher

ответ

5

Причина вы получаете предупреждение, потому что GSEventSetBacklightLevel() является частным API не объявлен ни в одном из заголовков SDK. Если вы планируете отправить это в магазин приложений, ваше приложение будет отклонено, если вы его вызовете. Если это для джейлбрейк-устройства, вы можете просто объявить эту функцию самостоятельно.

void GSEventSetBacklightLevel(float level); 

Причина вы получаете сообщение об ошибке, потому что вы пытаетесь присвоить поплавок (который является скаляром) к NSNumber *. Вероятно, вы захотите изменить прежнее значениеBacklightLevel на float.

+0

Хммм, все еще не могу заставить это работать, не могли бы вы дать мне еще какой-нибудь код, чтобы я мог видеть, как он должен выглядеть? – Stumf

+0

Что вы не можете заставить работать? Избавиться от предупреждения или разрешить ошибку? –

+0

Все еще не может избавиться от ошибки: несовместимые типы в назначении и теперь получили ошибку: несовместимый тип для аргумента 1 из 'GSEventSetBacklightLevel. Я добавил void GSEventSetBacklightLevel (float level); в файл GraphicsServices.h. Это решило предупреждение. Не знаю, как исправить мои ошибки. Что должно быть объявлено в моем .h и есть ли что-то, что нужно изменить в моем .m? Что именно это нужно изменить для поплавка? Спасибо – Stumf

2

Вы можете добавить частную структуру с помощью ЮС перетаскиванием на свой Xcode проект из/Developer/Платформы/iPhoneOS.platform/Разработчик/SDKs/iPhoneOS4.2.sdk/System/Library/PrivateFrameworks/GraphicsServices.framework а также импортировать заголовок #import "GraphicsServices.h".h file

+0

Все еще получаю ошибку. Не удалось fin 'GraphicsServices.h'. – Hemang