native plugin: add getStreamSyncData()

This commit is contained in:
svd
2021-10-26 10:24:48 +08:00
parent 274a683be7
commit b9de9cf9b0
2 changed files with 38 additions and 0 deletions
@@ -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 @PluginMethod
fun pausePlayer(call: PluginCall) { fun pausePlayer(call: PluginCall) {
Handler(Looper.getMainLooper()).post() { Handler(Looper.getMainLooper()).post() {
@@ -81,6 +81,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
var mediaButtonClickTimeout: Long = 1000 //ms var mediaButtonClickTimeout: Long = 1000 //ms
var seekAmount: Long = 20000 //ms var seekAmount: Long = 20000 //ms
private var lastPauseTime: Long = 0 //ms
fun setCustomObjectListener(mylistener: MyCustomObjectListener) { fun setCustomObjectListener(mylistener: MyCustomObjectListener) {
listener = mylistener listener = mylistener
} }
@@ -472,6 +474,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
mPlayer.prepare() mPlayer.prepare()
mPlayer.playWhenReady = currentAudiobook!!.playWhenReady mPlayer.playWhenReady = currentAudiobook!!.playWhenReady
mPlayer.setPlaybackSpeed(audiobook.playbackSpeed) mPlayer.setPlaybackSpeed(audiobook.playbackSpeed)
lastPauseTime = 0
} }
@@ -479,6 +483,18 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
return mPlayer.currentPosition return mPlayer.currentPosition
} }
fun getTheLastPauseTime() : Long {
return lastPauseTime
}
fun getPlayStatus() : Boolean {
return mPlayer.isPlaying
}
fun getCurrentAudiobookId() : String {
return currentAudiobook?.id.toString()
}
fun play() { fun play() {
if (mPlayer.isPlaying) { if (mPlayer.isPlaying) {
Log.d(tag, "Already playing") Log.d(tag, "Already playing")
@@ -489,6 +505,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
fun pause() { fun pause() {
mPlayer.pause() mPlayer.pause()
lastPauseTime = System.currentTimeMillis()
} }
fun seekPlayer(time: Long) { fun seekPlayer(time: Long) {
@@ -511,6 +528,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
if (mPlayer.playbackState == Player.STATE_READY) { if (mPlayer.playbackState == Player.STATE_READY) {
mPlayer.clearMediaItems() mPlayer.clearMediaItems()
} }
lastPauseTime = 0
} }
fun sendClientMetadata(stateName: String) { fun sendClientMetadata(stateName: String) {