Je joue un son avec AVAudioPlayer
.
Le volume sonore dans les iPod (iOS7 et iOS8) est bon.
Mais lorsque je reproduis le même son dans les iPhones, le volume est très faible.
Voici mon code:
var audioPlayer: AVAudioPlayer?
var soundURL:NSURL? = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sound", ofType: "mp3")!)
audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: nil)
audioPlayer?.prepareToPlay()
audioPlayer?.volume = 1
audioPlayer?.play()
J'ai déjà inclus AudioToolbox.framework library dans mon projet.
Comment puis-je améliorer le son sur iPhone6 et 6+?
MODIFIER
Récemment, j'ai remarqué que le son était automatiquement augmenté pendant quelques secondes, mais je ne sais pas ce qui ne va pas se passe.?
Je pense que si vous réglez le volume d’AVAudioPlayer sur 1, le problème se situe au niveau du système. Vous pouvez utiliser une catégorie audio différente lors de la lecture de votre son et le volume varie selon la catégorie ou le trajet audio ( Bluetooth, par exemple) (la catégorie par défaut de votre application est ambient , mais celle de la musique est playback . . Vous pouvez essayer de régler le volume lorsque vous jouez votre son plutôt qu'avant il est joué.
Le volume est faible car le son provient du haut-parleur supérieur de l'iPhone (utilisé pour les appels).
Vous devez remplacer le port de sortie AVAudioSession sur le haut-parleur principal (haut-parleur inférieur).
C’est le code qui dirige la sortie audio vers le haut-parleur
AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker, error: &error)
Swift 3.0 :
do {
try AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
} catch _ {
}
Solution pour Swift 4
try? session.setCategory(.playAndRecord, mode: .default, policy: .default, options: .defaultToSpeaker)
vous devez également maximiser le volume des médias.
extension MPVolumeView {
var volumeSlider:UISlider {
self.showsRouteButton = false
self.showsVolumeSlider = false
self.hidden = true
var slider = UISlider()
for subview in self.subviews {
if subview.isKindOfClass(UISlider){
slider = subview as! UISlider
slider.continuous = false
(subview as! UISlider).value = AVAudioSession.sharedInstance().outputVolume
return slider
}
}
return slider
}
}
puis changez le volume comme ceci:
func setMediaVolume(volume : Float) {
MPVolumeView().volumeSlider.value = volume
}
dans votre cas, configurez MediaVolume (1) juste avant de lire votre fichier audio.
assurez-vous également que le chemin audio actuel est dirigé vers le haut-parleur et non vers l’écouteur, vous pouvez le faire en utilisant
try! AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.Speaker)