2016-02-09 5 views
11

Tworzę aplikację, używając xcode 7.1, swift. Chcę odtwarzać dźwięk. Wszystko w porządku. Teraz mój problem Chcę usłyszeć dźwięk, gdy urządzenie jest w trybie cichym lub wyciszone. Jak mogę to zrobić?Odtwarzaj dźwięk, kiedy urządzenie pracuje w trybie cichym - ios swift

Używam następujący kod do odtwarzania dźwięku

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

      currentAudio!.currentTime = 0 

      currentAudio!.play(); 

Odpowiedz

42

Przed użyciem tej metody należy wywołać metodę play() metody AVPlayer.

w Objective C

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

w Swift

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

Działa? Czy muszę inizjalizować na całym ekranie, czy wystarczy użyć kontrolera pierwszego widoku? – Amsheer

+0

Mam nadzieję, że to powinno działać przez zainicjowanie tylko raz. – iOSEnthusiatic

+0

Ok dzięki .. Działa – Amsheer

0

Można przejść przez to, to pomoże Ci się

Podczas korzystania z następujących dźwiękowych kategorie sesji, dźwięki nie zostanie wyciszony na iOS : AVAudioSessionCategoryPlayback,AVAudioSessionCategoryRecord,AVAudioSessionCategoryPlayAndRecord

Przykład

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

Proszę, podziel się przykładem: – Amsheer

+0

OP używa Swift 2 (wspominają Xcode 7.1 w pytaniu). Twój przykład dotyczy Swift 1. – Moritz

2

Swift 3.0 i Xcode> 8

Odtwarzanie dźwięku w wideo, gdy urządzenie jest w trybie dzwonka i trybu 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

Witaj. To jest złe: 'catch _ jak NSError'. Po prostu użyj 'catch' w tym przypadku. Nie odrzucaj do odrzuconej wartości, to nie ma sensu. – Moritz