Mute switch monitoring

This commit is contained in:
Ali
2023-07-03 20:28:01 +02:00
parent e316f0521b
commit f59df97175
11 changed files with 218 additions and 46 deletions

View File

@@ -601,10 +601,27 @@ private final class MediaPlayerContext {
self.stoppedAtEnd = false
}
fileprivate func continueWithOverridingAmbientMode() {
if self.ambient {
fileprivate func continueWithOverridingAmbientMode(isAmbient: Bool) {
if !isAmbient {
self.ambient = false
var loadedState: MediaPlayerLoadedState?
switch self.state {
case .empty:
break
case let .playing(currentLoadedState):
loadedState = currentLoadedState
case let .paused(currentLoadedState):
loadedState = currentLoadedState
case .seeking:
break
}
if let loadedState = loadedState {
let timestamp = CMTimeGetSeconds(CMTimebaseGetTime(loadedState.controlTimebase.timebase))
self.seek(timestamp: timestamp, action: .play)
}
} else {
self.ambient = true
var loadedState: MediaPlayerLoadedState?
switch self.state {
case .empty:
@@ -1169,10 +1186,10 @@ public final class MediaPlayer {
}
}
public func continueWithOverridingAmbientMode() {
public func continueWithOverridingAmbientMode(isAmbient: Bool) {
self.queue.async {
if let context = self.contextRef?.takeUnretainedValue() {
context.continueWithOverridingAmbientMode()
context.continueWithOverridingAmbientMode(isAmbient: isAmbient)
}
}
}