diff --git a/readium/navigator/src/main/java/org/readium/r2/navigator/media/MediaService.kt b/readium/navigator/src/main/java/org/readium/r2/navigator/media/MediaService.kt index d88d0000b4..c80ba2ccd4 100644 --- a/readium/navigator/src/main/java/org/readium/r2/navigator/media/MediaService.kt +++ b/readium/navigator/src/main/java/org/readium/r2/navigator/media/MediaService.kt @@ -11,6 +11,7 @@ import android.app.PendingIntent import android.content.Context import android.content.Intent import android.graphics.Bitmap +import android.os.Build import android.os.Bundle import android.os.Process import android.os.ResultReceiver @@ -303,7 +304,7 @@ open class MediaService : MediaBrowserServiceCompat(), CoroutineScope by MainSco val currentNavigator: StateFlow get() = navigator fun getNavigator(context: Context, publication: Publication, publicationId: PublicationId, initialLocator: Locator?): MediaSessionNavigator { - context.startService(Intent(context, serviceClass)) + context.startForegroundServiceCompat(Intent(context, serviceClass)) currentNavigator.value ?.takeIf { it.publicationId == publicationId } @@ -329,6 +330,14 @@ open class MediaService : MediaBrowserServiceCompat(), CoroutineScope by MainSco } +private fun Context.startForegroundServiceCompat(intent: Intent) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(intent) + } else { + startService(intent) + } +} + // FIXME: Move to r2-shared internal fun createIfNull(property: KMutableProperty0, owner: Any, factory: () -> T): T = property.get() ?: synchronized(owner) { diff --git a/readium/shared/src/main/java/org/readium/r2/shared/FuelPromiseExtension.kt b/readium/shared/src/main/java/org/readium/r2/shared/FuelPromiseExtension.kt index a6d186a83a..555f827b18 100644 --- a/readium/shared/src/main/java/org/readium/r2/shared/FuelPromiseExtension.kt +++ b/readium/shared/src/main/java/org/readium/r2/shared/FuelPromiseExtension.kt @@ -16,6 +16,7 @@ import nl.komponents.kovenant.Promise import nl.komponents.kovenant.deferred import nl.komponents.kovenant.task +@Deprecated("Dependency to Fuel and kovenant will eventually be removed from the Readium Toolkit") fun Request.promise(): Promise, Exception> { val deferred = deferred, Exception>() task { response() } success {