2011-11-29 13 views
27

मैं अपने ऐप में सिस्टम पृष्ठभूमि प्रकाश बदलने के लिए [[यूआईस्क्रीन मुख्यस्क्रीन] सेटब्राइटनेस:] (एसडीके 5.0 में) का उपयोग करता हूं।आवेदन WillResignActive और setBrightness काम नहीं कर रहा है?

निम्न चरणों को मेरी ऐप्लिकेशन के साथ काम:

  1. सक्रिय अनुप्रयोग, डिफ़ॉल्ट के रूप में प्रणाली चमक मिल तो sysBright रूप में सहेजें।

  2. मेरे ऐप के साथ चमक बदलें, चमक बदल दीजिए, फिर ऐप के रूप में सहेजें।

  3. घर बटन या लॉक बटन के साथ ResignActive ऐप, sysBright (चरण 1 मान, सिस्टम डिफ़ॉल्ट चमक) के लिए चमक सेट करें।

  4. सक्रिय ऐप फिर से। तो यह ऊपर के चरणों को 3.

कुछ प्रपत्र 1 दोहराया जाएगा चरण 3, जब मैं ताला बटन के साथ एप्लिकेशन को निष्क्रिय, समारोह applicationWillResignActive अच्छी तरह से काम करता है, यह चमक मूल्य बहाल कर सकते हैं साथ कुछ गड़बड़ है (sysBright)।

लेकिन जब मैं घर बटन दबाता हूं, तो यह अब काम नहीं करता है। चमक अभी भी मेरे ऐप में बदल गया मूल्य है। (ऐपब्राइट)

क्या किसी को इसके बारे में कोई जानकारी है?

कुछ
float appBright,sysBright; 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    sysBright = [[UIScreen mainScreen] brightness]; 
    [[NSUserDefaults standardUserDefaults] setFloat:sysBright forKey:@"sysBright"]; 

    [[UIScreen mainScreen] setBrightness:appBright]; 
} 

//doesn't work when i ResignActive with the home button 
- (void)applicationWillResignActive:(UIApplication *)application 
{   
    [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"]; 
    [[UIScreen mainScreen] setBrightness:sysBright];   
} 

मुझे याद आ रही: किसी भी मदद ~

यहाँ के लिए धन्यवाद कोड है?

+0

क्या आपको कोई कामकाज मिला है? मुझे एक ही समस्या का सामना करना पड़ा। सेटिंग्स में चमक मूल्य बिल्कुल प्रभावित नहीं होता है। –

+0

एक ही चीज़ की आवश्यकता है, यदि आपके पास कुछ भी है तो कृपया अपना समाधान साझा करें। धन्यवाद – Mangesh

+1

एक काले अर्ध-पारदर्शी UIView के साथ जा रहा है और निकटता API –

उत्तर

0

होम बटन को अपने आवेदन सक्रिय इस्तीफा देने नहीं करता नल बल्कि "पृष्ठभूमि मोड" में चला जाता है और अपने स्वयं के प्रतिनिधि विधि है जो आप परिभाषित करने की जरूरत है जब: (

- (void)applicationDidEnterBackground:(UIApplication *)application 

कुछ इस तरह के अलावा applicationDidBecomeActive: प्रतिनिधि विधि के लिए) अभिप्रेत व्यवहार मिलना चाहिए:

- (void)applicationDidEnterBackground:(UIApplication *)application 
{   
    sysBright = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"]; 
    [[UIScreen mainScreen] setBrightness:sysBright]; 
} 
+0

धन्यवाद आईओएस में काम करता है लेकिन यह अभी भी काम कर रहा है नहीं ... मैंने कोशिश की: - (शून्य) applicationDidEnterBackground: (UIApplication *) आवेदन { NSLog (@ "अनुप्रयोग है पृष्ठभूमि में चल रहा है "); // ब्राइटनेस सामान्य पर वापस सेट करें [[यूआईस्क्रीन मुख्यस्क्रीन] सेटब्राइटनेस: sysBright]; } ' और यह मुझे होम बटन दबाकर मुझ पर टिप्पणी करता है लेकिन चमक को बदलता नहीं है ?! –

+0

शेष कार्यक्रम के बारे में निश्चित नहीं है लेकिन फिर आपको शायद उपयोगकर्ता डिफ़ॉल्ट से sysBright चर वापस प्राप्त करने की आवश्यकता होगी। मेरे मूल उत्तर –

+2

में अपना अपडेट किया गया कोड देखें अपना नया सुझाव आजमाएं लेकिन अभी भी कोई भाग्य नहीं है। मैं एप्लिकेशन में सही sysBright मान NSLog कर सकता हूं DidEnterBackground विधि लेकिन यह वास्तव में चमक को बदल नहीं पाएगा। एप्लिकेशन में चमक बदलती है WillEnterForeground जब मैं एक ही कोड का उपयोग करके ऐप बैक अप खोलता हूं! बहुत परेशान! –

0

अंतिम पंक्ति के दूसरे, आप sysBright चर निर्दिष्ट नहीं किया।

sysBright = [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"]; 
[[UIScreen mainScreen] setBrightness:sysBright];   
+0

सुझाव के लिए धन्यवाद लेकिन यह अभी भी काम नहीं कर रहा है –

+0

मुझे लगता है कि अब तक ऐसा करना असंभव है, लेकिन मैंने एक अजीब कामकाज किया है जिसमें एक छवि दृश्य को 0.9 अस्पष्टता के साथ काले आयताकार के रूप में सेट किया गया है। यदि मैं ईमानदार हूं, तो एक आकर्षण काम करता है, बस निराशाजनक है कि मैंने [यूआईस्क्रीन सेटब्राइटनेस] शामिल समाधान खोजने के बिना इतना समय बर्बाद कर दिया; –

+0

मैंने इसे अपने ऐप में अभी कोशिश की, यह बहुत अच्छा काम कर रहा है। सुनिश्चित करें कि चमक मान 0 और 1 के बीच है और एक फ्लोट है। – Tim

1

के बाद से वर्तमान तरीकों एप्लिकेशन प्रतिनिधि तरीकों में काम नहीं करते हैं, तो आप एक UIView के रूप में एडम द्वारा वर्णित उपयोग कर सकते हैं। तब

UIView *view_; 

कार्यान्वयन में:

प्रतिनिधि ज फ़ाइल में एक UIView lvar बनाओ

// create view in app delegate didFinishLaunchingWithOptions method and add it to the window 
view_ = [[UIView alloc] initWithFrame:self.window.frame]; // delegate lvar 
[view_ setBackgroundColor:[UIColor blackColor]]; 
[view_ setAlpha:0.5]; 
[self.window addSubview:view_]; 
[self.window makeKeyAndVisible]; 
return YES; 

रूप में की जरूरत व्यू स्क्रीन या दृश्य नियंत्रक के आकार बनाओ। और सुनिश्चित करें कि यह अन्य सभी सबव्यू के शीर्ष पर है।

ध्यान रखें कि ऐप के ग्राफिक्स प्रदर्शन पर इसका महत्वपूर्ण प्रभाव पड़ेगा, लेकिन जब तक आप यूआई के साथ कुछ पागल नहीं कर रहे हैं, तो यह ठीक होना चाहिए।

+0

हाँ, मैंने पहले ही इसे अपनी टिप्पणियों से उठाया है, लेकिन मैं इसे इस तरह से नहीं करना चाहता हूं। आप सबव्यू के मुकाबले स्टेटस बार स्तर पर एक नई विंडो के रूप में इसे करने से बेहतर भी होंगे, अन्यथा आपको इसे हर समय सामने ले जाना होगा! – jrturton

+0

यह एक हैक है, मुझे पता है, लेकिन यह मेरे ऐप्स के लिए काम करता है। उम्मीद है कि भविष्य में एक फिक्स होगा। – TigerCoding

+0

यह मेरी स्थिति में मदद नहीं करता है, मैं बैटरी उपयोग को कम करने के लिए बैकलाइट को कम कर रहा हूं। – progrmr

1

क्या आपने UIApplicationWillResignActiveNotification के लिए अपना मुख्य दृश्य नियंत्रक (या जो भी वस्तु है) को पंजीकृत करने का प्रयास किया है जिसे applicationWillResignActive निष्पादित करने के बाद भेजा गया है?

इससे आपको applicationWillResignActive के बाहर चमक को संशोधित करने का मौका मिलेगा। यह नहीं पता कि यह विधि कोई फर्क पड़ती है, लेकिन कोशिश करनी आसान होनी चाहिए।

सीधे शब्दों में कहते हैं:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResign) name:UIApplicationWillResignActiveNotification object:nil]; 

तो निर्धारित करें:

- (void)appWillResign { 
    [[NSUserDefaults standardUserDefaults] floatForKey:@"sysBright"]; 
    [[UIScreen mainScreen] setBrightness:sysBright];   
} 
+0

अच्छा विचार, लेकिन नहीं, एक ही परिणाम। मुझे लगता है कि जवाब सिर्फ एक बग फाइल करने के लिए है। मेरा मतलब है वास्तव में, ऐप-ऐप चमक परिवर्तन पूरे डिवाइस को प्रभावित करने में सक्षम नहीं होना चाहिए - या शायद नहीं। iBooks एक ही मुद्दा है। वहां चमक चमकना एक वैश्विक सेटिंग है। – jrturton

10

मैं यहाँ एक ऐसी ही सवाल का जवाब दे: IOS5 setBrightness didn't work with applicationWillResignActive

iOS इन-ऐप चमक को महत्व देता बनाए रखने के लिए नहीं होती है। ऐप को सक्रिय, छोड़ने, क्रैश इत्यादि से इस्तीफा देने के बाद इसे सिस्टम वैल्यू बहाल करना चाहिए। इसलिए आधिकारिक तौर पर एप्लिकेशन में ऐसा करने की आवश्यकता नहीं है WillResignActive।

लेकिन यह काम नहीं करता है। यह एक बग है। वास्तव में यह काम करता है यदि आप किसी अन्य ऐप पर स्विच करने का प्रयास करते हैं। होम बटन दो बार दबाने का प्रयास करें और आपकी चमक समाप्त हो गई है।

अपना समय बर्बाद न करें ऐप्पल को एक बग रिपोर्ट फ़ाइल करें (मैंने अच्छा किया)।

स्क्रीन अनलॉक डिफ़ॉल्ट सिस्टम चमक बहाल करता है। केवल दो बार पावर बटन दबाएं और मूल चमक को पुनर्स्थापित करने के लिए अनलॉक करें।

अद्यतन: मेरी बग रिपोर्ट बंद कर दी गई थी क्योंकि ऐप्पल के अनुसार यह एक बग नहीं है। यह अजीब है।

+1

https://devforums.apple.com/thread/139813?start=0&tstart=0 –

+0

एक बग रिपोर्ट फ़ाइल करें। एप्पल प्राथमिकता उन्हें डुप्लिकेट की संख्या के आधार पर ठीक करता है। इससे आपको यह भी मदद मिलती है कि क्या आप समझते हैं कि फिक्स उपयोगकर्ता अनुभव को कैसे बेहतर करेगा। मैं इसे फिर से फाइल करने जा रहा हूं भले ही आपका बंद हो गया हो। – progrmr

+1

आईओएस 8 में फिक्स्ड! – jjxtra

-1

क्या आपने सिंक्रनाइज़ेशन किया था?

[[NSUserDefaults standardUserDefaults] synchronize]; 
+0

ये, यह नहीं है –

संबंधित मुद्दे