2016-02-09 202 views
11

我正在使用xcode 7.1,swift創建一個應用程序。我想播放音頻。一切安好。現在我的問題是,當設備處於靜音模式或靜音模式時,我想聽到聲音。我該怎麼做?在靜音模式下播放音頻 - ios swift

我使用下面的代碼來播放音頻

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

      currentAudio!.currentTime = 0 

      currentAudio!.play(); 

回答

42

在撥打播放() AVPlayer的方法之前放這條線。

在目標C

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

在夫特

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

它工作?我是否需要在所有屏幕中進行初始化,或者是否足以使用第一個視圖控制器? – 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

OP是用Swift 2(他們在問題中提到Xcode 7.1)。你的例子是Swift 1. – Moritz

2

夫特3.0和的Xcode> 8

播放在視頻聲音當設備處於打開RINGER模式和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

你好。這是錯誤的:'catch _ as NSError'。在這種情況下只需使用catch。不要貶低到丟棄的價值,這是沒有道理的。 – Moritz

相關問題