/* * Copyright (c) 2019 Hemanth Savarala. * * Licensed under the GNU General Public License v3 * * This is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by * the Free Software Foundation either version 3 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ package code.name.monkey.retromusic.service import android.os.Handler import code.name.monkey.retromusic.service.MusicService.PLAY_STATE_CHANGED class ThrottledSeekHandler( private val musicService: MusicService, private val handler: Handler ) : Runnable { fun notifySeek() { musicService.updateMediaSessionPlaybackState() musicService.updateMediaSessionMetaData() handler.removeCallbacks(this) handler.postDelayed(this, THROTTLE) } override fun run() { musicService.savePositionInTrack() musicService.sendPublicIntent(PLAY_STATE_CHANGED) // for musixmatch synced lyrics } companion object { // milliseconds to throttle before calling run() to aggregate events private val THROTTLE: Long = 500 } }