Skip to content

Commit b307472

Browse files
sentinelwebsentinelweb
authored andcommitted
#496 - make AndroidVideoPlayerActivity.kt- copied from ExoPlayerActivity.kt,
1 parent 6ea6f9d commit b307472

File tree

17 files changed

+709
-71
lines changed

17 files changed

+709
-71
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,16 @@
170170
tools:ignore="LockedOrientationActivity"/>
171171

172172
<activity
173-
android:name="uk.co.sentinelweb.cuer.app.ui.exoplayer.ExoPlayerActivity"
173+
android:name="uk.co.sentinelweb.cuer.app.ui.player.exoplayer.ExoPlayerActivity"
174+
android:label="@string/title_activity_fullscreen"
175+
android:screenOrientation="landscape"
176+
tools:ignore="LockedOrientationActivity">
177+
<meta-data
178+
android:name="com.samsung.android.support.cover"
179+
android:value="true"/>
180+
</activity>
181+
<activity
182+
android:name="uk.co.sentinelweb.cuer.app.ui.player.android.AndroidVideoPlayerActivity"
174183
android:label="@string/title_activity_fullscreen"
175184
android:screenOrientation="landscape"
176185
tools:ignore="LockedOrientationActivity">

app/src/main/java/uk/co/sentinelweb/cuer/app/di/Modules.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import uk.co.sentinelweb.cuer.app.ui.common.ribbon.AndroidRibbonCreator
3737
import uk.co.sentinelweb.cuer.app.ui.common.ribbon.RibbonCreator
3838
import uk.co.sentinelweb.cuer.app.ui.common.views.PlayYangProgress
3939
import uk.co.sentinelweb.cuer.app.ui.common.views.description.DescriptionView
40-
import uk.co.sentinelweb.cuer.app.ui.exoplayer.ExoPlayerContract
4140
import uk.co.sentinelweb.cuer.app.ui.filebrowser.FileBrowserFragment
4241
import uk.co.sentinelweb.cuer.app.ui.filebrowser.dialog.FilesDialogFragment
4342
import uk.co.sentinelweb.cuer.app.ui.filebrowser.transfers.TransfersFragment
@@ -46,6 +45,8 @@ import uk.co.sentinelweb.cuer.app.ui.main.MainContract
4645
import uk.co.sentinelweb.cuer.app.ui.onboarding.OnboardingFragment
4746
import uk.co.sentinelweb.cuer.app.ui.play_control.CastPlayerFragment
4847
import uk.co.sentinelweb.cuer.app.ui.play_control.mvi.CastPlayerMviFragment
48+
import uk.co.sentinelweb.cuer.app.ui.player.android.AndroidVideoPlayerContract
49+
import uk.co.sentinelweb.cuer.app.ui.player.exoplayer.ExoPlayerContract
4950
import uk.co.sentinelweb.cuer.app.ui.playlist.PlaylistMviFragment
5051
import uk.co.sentinelweb.cuer.app.ui.playlist_edit.PlaylistEditContract
5152
import uk.co.sentinelweb.cuer.app.ui.playlist_item_edit.PlaylistItemEditContract
@@ -88,6 +89,7 @@ import uk.co.sentinelweb.cuer.app.util.prefs.GeneralPreferencesWrapper
8889
import uk.co.sentinelweb.cuer.app.util.prefs.SharedPrefsWrapper
8990
import uk.co.sentinelweb.cuer.app.util.remote.AndroidWakeLockManager
9091
import uk.co.sentinelweb.cuer.app.util.remote.AppPlayerLaunchHost
92+
import uk.co.sentinelweb.cuer.app.util.remote.VideoWakeLockManager
9193
import uk.co.sentinelweb.cuer.app.util.share.SharingShortcutsManager
9294
import uk.co.sentinelweb.cuer.app.util.share.scan.AndroidLinkScanner
9395
import uk.co.sentinelweb.cuer.app.util.share.scan.LinkScanner
@@ -158,6 +160,7 @@ object Modules {
158160
CastDialogFragment.fragmentModule,
159161
NodesDialogFragment.fragmentModule,
160162
ExoPlayerContract.activityModule,
163+
AndroidVideoPlayerContract.activityModule,
161164
TransfersFragment.fragmentModule,
162165
FilesDialogFragment.fragmentModule,
163166
)
@@ -216,6 +219,7 @@ object Modules {
216219
}
217220
}
218221
single<WakeLockManager> { AndroidWakeLockManager(androidApplication()) }
222+
single { VideoWakeLockManager(androidApplication()) }
219223
single<WifiStateProvider> { WifiStateReceiver(androidApplication(), get()) }
220224
single<PlayerLaunchHost> { AppPlayerLaunchHost(androidApplication(), get()) }
221225
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package uk.co.sentinelweb.cuer.app.ui.common.compose.video
2+
3+
import android.app.Activity
4+
import android.view.WindowManager
5+
import androidx.compose.runtime.Composable
6+
import androidx.compose.runtime.LaunchedEffect
7+
import androidx.compose.ui.platform.LocalView
8+
9+
@Composable
10+
fun KeepScreenOnHandler(keepScreenOn: Boolean) {
11+
val view = LocalView.current
12+
LaunchedEffect(keepScreenOn) {
13+
val window = (view.context as Activity).window
14+
if (keepScreenOn) {
15+
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
16+
} else {
17+
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
18+
}
19+
}
20+
}

app/src/main/java/uk/co/sentinelweb/cuer/app/ui/common/navigation/NavigationRouter.kt

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import uk.co.sentinelweb.cuer.app.ui.common.navigation.NavigationModel.Param.*
1616
import uk.co.sentinelweb.cuer.app.ui.common.navigation.NavigationModel.Param.PLAYLIST_ITEM
1717
import uk.co.sentinelweb.cuer.app.ui.common.navigation.NavigationModel.Target.*
1818
import uk.co.sentinelweb.cuer.app.ui.common.navigation.NavigationModel.Target.Companion.KEY
19-
import uk.co.sentinelweb.cuer.app.ui.exoplayer.ExoPlayerActivity
19+
import uk.co.sentinelweb.cuer.app.ui.player.android.AndroidVideoPlayerActivity
20+
import uk.co.sentinelweb.cuer.app.ui.player.exoplayer.ExoPlayerActivity
2021
import uk.co.sentinelweb.cuer.app.ui.share.ShareActivity
2122
import uk.co.sentinelweb.cuer.app.ui.ytplayer.ayt_land.AytLandActivity
2223
import uk.co.sentinelweb.cuer.app.ui.ytplayer.ayt_portrait.AytPortraitActivity
@@ -27,7 +28,7 @@ import uk.co.sentinelweb.cuer.domain.PlaylistAndItemDomain
2728
import uk.co.sentinelweb.cuer.domain.PlaylistItemDomain
2829
import uk.co.sentinelweb.cuer.domain.ext.serialise
2930

30-
class NavigationRouter (
31+
class NavigationRouter(
3132
private val activity: Activity,
3233
private val toastWrapper: ToastWrapper,
3334
private val ytJavaApi: PlatformLaunchWrapper,
@@ -41,56 +42,60 @@ class NavigationRouter (
4142
when (nav.target) {
4243
NAV_NONE -> Unit
4344
LOCAL_PLAYER_FULL ->
44-
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)?.let {
45-
//YoutubeFullScreenActivity.start(activity, it)
46-
AytLandActivity.start(activity, it)
47-
}
45+
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)
46+
?.let { AytLandActivity.start(activity, it) }
4847
?: throw IllegalArgumentException("$LOCAL_PLAYER_FULL: $PLAYLIST_ITEM param required")
4948

5049
LOCAL_PLAYER -> {
51-
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)?.let {
52-
AytPortraitActivity.start(activity, it)
53-
} ?: throw IllegalArgumentException("$LOCAL_PLAYER: $PLAYLIST_ITEM param required")
50+
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)
51+
?.let { AytPortraitActivity.start(activity, it) }
52+
?: throw IllegalArgumentException("$LOCAL_PLAYER: $PLAYLIST_ITEM param required")
5453
}
5554

5655
EXO_PLAYER_FULL -> {
57-
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)?.let {
58-
ExoPlayerActivity.start(activity, it)
59-
} ?: throw IllegalArgumentException("$LOCAL_PLAYER: $PLAYLIST_ITEM param required")
56+
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)
57+
?.let { ExoPlayerActivity.start(activity, it, ExoPlayerActivity::class) }
58+
?: throw IllegalArgumentException("$LOCAL_PLAYER: $PLAYLIST_ITEM param required")
59+
}
60+
61+
ANDROID_VIDEO_PLAYER_FULL -> {
62+
(nav.params[PLAYLIST_AND_ITEM] as PlaylistAndItemDomain?)
63+
?.let { ExoPlayerActivity.start(activity, it, AndroidVideoPlayerActivity::class) }
64+
?: throw IllegalArgumentException("$LOCAL_PLAYER: $PLAYLIST_ITEM param required")
6065
}
6166

6267
WEB_LINK ->
63-
nav.params[LINK]?.let {
64-
urlLauncher.launchWithChooser(it.toString())
65-
} ?: throw IllegalArgumentException("$WEB_LINK: $LINK param required")
68+
nav.params[LINK]
69+
?.let { urlLauncher.launchWithChooser(it.toString()) }
70+
?: throw IllegalArgumentException("$WEB_LINK: $LINK param required")
6671

6772
CRYPTO_LINK ->
6873
nav.getParam<LinkDomain.CryptoLinkDomain>(CRYPTO_ADDRESS)
6974
?.let { cryptoLauncher.launch(it) }
7075
?: throw IllegalArgumentException("$CRYPTO_LINK: $CRYPTO_ADDRESS param required")
7176

7277
NAV_BACK -> {
73-
nav.params[BACK_PARAMS]?.let {
74-
navController?.popBackStack(it as Int, false)
75-
} ?: navController?.popBackStack()
78+
nav.params[BACK_PARAMS]
79+
?.let { navController?.popBackStack(it as Int, false) }
80+
?: navController?.popBackStack()
7681
}
7782

7883
NAV_FINISH -> activity.finish()
7984

80-
YOUTUBE_CHANNEL -> if (!ytJavaApi.launchChannel(nav.params[CHANNEL_ID] as String)) {
81-
toastWrapper.show("can't launch channel")
82-
}
85+
YOUTUBE_CHANNEL -> ytJavaApi.launchChannel(nav.params[CHANNEL_ID] as String)
86+
.takeIf { it }
87+
?: { toastWrapper.show("can't launch channel") }
8388

84-
YOUTUBE_VIDEO -> if (!ytJavaApi.launchVideoSystem(nav.params[PLATFORM_ID] as String)) {
85-
toastWrapper.show("can't launch channel")
86-
}
89+
YOUTUBE_VIDEO -> ytJavaApi.launchVideoSystem(nav.params[PLATFORM_ID] as String)
90+
.takeIf { it }
91+
?: { toastWrapper.show("can't launch channel") }
8792

8893
YOUTUBE_VIDEO_POS ->
8994
(nav.params[PLAYLIST_ITEM] as? PlaylistItemDomain)?.media
9095
?.also {
91-
if (!ytJavaApi.launchVideoWithTimeSystem(it)) {
92-
toastWrapper.show("can't launch media with time")
93-
}
96+
ytJavaApi.launchVideoWithTimeSystem(it)
97+
.takeIf { it }
98+
?: { toastWrapper.show("can't launch media with time") }
9499
}
95100

96101
PLAYLIST -> navController?.navigate(
@@ -213,7 +218,7 @@ fun Scope.navigationRouter(
213218
if (isFragment) {
214219
try {
215220
(get() as Fragment).findNavController()
216-
} catch (e: IllegalStateException) {
221+
} catch (_: IllegalStateException) {
217222
null
218223
}
219224
} else {

0 commit comments

Comments
 (0)