Seek audio player to last known position

This commit is contained in:
Rasmus Krämer
2022-03-06 12:31:19 +01:00
parent 69127944a3
commit 9253a9bf6e
+9 -4
View File
@@ -24,7 +24,7 @@ struct Audiobook {
var title = "No Title" var title = "No Title"
var author = "Unknown" var author = "Unknown"
var playWhenReady = false var playWhenReady = false
var startTime = 0 var startTime = 0.0
var cover = "" var cover = ""
var duration = 0 var duration = 0
var series = "" var series = ""
@@ -74,7 +74,7 @@ public class MyNativeAudio: CAPPlugin {
title: call.getString("title") ?? "No Title", title: call.getString("title") ?? "No Title",
author: call.getString("author") ?? "Unknown", author: call.getString("author") ?? "Unknown",
playWhenReady: call.getBool("playWhenReady", false), playWhenReady: call.getBool("playWhenReady", false),
startTime: call.getInt("startTime") ?? 0, startTime: Double(call.getString("startTime") ?? "0") ?? 0.0,
cover: call.getString("cover") ?? "", cover: call.getString("cover") ?? "",
duration: call.getInt("duration") ?? 0, duration: call.getInt("duration") ?? 0,
series: call.getString("series") ?? "", series: call.getString("series") ?? "",
@@ -98,7 +98,7 @@ public class MyNativeAudio: CAPPlugin {
// For play in background // For play in background
do { do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [.mixWithOthers, .allowAirPlay]) try AVAudioSession.sharedInstance().setCategory(.playback, mode: .spokenAudio, options: [.interruptSpokenAudioAndMixWithOthers, .allowAirPlay])
NSLog("[TEST] Playback OK") NSLog("[TEST] Playback OK")
try AVAudioSession.sharedInstance().setActive(true) try AVAudioSession.sharedInstance().setActive(true)
NSLog("[TEST] Session is Active") NSLog("[TEST] Session is Active")
@@ -116,8 +116,11 @@ public class MyNativeAudio: CAPPlugin {
context: &playerItemContext) context: &playerItemContext)
self.audioPlayer = AVPlayer(playerItem: playerItem) self.audioPlayer = AVPlayer(playerItem: playerItem)
let time = self.audioPlayer.currentItem?.currentTime()
let startTime = CMTime(seconds: (audiobook?.startTime ?? 0.0) / 1000, preferredTimescale: 1000)
self.audioPlayer.seek(to: startTime)
let time = self.audioPlayer.currentItem?.currentTime()
print("Audio Player Initialized \(String(describing: time))") print("Audio Player Initialized \(String(describing: time))")
call.resolve(["success": true]) call.resolve(["success": true])
@@ -206,6 +209,7 @@ public class MyNativeAudio: CAPPlugin {
self.notifyListeners("onPlayingUpdate", data: [ self.notifyListeners("onPlayingUpdate", data: [
"value": true "value": true
]) ])
sendMetadata()
playerState = .playing playerState = .playing
setupNowPlaying() setupNowPlaying()
@@ -216,6 +220,7 @@ public class MyNativeAudio: CAPPlugin {
self.notifyListeners("onPlayingUpdate", data: [ self.notifyListeners("onPlayingUpdate", data: [
"value": false "value": false
]) ])
sendMetadata()
playerState = .paused playerState = .paused
} }