mirror of
https://github.com/NiciDieNase/chaosflix
synced 2025-02-16 13:08:23 +00:00
add progress listerner in castService
This commit is contained in:
parent
b7964f7cd5
commit
0c58968209
1 changed files with 37 additions and 6 deletions
|
@ -1,25 +1,37 @@
|
|||
package de.nicidienase.chaosflix.touch.browse.cast
|
||||
|
||||
import android.app.Activity
|
||||
import android.util.Log
|
||||
import android.view.Menu
|
||||
import com.google.android.gms.cast.framework.media.RemoteMediaClient
|
||||
import de.nicidienase.chaosflix.common.mediadata.entities.recording.persistence.Event
|
||||
import de.nicidienase.chaosflix.common.mediadata.entities.recording.persistence.Recording
|
||||
import de.nicidienase.chaosflix.common.mediadata.entities.streaming.StreamUrl
|
||||
import de.nicidienase.chaosflix.touch.browse.streaming.StreamingItem
|
||||
import pl.droidsonroids.casty.Casty
|
||||
import pl.droidsonroids.casty.MediaData
|
||||
import java.util.*
|
||||
|
||||
class CastService(val activity: Activity, withMiniController: Boolean = true) {
|
||||
|
||||
private val casty: Casty
|
||||
private val casty: Casty = if (withMiniController) {
|
||||
Casty.create(activity).withMiniController()
|
||||
} else {
|
||||
Casty.create(activity)
|
||||
}
|
||||
val connected: Boolean
|
||||
get() = casty.isConnected
|
||||
|
||||
private var remoteMediaClient: RemoteMediaClient? = null
|
||||
private var progressUpdater: UpdateSaver? = null
|
||||
|
||||
init {
|
||||
casty = if (withMiniController) {
|
||||
Casty.create(activity).withMiniController()
|
||||
} else {
|
||||
Casty.create(activity)
|
||||
casty.setOnCastSessionUpdatedListener { castSession ->
|
||||
remoteMediaClient = castSession.remoteMediaClient
|
||||
with(castSession.remoteMediaClient){
|
||||
remoteMediaClient = this
|
||||
progressUpdater?.let { this.addProgressListener(it, UPDATE_INTERVAL) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -37,6 +49,9 @@ class CastService(val activity: Activity, withMiniController: Boolean = true) {
|
|||
|
||||
fun loadMediaAndPlay(recording: Recording, event: Event) {
|
||||
val mediaData = buildCastMediaData(recording, event)
|
||||
progressUpdater?.let { remoteMediaClient?.removeProgressListener(it) }
|
||||
progressUpdater = UpdateSaver(event)
|
||||
remoteMediaClient?.addProgressListener(progressUpdater, UPDATE_INTERVAL)
|
||||
casty.player.loadMediaAndPlay(mediaData)
|
||||
}
|
||||
|
||||
|
@ -55,7 +70,7 @@ class CastService(val activity: Activity, withMiniController: Boolean = true) {
|
|||
}
|
||||
}
|
||||
|
||||
fun buildCastMediaData(recording: Recording, event: Event): MediaData {
|
||||
private fun buildCastMediaData(recording: Recording, event: Event): MediaData {
|
||||
return MediaData.Builder(recording.recordingUrl)
|
||||
.setStreamType(MediaData.STREAM_TYPE_BUFFERED)
|
||||
.setContentType(recording.mimeType)
|
||||
|
@ -64,4 +79,20 @@ class CastService(val activity: Activity, withMiniController: Boolean = true) {
|
|||
.addPhotoUrl(event.thumbUrl)
|
||||
.build()
|
||||
}
|
||||
|
||||
inner class UpdateSaver(val event: Event) : RemoteMediaClient.ProgressListener {
|
||||
|
||||
private val date = Date()
|
||||
|
||||
override fun onProgressUpdated(progress: Long, duration: Long) {
|
||||
Log.i(TAG, "Progress: $progress of $duration, event-duration: ${event.length * 1000}")
|
||||
// progressDao.saveProgress(PlaybackProgress(event.id, event.guid, progress, date.time))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
val TAG = CastService::class.java.simpleName
|
||||
const val UPDATE_INTERVAL: Long = 2500
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue