mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-08-06 20:08:48 +02:00
Add: Sleep Timer set to end of chapter #24, Change: Scroll to current chapter in modal
This commit is contained in:
@@ -123,8 +123,8 @@ class MainActivity : BridgeActivity() {
|
||||
storageHelper.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
}
|
||||
|
||||
override fun onUserInteraction() {
|
||||
super.onUserInteraction()
|
||||
Log.d(tag, "USER INTERACTION")
|
||||
}
|
||||
// override fun onUserInteraction() {
|
||||
// super.onUserInteraction()
|
||||
// Log.d(tag, "USER INTERACTION")
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -37,8 +37,8 @@ class MyNativeAudio : Plugin() {
|
||||
jsobj.put("playWhenReady", playWhenReady)
|
||||
notifyListeners("onPrepareMedia", jsobj)
|
||||
}
|
||||
override fun onSleepTimerEnded() {
|
||||
emit("onSleepTimerEnded", true)
|
||||
override fun onSleepTimerEnded(currentPosition:Long) {
|
||||
emit("onSleepTimerEnded", currentPosition)
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -209,10 +209,15 @@ class MyNativeAudio : Plugin() {
|
||||
|
||||
@PluginMethod
|
||||
fun setSleepTimer(call: PluginCall) {
|
||||
var sleepTimeout:Long = call.getString("timeout", "360000")!!.toLong()
|
||||
var time:Long = call.getString("time", "360000")!!.toLong()
|
||||
var isChapterTime:Boolean = call.getBoolean("isChapterTime", false) == true
|
||||
|
||||
playerNotificationService.setSleepTimer(sleepTimeout)
|
||||
call.resolve()
|
||||
Handler(Looper.getMainLooper()).post() {
|
||||
var success:Boolean = playerNotificationService.setSleepTimer(time, isChapterTime)
|
||||
val ret = JSObject()
|
||||
ret.put("success", success)
|
||||
call.resolve(ret)
|
||||
}
|
||||
}
|
||||
|
||||
@PluginMethod
|
||||
|
||||
@@ -51,7 +51,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
||||
fun onPlayingUpdate(isPlaying: Boolean)
|
||||
fun onMetadata(metadata: JSObject)
|
||||
fun onPrepare(audiobookId:String, playWhenReady:Boolean)
|
||||
fun onSleepTimerEnded()
|
||||
fun onSleepTimerEnded(currentPosition:Long)
|
||||
}
|
||||
|
||||
private val tag = "PlayerService"
|
||||
@@ -86,6 +86,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
||||
private var onSeekBack: Boolean = false
|
||||
|
||||
private var sleepTimerTask:TimerTask? = null
|
||||
private var sleepChapterTime:Long = 0L
|
||||
|
||||
fun setCustomObjectListener(mylistener: MyCustomObjectListener) {
|
||||
listener = mylistener
|
||||
@@ -722,20 +723,45 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
||||
}
|
||||
}
|
||||
|
||||
fun setSleepTimer(timeout:Long) {
|
||||
Log.d(tag, "Setting Sleep Timer for $timeout")
|
||||
|
||||
fun setSleepTimer(time:Long, isChapterTime:Boolean) : Boolean {
|
||||
Log.d(tag, "Setting Sleep Timer for $time is chapter time $isChapterTime")
|
||||
sleepTimerTask?.cancel()
|
||||
sleepTimerTask = Timer("SleepTimer",false).schedule(timeout) {
|
||||
Log.d(tag, "Sleep Timer Done")
|
||||
Handler(Looper.getMainLooper()).post() {
|
||||
if (mPlayer.isPlaying) {
|
||||
Log.d(tag, "Sleep Timer Pausing Player")
|
||||
mPlayer.pause()
|
||||
sleepChapterTime = 0L
|
||||
|
||||
if (isChapterTime) {
|
||||
// Validate time
|
||||
if (mPlayer.isPlaying) {
|
||||
if (mPlayer.currentPosition >= time) {
|
||||
Log.d(tag, "Invalid setSleepTimer chapter time is already passed")
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
sleepChapterTime = time
|
||||
sleepTimerTask = Timer("SleepTimer",false).schedule(0L, 1000L) {
|
||||
Handler(Looper.getMainLooper()).post() {
|
||||
if (mPlayer.isPlaying && mPlayer.currentPosition > sleepChapterTime) {
|
||||
Log.d(tag, "Sleep Timer Pausing Player on Chapter")
|
||||
mPlayer.pause()
|
||||
|
||||
if (listener != null) listener.onSleepTimerEnded(mPlayer.currentPosition)
|
||||
sleepTimerTask?.cancel()
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sleepTimerTask = Timer("SleepTimer",false).schedule(time) {
|
||||
Log.d(tag, "Sleep Timer Done")
|
||||
Handler(Looper.getMainLooper()).post() {
|
||||
if (mPlayer.isPlaying) {
|
||||
Log.d(tag, "Sleep Timer Pausing Player")
|
||||
mPlayer.pause()
|
||||
}
|
||||
if (listener != null) listener.onSleepTimerEnded(mPlayer.currentPosition)
|
||||
}
|
||||
if (listener != null) listener.onSleepTimerEnded()
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun getSleepTimerTime():Long? {
|
||||
@@ -748,6 +774,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
|
||||
Log.d(tag, "Canceling Sleep Timer")
|
||||
sleepTimerTask?.cancel()
|
||||
sleepTimerTask = null
|
||||
sleepChapterTime = 0L
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user