I use the EventBus
library for passing data (position and duration of a track) from the service with the Media Player’s instance to the fragment in which this service starts.
AudioService.kt:
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
<...>
EventBus.getDefault().post(
PositionAndDurationData(
mediaPlayer.duration,
mediaPlayer.currentPosition
)
)
<...>
}
AudioFragment.kt:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
<...>
EventBus.getDefault().register(this@AudioFragment)
<...>
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onEvent(result: PositionAndDurationData) {
audioDuration = result.duration
audioPosition = result.position
}
PositionAndDurationData.kt:
data class PositionAndDurationData(
var duration: Int,
var position: Int,
)
Is there any way to refresh the data passing to the UI for every second?