Skip to content

Commit 37cc848

Browse files
committed
Merge branch 'release/2.0.0-RC2'
2 parents 4cd51fa + 21ad433 commit 37cc848

File tree

6 files changed

+43
-22
lines changed

6 files changed

+43
-22
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ android {
4141
applicationId "de.stefanmedack.ccctv"
4242
minSdkVersion 21
4343
targetSdkVersion 26
44-
versionCode 4
45-
versionName "2.0.0-RC1"
44+
versionCode 5
45+
versionName "2.0.0-RC2"
4646
resConfigs "en", "de"
4747
multiDexEnabled true
4848
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

app/src/main/java/de/stefanmedack/ccctv/ui/detail/DetailActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ class DetailActivity : BaseInjectableActivity() {
3939
return (fragment?.onKeyDown(keyCode) == true) || super.onKeyDown(keyCode, event)
4040
}
4141

42+
// TODO workaround for amazon - move to new implementation
43+
override fun onVisibleBehindCanceled() {
44+
mediaController?.transportControls?.pause()
45+
super.onVisibleBehindCanceled()
46+
}
47+
4248
companion object {
4349
fun start(activity: Activity, event: Event, sharedImage: ImageView? = null) {
4450
val intent = Intent(activity, DetailActivity::class.java)

app/src/main/java/de/stefanmedack/ccctv/ui/main/MainFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class MainFragment : BrowseSupportFragment() {
7171
when (mainUiModel.conferenceGroupResource) {
7272
is Resource.Success -> {
7373
adapter = ArrayObjectAdapter(ListRowPresenter())
74-
(adapter as ArrayObjectAdapter).let {
74+
(adapter as? ArrayObjectAdapter)?.let {
7575
if(mainUiModel.offersResource is Resource.Success && mainUiModel.offersResource.data.isNotEmpty()) {
7676
it += SectionRow(HeaderItem(1L, getString(R.string.main_streams_header)))
7777
it += mainUiModel.offersResource.data.map { PageRow(HeaderItem(2L, it.conference)) }
@@ -97,7 +97,7 @@ class MainFragment : BrowseSupportFragment() {
9797
}
9898

9999
private fun shouldScrollToHeadersOnKeyDown(keyCode: Int): Boolean {
100-
return selectedPosition == adapter.size() - 1 // is last main menu item selected (AboutFragment)
100+
return adapter != null && selectedPosition == adapter.size() - 1 // is last main menu item selected (AboutFragment)
101101
&& !isShowingHeaders // is left side bar not shown?
102102
&& (checkLeftKey(keyCode) || checkUpKey(keyCode))
103103
}

app/src/main/java/de/stefanmedack/ccctv/ui/playback/ExoPlayerActivity.kt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package de.stefanmedack.ccctv.ui.playback
22

3-
import android.content.Context
43
import android.content.Intent
5-
import android.content.pm.PackageManager
64
import android.os.Bundle
75
import android.support.v4.app.FragmentActivity
8-
import android.support.v4.os.BuildCompat
96
import de.stefanmedack.ccctv.R
107
import de.stefanmedack.ccctv.util.STREAM_URL
118
import info.metadude.java.library.brockman.models.Stream
@@ -18,10 +15,23 @@ class ExoPlayerActivity : FragmentActivity() {
1815
setContentView(R.layout.activity_video_example)
1916

2017
val ft = supportFragmentManager.beginTransaction()
21-
ft.add(R.id.videoFragment, ExoPlayerFragment(), ExoPlayerFragment.TAG)
18+
ft.add(
19+
R.id.videoFragment,
20+
ExoPlayerFragment().apply {
21+
arguments = Bundle(1).also {
22+
it.putString(STREAM_URL, intent.getStringExtra(STREAM_URL))
23+
}
24+
},
25+
ExoPlayerFragment.TAG)
2226
ft.commit()
2327
}
2428

29+
override fun onVisibleBehindCanceled() {
30+
mediaController?.transportControls?.pause()
31+
super.onVisibleBehindCanceled()
32+
}
33+
34+
// TODO workaround for amazon - move to new implementation
2535
override fun onNewIntent(intent: Intent) {
2636
super.onNewIntent(intent)
2737
// This part is necessary to ensure that getIntent returns the latest intent when
@@ -33,15 +43,10 @@ class ExoPlayerActivity : FragmentActivity() {
3343
}
3444

3545
companion object {
36-
fun supportsPictureInPicture(context: Context): Boolean {
37-
return BuildCompat.isAtLeastN() && context.packageManager.hasSystemFeature(
38-
PackageManager.FEATURE_PICTURE_IN_PICTURE)
39-
}
40-
4146
fun start(activity: FragmentActivity, item: Stream) {
4247
val intent = Intent(activity, ExoPlayerActivity::class.java)
4348
val url = item.urls.find { it.type == TYPE.HLS }?.url ?: item.urls[0].url
44-
// Timber.d(url)
49+
// val url = "http://cdn.c3voc.de/hls/sX_native_hd.m3u8"
4550
intent.putExtra(STREAM_URL, url)
4651
activity.startActivity(intent)
4752
}

app/src/main/java/de/stefanmedack/ccctv/ui/playback/ExoPlayerAdapter.kt

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,9 @@ import android.support.v17.leanback.media.SurfaceHolderGlueHost
99
import android.view.SurfaceHolder
1010
import com.google.android.exoplayer2.*
1111
import com.google.android.exoplayer2.C.StreamType
12-
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory
13-
import com.google.android.exoplayer2.source.ExtractorMediaSource
1412
import com.google.android.exoplayer2.source.MediaSource
1513
import com.google.android.exoplayer2.source.TrackGroupArray
14+
import com.google.android.exoplayer2.source.hls.HlsMediaSource
1615
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector
1716
import com.google.android.exoplayer2.trackselection.TrackSelectionArray
1817
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
@@ -207,10 +206,17 @@ class ExoPlayerAdapter(context: Context) : PlayerAdapter(), Player.EventListener
207206
*/
208207
fun onCreateMediaSource(uri: Uri): MediaSource {
209208
val userAgent = Util.getUserAgent(context, "ExoPlayerAdapter")
210-
return ExtractorMediaSource(uri,
211-
DefaultHttpDataSourceFactory(userAgent, null, DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
212-
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS, true),
213-
DefaultExtractorsFactory(), null, null)
209+
210+
return HlsMediaSource(
211+
uri,
212+
DefaultHttpDataSourceFactory(
213+
userAgent,
214+
null,
215+
DefaultHttpDataSource.DEFAULT_CONNECT_TIMEOUT_MILLIS,
216+
DefaultHttpDataSource.DEFAULT_READ_TIMEOUT_MILLIS,
217+
true),
218+
null,
219+
null)
214220
}
215221

216222
private fun prepareMediaForPlaying() {

app/src/main/java/de/stefanmedack/ccctv/ui/playback/ExoPlayerFragment.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ class ExoPlayerFragment : VideoSupportFragment() {
3232
Log.w(TAG, "video player cannot obtain audio focus!")
3333
}
3434

35-
val streamUrl = activity.intent.getStringExtra(STREAM_URL)
36-
playVideo(streamUrl)
35+
val streamUrl = arguments.getString(STREAM_URL)
36+
if (streamUrl != null) {
37+
playVideo(streamUrl)
38+
} else {
39+
activity?.finish()
40+
}
3741
}
3842

3943
override fun onPause() {

0 commit comments

Comments
 (0)