fix: Only mark audio session as active when playing

This commit is contained in:
ronaldheft
2022-08-30 22:33:55 -04:00
parent b02dd18e0b
commit 20d932877e
+11 -2
View File
@@ -284,7 +284,8 @@ class AudioPlayer: NSObject {
await PlayerProgress.shared.syncFromPlayer(currentTime: currentTime, includesPlayProgress: self.isPlaying(), isStopping: false) await PlayerProgress.shared.syncFromPlayer(currentTime: currentTime, includesPlayProgress: self.isPlaying(), isStopping: false)
} }
} }
self.markAudioSessionAs(active: true)
self.audioPlayer.play() self.audioPlayer.play()
self.status = 1 self.status = 1
self.rate = self.tmpRate self.rate = self.tmpRate
@@ -302,6 +303,7 @@ class AudioPlayer: NSObject {
guard self.isInitialized() else { return } guard self.isInitialized() else { return }
self.audioPlayer.pause() self.audioPlayer.pause()
self.markAudioSessionAs(active: false)
Task { Task {
if let currentTime = self.getCurrentTime() { if let currentTime = self.getCurrentTime() {
@@ -572,13 +574,20 @@ class AudioPlayer: NSObject {
private func initAudioSession() { private func initAudioSession() {
do { do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .spokenAudio) try AVAudioSession.sharedInstance().setCategory(.playback, mode: .spokenAudio)
try AVAudioSession.sharedInstance().setActive(true)
} catch { } catch {
NSLog("Failed to set AVAudioSession category") NSLog("Failed to set AVAudioSession category")
print(error) print(error)
} }
} }
private func markAudioSessionAs(active: Bool) {
do {
try AVAudioSession.sharedInstance().setActive(active)
} catch {
NSLog("Failed to set audio session as active=\(active)")
}
}
// MARK: - Now playing // MARK: - Now playing
private func setupRemoteTransportControls() { private func setupRemoteTransportControls() {
DispatchQueue.runOnMainQueue { DispatchQueue.runOnMainQueue {