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

View file

@ -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() {

View file

@ -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) {