2010-02-08 12 views
9

मेरे पास एक ऐसा एप्लिकेशन है जिसके लिए आईफ़ोन स्क्रीन सक्रिय रहने की आवश्यकता है (या नहीं, उपयोगकर्ता पसंद के आधार पर)। मैंने एप्लिकेशन निष्क्रिय टाइमर को अक्षम करके ऐसा किया है, जो MPMusicPlayerController के माध्यम से मीडिया चलाने शुरू होने तक ठीक और बेवकूफ काम करता है। एसडीके में एक बग के कारण, यह निष्क्रिय निष्क्रिय टाइमर को फिर से अक्षम करने के लिए कोई स्पष्ट तरीका नहीं देता है।स्क्रीन लॉकिंग सक्षम करने से MPMusicPlayerController को कैसे रोकें

मेरा ऐप प्रवाह है:

  1. अनुप्रयोग
  2. स्क्रीन
  3. < पर रहता है शुरू होता है ... जैसे समय बीतता जाता ... >
  4. प्ले ऑडियो फ़ाइल
  5. में निष्क्रिय टाइमर किक
  6. स्क्रीन
बंद हो जाती है

मेरे पास गहरी नींद में फोन रोकने के लिए पृष्ठभूमि में एक खाली ऑडियो फ़ाइल चल रही है, लेकिन मैं वास्तव में स्क्रीन को अनलॉक करना चाहता हूं।

क्या कोई इस के लिए एक समाधान तैयार करने में कामयाब रहा है?

+0

क्या आपने 'idleTimerDisabled' को 'YES' पर सेट किया है? – kennytm

+0

हाँ। IdleTimerDisabled को MP पर रीसेट किया जाता है जब MPMusicPlayerController चालू होता है और आप इसे फिर से अक्षम नहीं कर सकते हैं। – tddmonkey

+0

इस समस्या के साथ कोई भाग्य? सभी समाधानों का प्रयास किया लेकिन उनमें से कोई भी काम नहीं किया। –

उत्तर

0

आपको बस निष्क्रिय टाइमर बंद करना चाहिए।

- (void) viewWillAppear:(BOOL)animated 
{ 
    [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; 
} 

- (void) viewWillDisappear: (BOOL) animated 
{ 
    [[UIApplication sharedApplication] setIdleTimerDisabled: NO]; 
} 

यह सुनिश्चित करें कि स्क्रीन उपयोगकर्ता निष्क्रियता के कारण वंचित न देगा: क्या मैं आमतौर पर एक ViewController 'जाग' रहने की जरूरत है कि में क्या यह है।

+0

St3fan, मैंने इसे ऐप स्टार्टअप पर किया है, इस तथ्य से सत्यापित किया गया है कि जब तक संगीत बजाना शुरू नहीं होता तब तक फ़ोन सो नहीं जाता है। जैसा कि मैंने कहा, जैसे ही MPMusicPlayerController सक्रिय होता है, यह निष्क्रिय टाइमर को पुन: सक्षम करता है और आप इसे फिर से अक्षम नहीं कर सकते – tddmonkey

1

मुझे इस समस्या का समाधान मिला। संगीत चलाने शुरू करने के बाद लगभग 5 सेकंड में idleTimer को अक्षम करने वाली विधि को आमंत्रित करें। यह एक हैक का थोड़ा सा है, लेकिन यह एक कामकाज है।

[[SoundEngine mainEngine] playMusic]; 

[self performSelector:@selector(setIdleTimeDisabled) withObject:nil afterDelay:5.0]; 

- (void) setIdleTimeDisabled { 
[UIApplication sharedApplication].idleTimerDisabled = YES; 
NSLog(@"Setting idleTimer to TRUE");} 
5

मुझे एक समान समस्या थी, और इसके लिए एक फिक्स मिला। फिक्स आपके लिए भी काम कर सकता है:

मैं समय-समय पर (प्रत्येक 10 सेकंड) विधि को कॉल करता हूं, जो पहले idleTimerDisabled को पहले से सेट करता है, फिर हां तक।

- (void)calledEveryTenSeconds 
{ 
    [UIApplication sharedApplication].idleTimerDisabled = NO; 
    [UIApplication sharedApplication].idleTimerDisabled = YES; 
} 

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

मेरी समस्या यह थी कि जैसे ही मैंने आईपॉड प्लेयर पर हेडफोन रिमोट के माध्यम से संगीत ट्रैक स्विच किया, स्क्रीन अंधेरा हो रही थी। मेरा अनुमान है कि यह वही समस्या है जैसा आप अनुभव कर रहे हैं।

+0

henning77, इसके लिए धन्यवाद !! मैं इसे अपनी विधि का उपयोग करके अपने नए ऐप में काम करने में कामयाब रहा। कई लोगों ने प्रश्न/समस्या को सामान्य तरीके से गलत तरीके से गलत तरीके से अक्षम करने के तरीके को गलत समझा। लेकिन यह MPMUSICPLAYER मुद्दे को चलाने के बाद के बारे में है। IdleTimerDisabled = नहीं; वास्तव में आलोचनात्मक है। यह इसके बिना काम नहीं करेगा। – GeneCode

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