2016-02-09 10 views
11

मैं xcode 7.1, स्विफ्ट का उपयोग कर एक एप्लिकेशन बना रहा हूं। मैं एक ऑडियो खेलना चाहता हूँ। सब कुछ ठीक है। अब मेरी समस्या जब मैं मूक मोड या म्यूट में डिवाइस को ध्वनि सुनना चाहता हूं। मैं यह कैसे कर सकता हूं?मूक मोड में डिवाइस के दौरान ऑडियो चलाएं - आईओएस स्विफ्ट

मैं ऑडियो खेलने के लिए निम्नलिखित कोड का उपयोग कर रहा

currentAudio!.stop() 
      currentAudio = try? AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample_audio", ofType: "mp3")!)); 

      currentAudio!.currentTime = 0 

      currentAudio!.play(); 

उत्तर

42

प्ले() एवीप्लेयर की विधि को कॉल करने से पहले इस लाइन को रखें।

उद्देश्य सी में

[[AVAudioSession sharedInstance] 
      setCategory: AVAudioSessionCategoryPlayback 
        error: nil]; 

स्विफ्ट

do { 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
} 
catch { 
    // report for an error 
} 
+0

यह काम कर रहा है? क्या मुझे सभी स्क्रीन में inizialize करने की आवश्यकता है या यह पहले दृश्य नियंत्रक का उपयोग करने के लिए पर्याप्त है? – Amsheer

+0

उम्मीद है कि इसे केवल एक बार शुरू करके काम करना चाहिए। – iOSEnthusiatic

+0

ठीक है धन्यवाद .. यह काम कर रहा है – Amsheer

0

आप इस के माध्यम से जा सकते हैं, तो यह आपको बाहर करने में मदद करेगा

जब आप ऑडियो सत्र श्रेणियों निम्न का उपयोग कर, ध्वनियों iOS पर म्यूट नहीं किया जा जाएगा : AVAudioSessionCategoryPlayback,AVAudioSessionCategoryRecord,AVAudioSessionCategoryPlayAndRecord

उदाहरण

func playSound (Sound: String, Type: String) { 

     //Prepare the sound file name & extension 
     var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(Sound, ofType: Type)!) 

     //Preparation to play 
     AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
     AVAudioSession.sharedInstance().setActive(true, error: nil) 

     //Play audio 

     var error: NSError? 
     audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error) 
     audioPlayer.prepareToPlay() 
     audioPlayer.play() 
     } 
+0

क्या आप कुछ उदाहरण साझा कर सकते हैं – Amsheer

+0

ओपी स्विफ्ट 2 का उपयोग कर रहा है (वे प्रश्न में एक्सकोड 7.1 का उल्लेख करते हैं)। आपका उदाहरण स्विफ्ट 1 के लिए है। – Moritz

2

स्विफ्ट 3.0 और Xcode में> 8

प्ले वीडियो में ध्वनि जब डिवाइस रिंगर मोड और slient मोड पर है

do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     //print("AVAudioSession Category Playback OK") 
     do { 
      try AVAudioSession.sharedInstance().setActive(true) 
      //print("AVAudioSession is Active") 
     } catch _ as NSError { 
      //print(error.localizedDescription) 
     } 
    } catch _ as NSError { 
     //print(error.localizedDescription) 
    } 
+0

हैलो। यह गलत है: 'एनएसईआरआर के रूप में _ पकड़ो'। इस मामले में बस 'पकड़' का प्रयोग करें। एक त्याग मूल्य पर निराश मत हो, यह समझ में नहीं आता है। – Moritz

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