2015-02-13 4 views
7

Ich mache eine ziemlich einfache App und habe die Verwendung von AVAudioPlayer zum Abspielen von Sound in meiner App untersucht, aber ich habe ein Problem, bei dem Sound auch dann wiedergegeben wird, wenn das Gerät still ist. Dies ist der Code ich verwende:Swift - AVAudioPlayer gibt immer noch Ton wieder, wenn das Gerät leise ist?

var audioPlayer = AVAudioPlayer() 

Dann in Aussicht haben Last:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
AVAudioSession.sharedInstance().setActive(true, error: nil) 
var error:NSError? 
var beepOne = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("menu", ofType: "wav")!) 
audioPlayer = AVAudioPlayer(contentsOfURL: beepOne, error: &error) 
audioPlayer.prepareToPlay() 

Und wenn der Ton wird gespielt:

audioPlayer.play() 

Was muss ich aufhören tun, um Der Ton wird wiedergegeben, wenn das Gerät auf Silent oder auf Silent geschaltet ist? Vielleicht vor audioPlayer.play() eine if-Anweisung, die erkennt, ob das Gerät still ist oder nicht?

Antwort

16

gefunden, was falsch war, in den zweiten und dritten Codezeilen:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
AVAudioSession.sharedInstance().setActive(true, error: nil) 

I AVAudioSessionCategoryPlayback-AVAudioSessionCategoryAmbient

hoffte, das hilft, andere zu ändern hatte, der das gleiche Problem sein könnte :)

+0

Danke lukemartin31 –

+0

danke mate! Wirklich hat mir geholfen –

+0

Funktioniert das immer noch für iOS 10? Es hat nicht für mich funktioniert. – user3427013

0

Ich möchte eine Lösung mit Swift 2.0 hinzufügen, die Try/Catch-Fehlerbehandlung erfordert. Es gibt einen tollen Artikel zu diesem here.

let audioSession = AVAudioSession.sharedInstance() 
    do { 
     try audioSession.setCategory(AVAudioSessionCategoryAmbient, withOptions: .DuckOthers) 
    } catch { 
     print("AVAudioSession cannot be set") 
    }  

Dieser Beitrag war zum Stummschalten der Audiowiedergabe, wenn das Telefon stummgeschaltet ist. Ich wollte das Gegenteil tun und in der Tat, wenn Sie AVAudioSessionCategoryAmbient oben mit AVAudioSessionCategoryPlayback ersetzen, wird Ihr Audio auch dann wiedergegeben, wenn das Telefon stummgeschaltet ist.

Verwandte Themen