दिलचस्प पोस्ट
अलग ऊंचाई के साथ बूटस्ट्रैप द्रव ग्रिड प्रणाली सी ++: कॉन्स्ट संदर्भ, टाइप-स्पेसिफर के बाद बनाम से पहले 0.0.0.0, 127.0.0.1 और लोकलहोस्ट के बीच अंतर क्या है? सीओएटी के लिए सही जवाब क्या है << a ++ << a ;? ReactJS दो घटक संचार एकाधिक सफेद स्थान निकालें SQL सर्वर के साथ अद्यतन का चयन करें जावा स्ट्रिंग के यूनिकोड कोडपॉइंट्स के माध्यम से मैं कैसे पुनरावृत्त हो सकता हूं? ट्रेसबैक के बिना पायथन से बाहर कैसे जाए? पायथन कई तारों की जगह लेता है Angular2 रूपों में इनपुट मुखौटा फ़ील्ड उद्देश्य-सी पूर्णांक के लिए हेक्स स्ट्रिंग को पार्स करना एक्स बाइट्स की स्मृति आकार को सीमित किया गया Android में अलार्म कैसे सेट करें? यदि स्ट्रिंग मूल रूप से रूबी का उपयोग करके उद्धरणों में एक पूर्णांक है, तो जांचें?

आईओएस 7: MPMusicPlayerController वॉल्यूम बहिष्कृत। डिवाइस के वॉल्यूम को अब कैसे बदला जाए?

MPMusicPlayerController setVolume आईओएस 7 के बाद से पदावनत किया गया है

सिस्टम संगीत की मात्रा बदलने का कोई अन्य तरीका क्या है? अधिमानतः उपयोगकर्ता के संपर्क के बिना। इसकी महत्वपूर्ण विशेषता: ऐपस्टोर से किसी अलार्म घड़ी के लिए स्वचालित रूप से वॉल्यूम बढ़ाने के लिए।

वेब के समाधान से एकत्रित समाधान "आईओएस 7: MPMusicPlayerController वॉल्यूम बहिष्कृत। डिवाइस के वॉल्यूम को अब कैसे बदला जाए?"

वास्तव में आपके प्रश्न का उत्तर देने के लिए: हाँ, उपयोगकर्ता इंटरैक्शन के बिना सिस्टम वॉल्यूम बदलने का दूसरा तरीका है।

हाल के समय तक मैं सोचता था कि MPVolumeView प्रोग्राम का उपयोग करके मात्रा बदलने से केवल निजी एपीआई का उपयोग करना संभव है । लेकिन मैंने अभी सत्यापित किया है, कि वॉल्यूम स्लाइडर का मूल्य बदलना और स्लाइडर का टचअप इवेंट काम करने वाला है:

MPVolumeView* volumeView = [[MPVolumeView alloc] init]; //find the volumeSlider UISlider* volumeViewSlider = nil; for (UIView *view in [volumeView subviews]){ if ([view.class.description isEqualToString:@"MPVolumeSlider"]){ volumeViewSlider = (UISlider*)view; break; } } [volumeViewSlider setValue:1.0f animated:YES]; [volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside]; 

(जब स्लाइडर टचअप इवेंट प्राप्त करता है, तो वह _commitVolumeChange ही _commitVolumeChange विधि को लागू करेगा, जो सिस्टम वॉल्यूम को बदल देगा)

जब तक एप्पल इस फैसले को रद्द करने के लिए फिट बैठता है, तब तक मैंने पाया कि दो उपाय हैं:

  • वॉल्यूम प्रॉपर्टी का उपयोग करते रहें, यह अभी भी आईओएस 7.0.2 के तहत काम कर रहा है
  • मात्रा को पढ़ने के लिए AVAudioSession.outputVolume का उपयोग करें जब आपका ऐप एक एमपीवील्यूम्यूव्यू युक्त एक चेतावनी को पॉप और पॉप अप करेगा, यदि कोई उपयोगकर्ता निर्दिष्ट मान से (या उससे अधिक) वॉल्यूम कम है कम से कम आपका उपयोगकर्ता जानता है कि उनका अलार्म (या जो भी) चुपचाप से खेलेंगे और वॉल्यूम को समायोजित करने का अवसर होगा। वैकल्पिक रूप से आप बहुत स्पष्ट रूप से वॉल्यूम स्तर प्रदर्शित कर सकते हैं ताकि उन्हें कोई आश्चर्यचकित न हो।

बस ऐसा करें:

 let masterVolumeSlider: MPVolumeView = MPVolumeView() if let view = masterVolumeSlider.subviews.first as? UISlider{ view.value = 1.0 } 

@ हर्डन, मैंने MPVolumeSlider को लागू करने के लिए एक स्विफ्ट कोड लिखा था:

 for view in mpVolumeView.subviews { let uiview: UIView = view as UIView //println("\(uiview.description)") if uiview.description.rangesOfString("MPVolumeSlider").first != nil { mpVolumeSilder = (uiview as UISlider) currentDeviceVolume = mpVolumeSilder!.value return } } 

आनन्द रेंज ओफ़स्ट्रिंग विस्तार स्ट्रिंग यहां पाई जा सकती है स्विफ्ट: स्ट्रिंग इन्ससेंस (Xcode 6 बीटा 5) की वापसी वाली श्रेणियों के लिए एक शुद्ध स्विफ्ट विधि

और इस कोड का उपयोग करने के लिए इशारे और mpvolumeslider एक साथ काम करते हैं

 @IBAction func handlePan(recognizer: UIPanGestureRecognizer) { let translation = recognizer.translationInView(self.view) let dx = (translation.x-lastTranslationX) let volumeChanged = Float(dx / mpVolumeView.frame.width) currentDeviceVolume = currentDeviceVolume + Float(volumeChanged) if currentDeviceVolume > 1 { currentDeviceVolume = 1 } else if currentDeviceVolume < 0 { currentDeviceVolume = 0 } mpVolumeSilder!.value = currentDeviceVolume if recognizer.state == .Changed { lastTranslationX = translation.x } if recognizer.state == .Ended || recognizer.state == .Began { lastTranslationX = 0 } } 

स्विफ्ट वर्शन:

 // Outlet added in Storyboard (Add UIView then set class to MPVolumeView) @IBOutlet weak var mpVolumeView: MPVolumeView! // Get volume slider within MPVolumeView for subview in self.mpVolumeView.subviews { if (subview as UIView).description.rangeOfString("MPVolumeSlider") != nil { // Set volume let volumeSlider = subview as UISlider volumeSlider.value = 1 // Works with or without the following line: // volumeSlider.sendActionsForControlEvents(UIControlEvents.TouchUpInside) break } } 

यह समाधान थोड़ा परेशान करता है और मुझे लगता है कि इसकी थोड़ी अजीब एक आधिकारिक एपीआई मौजूद नहीं है, लेकिन यहां मेरे स्विफ्ट समाधान का परिवेश प्रकाश के पोस्ट से बनाया गया है

 var _volumeView = MPVolumeView() var _volumeSlider : UISlider? = nil self.view.addSubview(_volumeView) _volumeView.hidden = true var i = 0 while i < _volumeView.subviews.count { if let _r = _volumeView.subviews[i] as? UISlider { _volumeSlider = _r break } ++i } 
 let masterVolumeSlider : MPVolumeView = MPVolumeView() if let view = masterVolumeSlider.subviews.first as? UISlider{ view.value = fVolume! view.sendActionsForControlEvents(UIControlEvents.TouchUpInside) } 

जाहिरा तौर पर सिस्टम वॉल्यूम को बिना कुछ भी प्रदर्शित किए बिना बदलने का एक तरीका है।

और सबसे अच्छा यह आईओएस 11 पर काम करता है

यहां बताया गया है कि मैंने इसे कैसे हासिल किया है:

1) वांछित ViewController में दो चर बनाएँ

 let volumeView = MPVolumeView() var slider: UISlider? 

2) नीचे दिए गए कोड को अपने दृश्यडीडलोड में जोड़ें

 volumeView.alpha = 0.01 self.view.addSubview(volumeView) if let view = volumeView.subviews.first as? UISlider { slider = view } 

3) जब भी आप की आवश्यकता होती है वोव को बदलें

 slider?.value = 0.4