Je crée une application utilisant xcode 7.1, Swift. Je veux jouer un audio. Tout va bien. Maintenant, mon problème, je veux entendre du son lorsque le périphérique en mode silencieux ou en sourdine. Comment puis-je le faire?
J'utilise le code suivant pour lire de l'audio
currentAudio!.stop()
currentAudio = try? AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample_audio", ofType: "mp3")!));
currentAudio!.currentTime = 0
currentAudio!.play();
Mettez cette ligne avant d'appeler play () method of AVPlayer.
En Objectif C
[[AVAudioSession sharedInstance]
setCategory: AVAudioSessionCategoryPlayback
error: nil];
En rapide
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
}
catch {
// report for an error
}
Swift 3.0 et Xcode> 8
Reproduire le son en vidéo lorsque l'appareil est en mode RINGER et en mode 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)
}
Swift 4
utiliser cette ligne avant de jouer la vidéo
try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
Swift 4.2
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
} catch let error {
print("Error in AVAudio Session\(error.localizedDescription)")
}
Vous pouvez passer par là, ça va vous aider
Lorsque vous utilisez les catégories de session audio suivantes, les sons ne seront pas désactivés sur iOS: AVAudioSessionCategoryPlayback,AVAudioSessionCategoryRecord,AVAudioSessionCategoryPlayAndRecord
Exemple
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()
}
Vous pouvez utiliser la classe AppDelegate
.
Pour activer le son (audio ou vidéo) lorsque l'appareil est en mode silencieux, utilisez AVAudioSessionCategoryPlayback :
func applicationDidBecomeActive(_ application: UIApplication) {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
print("AVAudioSessionCategoryPlayback not work")
}
}
Pour désactiver le son lorsque l'appareil est en mode silencieux (par exemple, lorsque nous répondons au téléphone), utilisez AVAudioSessionCategorySoloAmbient :
func applicationWillResignActive(_ application: UIApplication) {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)
} catch {
print("AVAudioSessionCategorySoloAmbient not work")
}
}