mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-06-14 18:30:50 +02:00
Fixes generateForegroundServiceDidNotStartInTimeException on Samsung phones
This commit is contained in:
parent
70c4c69bbf
commit
0af141c5b7
@ -26,15 +26,35 @@ class PlaybackService : MediaSessionService() {
|
|||||||
return ProgressiveMediaSource.Factory(VideoCache.get(Amethyst.instance, HttpClient.getHttpClient()))
|
return ProgressiveMediaSource.Factory(VideoCache.get(Amethyst.instance, HttpClient.getHttpClient()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun lazyHlsDS(): MultiPlayerPlaybackManager {
|
||||||
|
managerHls?.let { return it }
|
||||||
|
|
||||||
|
val newInstance = MultiPlayerPlaybackManager(newHslDataSource(), videoViewedPositionCache)
|
||||||
|
managerHls = newInstance
|
||||||
|
return newInstance
|
||||||
|
}
|
||||||
|
|
||||||
|
fun lazyProgressiveDS(): MultiPlayerPlaybackManager {
|
||||||
|
managerProgressive?.let { return it }
|
||||||
|
|
||||||
|
val newInstance = MultiPlayerPlaybackManager(newProgressiveDataSource(), videoViewedPositionCache)
|
||||||
|
managerProgressive = newInstance
|
||||||
|
return newInstance
|
||||||
|
}
|
||||||
|
|
||||||
|
fun lazyLocalDS(): MultiPlayerPlaybackManager {
|
||||||
|
managerLocal?.let { return it }
|
||||||
|
|
||||||
|
val newInstance = MultiPlayerPlaybackManager(cachedPositions = videoViewedPositionCache)
|
||||||
|
managerLocal = newInstance
|
||||||
|
return newInstance
|
||||||
|
}
|
||||||
|
|
||||||
// Create your Player and MediaSession in the onCreate lifecycle event
|
// Create your Player and MediaSession in the onCreate lifecycle event
|
||||||
@OptIn(UnstableApi::class)
|
@OptIn(UnstableApi::class)
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
super.onCreate()
|
super.onCreate()
|
||||||
|
|
||||||
managerHls = MultiPlayerPlaybackManager(newHslDataSource(), videoViewedPositionCache)
|
|
||||||
managerProgressive = MultiPlayerPlaybackManager(newProgressiveDataSource(), videoViewedPositionCache)
|
|
||||||
managerLocal = MultiPlayerPlaybackManager(cachedPositions = videoViewedPositionCache)
|
|
||||||
|
|
||||||
// Stop all videos and recreates all managers when the proxy changes.
|
// Stop all videos and recreates all managers when the proxy changes.
|
||||||
HttpClient.proxyChangeListeners.add(this@PlaybackService::onProxyUpdated)
|
HttpClient.proxyChangeListeners.add(this@PlaybackService::onProxyUpdated)
|
||||||
}
|
}
|
||||||
@ -62,11 +82,11 @@ class PlaybackService : MediaSessionService() {
|
|||||||
|
|
||||||
fun getAppropriateMediaSessionManager(fileName: String): MultiPlayerPlaybackManager? {
|
fun getAppropriateMediaSessionManager(fileName: String): MultiPlayerPlaybackManager? {
|
||||||
return if (fileName.startsWith("file")) {
|
return if (fileName.startsWith("file")) {
|
||||||
managerLocal
|
lazyLocalDS()
|
||||||
} else if (fileName.endsWith("m3u8")) {
|
} else if (fileName.endsWith("m3u8")) {
|
||||||
managerHls
|
lazyHlsDS()
|
||||||
} else {
|
} else {
|
||||||
managerProgressive
|
lazyProgressiveDS()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user