Skip to content

Commit f1360cd

Browse files
Updates to playbar resume
1 parent 8007b15 commit f1360cd

File tree

2 files changed

+40
-21
lines changed

2 files changed

+40
-21
lines changed

app/src/main/java/com/koalatea/sedaily/playbar/PlaybarFragment.kt

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.support.v4.media.MediaMetadataCompat
88
import android.support.v4.media.session.MediaControllerCompat
99
import android.support.v4.media.session.PlaybackStateCompat
1010
import android.text.format.DateUtils
11+
import android.util.Log
1112
import android.view.LayoutInflater
1213
import android.view.View
1314
import android.view.ViewGroup
@@ -17,6 +18,7 @@ import androidx.fragment.app.Fragment
1718
import androidx.lifecycle.ViewModelProviders
1819
import com.koalatea.sedaily.R
1920
import io.reactivex.android.schedulers.AndroidSchedulers
21+
import io.reactivex.disposables.CompositeDisposable
2022
import io.reactivex.observers.DisposableObserver
2123
import io.reactivex.schedulers.Schedulers
2224
import kotlinx.android.synthetic.main.fragment_playback_controls.view.*
@@ -33,9 +35,7 @@ class PlaybarFragment: Fragment() {
3335
private var mScheduleFuture: ScheduledFuture<*>? = null
3436
private val mExecutorService = Executors.newSingleThreadScheduledExecutor()
3537
private val mUpdateProgressTask = { updateProgress() }
36-
private var speedSubscription: DisposableObserver<Int>? = null
37-
private var mediaItemSubscription: DisposableObserver<MediaMetadataCompat>? = null
38-
private var playbackStateSub: DisposableObserver<PlaybackStateCompat>? = null
38+
private var composeDispose: CompositeDisposable = CompositeDisposable()
3939

4040
// @TODO: Change to binding
4141
private var rootView: View? = null
@@ -44,6 +44,21 @@ class PlaybarFragment: Fragment() {
4444
savedInstanceState: Bundle?): View? {
4545
rootView = inflater.inflate(R.layout.fragment_playback_controls, container, false)
4646

47+
initDisplay()
48+
49+
return rootView
50+
}
51+
52+
override fun onStart() {
53+
super.onStart()
54+
55+
initListeners()
56+
if (rootView != null) {
57+
initDisplay()
58+
}
59+
}
60+
61+
fun initDisplay() {
4762
playbarViewModel = ViewModelProviders
4863
.of(this)
4964
.get(PlaybarViewModel::class.java)
@@ -87,11 +102,14 @@ class PlaybarFragment: Fragment() {
87102
setUpMediaChangeSubscription()
88103
setupPlaybackStateSub()
89104

90-
return rootView
105+
val metaData = PodcastSessionStateManager
106+
.getInstance().getMediaMetaData()
107+
if (metaData != null) {
108+
updateWithMeta(metaData)
109+
}
91110
}
92111

93-
override fun onStart() {
94-
super.onStart()
112+
fun initListeners() {
95113
val currentPlayTime = PodcastSessionStateManager.getInstance().currentProgress
96114
mLastPlaybackState = PodcastSessionStateManager.getInstance().lastPlaybackState
97115

@@ -101,26 +119,17 @@ class PlaybarFragment: Fragment() {
101119
rootView?.startText?.text = DateUtils.formatElapsedTime(currentPlayTime / 1000)
102120
setSpeedTextView()
103121

104-
speedSubscription?.isDisposed?.run {
122+
composeDispose?.isDisposed?.run {
105123
setUpSpeedSubscription()
106-
}
107-
108-
mediaItemSubscription?.isDisposed?.run {
109124
setUpMediaChangeSubscription()
110-
}
111-
112-
playbackStateSub?.isDisposed?.run {
113125
setupPlaybackStateSub()
114126
}
115127
}
116128

117129
override fun onStop() {
118130
super.onStop()
119131

120-
// @TODO: Use composite disposable - See Github Arch example
121-
speedSubscription?.dispose()
122-
mediaItemSubscription?.dispose()
123-
playbackStateSub?.dispose()
132+
composeDispose.clear()
124133

125134
stopSeekbarUpdate()
126135
}
@@ -256,7 +265,7 @@ class PlaybarFragment: Fragment() {
256265
}
257266

258267
private fun setUpSpeedSubscription() {
259-
speedSubscription = object : DisposableObserver<Int>() {
268+
val speedSubscription = object : DisposableObserver<Int>() {
260269
override fun onError(e: Throwable) {}
261270

262271
override fun onComplete() {}
@@ -266,6 +275,8 @@ class PlaybarFragment: Fragment() {
266275
}
267276
}
268277

278+
composeDispose.addAll(speedSubscription)
279+
269280
PodcastSessionStateManager
270281
.getInstance()
271282
.speedChanges
@@ -275,7 +286,7 @@ class PlaybarFragment: Fragment() {
275286
}
276287

277288
private fun setupPlaybackStateSub() {
278-
playbackStateSub = object : DisposableObserver<PlaybackStateCompat>() {
289+
val playbackStateSub = object : DisposableObserver<PlaybackStateCompat>() {
279290
override fun onError(e: Throwable) {}
280291

281292
override fun onComplete() {}
@@ -285,6 +296,8 @@ class PlaybarFragment: Fragment() {
285296
}
286297
}
287298

299+
composeDispose.addAll(playbackStateSub)
300+
288301
PodcastSessionStateManager
289302
.getInstance()
290303
.playbackStateChanges
@@ -294,7 +307,7 @@ class PlaybarFragment: Fragment() {
294307
}
295308

296309
private fun setUpMediaChangeSubscription() {
297-
mediaItemSubscription = object : DisposableObserver<MediaMetadataCompat>() {
310+
val mediaItemSubscription = object : DisposableObserver<MediaMetadataCompat>() {
298311
override fun onNext(mediaMetadataCompat: MediaMetadataCompat) {
299312
updateDuration(mediaMetadataCompat)
300313
updateWithMeta(mediaMetadataCompat)
@@ -309,6 +322,8 @@ class PlaybarFragment: Fragment() {
309322
}
310323
}
311324

325+
composeDispose.addAll(mediaItemSubscription)
326+
312327
PodcastSessionStateManager
313328
.getInstance()
314329
.metadataChanges
@@ -327,7 +342,7 @@ class PlaybarFragment: Fragment() {
327342

328343
private fun setSpeedText() {
329344
val currentSpeed = setSpeedTextView()
330-
345+
Log.v("keithtest", currentSpeed.toString());
331346
if (this.activity == null) return
332347
// @TODO: Make reactive
333348
playbarViewModel?.sendSpeedChangeIntent(currentSpeed, this.activity as Activity)

app/src/main/java/com/koalatea/sedaily/playbar/PodcastSessionStateManager.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ class PodcastSessionStateManager private constructor() {
6666
}
6767
}
6868

69+
fun getMediaMetaData(): MediaMetadataCompat? {
70+
return mediaMetadataCompat
71+
}
72+
6973
fun setMediaMetaData(mediaMetaData: MediaMetadataCompat) {
7074
this.mediaMetadataCompat = mediaMetaData
7175
mediaMetaDataChange.onNext(mediaMetaData)

0 commit comments

Comments
 (0)