diff --git a/android/app/src/main/java/com/audiobookshelf/app/MyNativeAudio.kt b/android/app/src/main/java/com/audiobookshelf/app/MyNativeAudio.kt index 8cab491c..b1104a4d 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/MyNativeAudio.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/MyNativeAudio.kt @@ -85,6 +85,26 @@ class MyNativeAudio : Plugin() { } } + @PluginMethod + fun getStreamSyncData(call: PluginCall) { + Handler(Looper.getMainLooper()).post() { + var isPlaying = playerNotificationService.getPlayStatus() + var lastPauseTime = playerNotificationService.getTheLastPauseTime() + Log.d(tag, "Get Last Pause Time $lastPauseTime") + var currentTime = playerNotificationService.getCurrentTime() + Log.d(tag, "Get Current Time $currentTime") + //if (!isPlaying) currentTime -= playerNotificationService.calcPauseSeekBackTime() + var id = playerNotificationService.getCurrentAudiobookId() + Log.d(tag, "Get Current id $id") + val ret = JSObject() + ret.put("lastPauseTime", lastPauseTime) + ret.put("currentTime", currentTime) + ret.put("isPlaying", isPlaying) + ret.put("id", id) + call.resolve(ret) + } + } + @PluginMethod fun pausePlayer(call: PluginCall) { Handler(Looper.getMainLooper()).post() { diff --git a/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt index 22fab7db..20acb6e5 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt @@ -81,6 +81,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { var mediaButtonClickTimeout: Long = 1000 //ms var seekAmount: Long = 20000 //ms + private var lastPauseTime: Long = 0 //ms + fun setCustomObjectListener(mylistener: MyCustomObjectListener) { listener = mylistener } @@ -472,6 +474,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { mPlayer.prepare() mPlayer.playWhenReady = currentAudiobook!!.playWhenReady mPlayer.setPlaybackSpeed(audiobook.playbackSpeed) + + lastPauseTime = 0 } @@ -479,6 +483,18 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { return mPlayer.currentPosition } + fun getTheLastPauseTime() : Long { + return lastPauseTime + } + + fun getPlayStatus() : Boolean { + return mPlayer.isPlaying + } + + fun getCurrentAudiobookId() : String { + return currentAudiobook?.id.toString() + } + fun play() { if (mPlayer.isPlaying) { Log.d(tag, "Already playing") @@ -489,6 +505,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { fun pause() { mPlayer.pause() + lastPauseTime = System.currentTimeMillis() } fun seekPlayer(time: Long) { @@ -511,6 +528,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { if (mPlayer.playbackState == Player.STATE_READY) { mPlayer.clearMediaItems() } + lastPauseTime = 0 } fun sendClientMetadata(stateName: String) {