简体   繁体   中英

Swift 3.0 AVAudioPlayer Playing audio over music

Currently this is the code I'm using to play my sound during the button press.

var player: AVAudioPlayer?

    let url = Bundle.main.url(forResource: "Sound/yatch", withExtension: "mp3")!

    do {
        player = try AVAudioPlayer(contentsOf: url)
        guard let player = player else { return }

        player.prepareToPlay()
        player.play()
    } catch let error {
        print(error.localizedDescription)
    }

Im trying to get this audio to run over whats currently playing (etc Spotify, pandora, Music). How would I go about doing this?

Set the audio session of your application to play over the currently playing audio:

try? AVAudioSession.sharedInstance().setActive(true)
try? AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)

According to the AVAudioSession headers, AVAudioSessionCategoryAmbient will play audio with music, etc.

/*  Use this category for background sounds such as rain, car engine noise, etc.
 Mixes with other music. */
public let AVAudioSessionCategoryAmbient: String

Swift 5.3 Update

guard let url = Bundle.main.url(forResource: "INSERT_FILENAME", withExtension: "wav") else { return }

do {
    try AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default)
    try AVAudioSession.sharedInstance().setActive(true)

    audioPlayer = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.wav.rawValue)
    audioPlayer.volume = 1

    audioPlayer.play()

} catch let error {
    print(error.localizedDescription)
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM