mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-08-06 19:38:58 +00:00
Update Play account and foreground service compliance
This commit is contained in:
parent
b60995324b
commit
8937dc7b6b
10 changed files with 49 additions and 2 deletions
18
androidApp/src/playstore/AndroidManifest.xml
Normal file
18
androidApp/src/playstore/AndroidManifest.xml
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<uses-permission
|
||||
android:name="android.permission.FOREGROUND_SERVICE"
|
||||
tools:node="remove" />
|
||||
<uses-permission
|
||||
android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"
|
||||
tools:node="remove" />
|
||||
|
||||
<application>
|
||||
<service
|
||||
android:name="com.nuvio.app.features.player.PlayerNowPlayingService"
|
||||
tools:node="remove" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
@ -10,4 +10,5 @@ actual object AppFeaturePolicy {
|
|||
actual val heroTrailerPlaybackSupported: Boolean = true
|
||||
actual val inAppUpdaterEnabled: Boolean = true
|
||||
actual val imdbRatingLogoEnabled: Boolean = true
|
||||
actual val mediaPlaybackForegroundServiceEnabled: Boolean = true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import android.os.Looper
|
|||
import android.os.SystemClock
|
||||
import android.util.Log
|
||||
import com.nuvio.app.R
|
||||
import com.nuvio.app.core.build.AppFeaturePolicy
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.lang.ref.WeakReference
|
||||
import java.net.HttpURLConnection
|
||||
|
|
@ -106,7 +107,9 @@ internal class AndroidPlayerNowPlayingController(
|
|||
get() = !released && metadata != null
|
||||
|
||||
init {
|
||||
createNotificationChannel(appContext)
|
||||
if (AppFeaturePolicy.mediaPlaybackForegroundServiceEnabled) {
|
||||
createNotificationChannel(appContext)
|
||||
}
|
||||
AndroidNowPlayingActionDispatcher.register(this)
|
||||
}
|
||||
|
||||
|
|
@ -288,6 +291,7 @@ internal class AndroidPlayerNowPlayingController(
|
|||
}
|
||||
|
||||
private fun publishNotification() {
|
||||
if (!AppFeaturePolicy.mediaPlaybackForegroundServiceEnabled) return
|
||||
val currentMetadata = metadata ?: return
|
||||
val notification = buildNotification(
|
||||
context = appContext,
|
||||
|
|
@ -377,6 +381,7 @@ class PlayerNowPlayingService : Service() {
|
|||
|
||||
companion object {
|
||||
internal fun publish(context: Context, notification: Notification) {
|
||||
if (!AppFeaturePolicy.mediaPlaybackForegroundServiceEnabled) return
|
||||
PlayerNowPlayingServiceState.notification = notification
|
||||
val intent = Intent(context, PlayerNowPlayingService::class.java)
|
||||
.setAction(ACTION_START_FOREGROUND)
|
||||
|
|
@ -394,6 +399,7 @@ class PlayerNowPlayingService : Service() {
|
|||
}
|
||||
|
||||
internal fun hide(context: Context) {
|
||||
if (!AppFeaturePolicy.mediaPlaybackForegroundServiceEnabled) return
|
||||
PlayerNowPlayingServiceState.notification = null
|
||||
runCatching { context.stopService(Intent(context, PlayerNowPlayingService::class.java)) }
|
||||
context.getSystemService(NotificationManager::class.java)
|
||||
|
|
|
|||
|
|
@ -3,11 +3,12 @@ package com.nuvio.app.core.build
|
|||
actual object AppFeaturePolicy {
|
||||
actual val pluginsEnabled: Boolean = false
|
||||
actual val supportersContributorsPageEnabled: Boolean = true
|
||||
actual val accountDeletionEnabled: Boolean = false
|
||||
actual val accountDeletionEnabled: Boolean = true
|
||||
actual val personalMediaAddonCopyEnabled: Boolean = false
|
||||
actual val p2pEnabled: Boolean = true
|
||||
actual val trailerPlaybackMode: TrailerPlaybackMode = TrailerPlaybackMode.EXTERNAL
|
||||
actual val heroTrailerPlaybackSupported: Boolean = false
|
||||
actual val inAppUpdaterEnabled: Boolean = false
|
||||
actual val imdbRatingLogoEnabled: Boolean = false
|
||||
actual val mediaPlaybackForegroundServiceEnabled: Boolean = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -432,6 +432,7 @@
|
|||
<string name="compose_settings_page_playback">Playback</string>
|
||||
<string name="compose_settings_page_plugins">Plugins</string>
|
||||
<string name="compose_settings_page_poster_customization">Poster Card Style</string>
|
||||
<string name="compose_settings_page_privacy_policy">Privacy Policy</string>
|
||||
<string name="compose_settings_page_root">Settings</string>
|
||||
<string name="compose_settings_page_streams">Streams</string>
|
||||
<string name="settings_appearance_section_streams">STREAMS</string>
|
||||
|
|
@ -454,6 +455,7 @@
|
|||
<string name="compose_settings_root_general_section">GENERAL</string>
|
||||
<string name="compose_settings_root_integrations_description">Manage available integrations</string>
|
||||
<string name="compose_settings_root_notifications_description">Manage episode release alerts and send a test notification.</string>
|
||||
<string name="compose_settings_root_privacy_policy_description">Learn how Nuvio handles your data</string>
|
||||
<string name="compose_settings_root_streams_description">Stream result display and badge URL rules.</string>
|
||||
<string name="compose_settings_root_switch_profile_description">Change to a different profile.</string>
|
||||
<string name="compose_settings_root_switch_profile_title">Switch Profile</string>
|
||||
|
|
|
|||
|
|
@ -15,4 +15,5 @@ expect object AppFeaturePolicy {
|
|||
val heroTrailerPlaybackSupported: Boolean
|
||||
val inAppUpdaterEnabled: Boolean
|
||||
val imdbRatingLogoEnabled: Boolean
|
||||
val mediaPlaybackForegroundServiceEnabled: Boolean
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,10 +15,12 @@ import androidx.compose.material.icons.rounded.Notifications
|
|||
import androidx.compose.material.icons.rounded.Palette
|
||||
import androidx.compose.material.icons.rounded.People
|
||||
import androidx.compose.material.icons.rounded.PlayArrow
|
||||
import androidx.compose.material.icons.rounded.Policy
|
||||
import androidx.compose.material.icons.rounded.Tune
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Text
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.LocalUriHandler
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import com.nuvio.app.core.build.AppVersionConfig
|
||||
|
|
@ -32,6 +34,7 @@ import nuvio.composeapp.generated.resources.compose_settings_page_integrations
|
|||
import nuvio.composeapp.generated.resources.compose_settings_page_licenses_attributions
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_notifications
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_playback
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_privacy_policy
|
||||
import nuvio.composeapp.generated.resources.compose_settings_page_supporters_contributors
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_account_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_appearance_description
|
||||
|
|
@ -43,6 +46,7 @@ import nuvio.composeapp.generated.resources.compose_settings_root_downloads_titl
|
|||
import nuvio.composeapp.generated.resources.compose_settings_root_general_section
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_integrations_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_notifications_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_privacy_policy_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_switch_profile_description
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_switch_profile_title
|
||||
import nuvio.composeapp.generated.resources.compose_settings_root_trakt_description
|
||||
|
|
@ -59,6 +63,8 @@ import nuvio.composeapp.generated.resources.about_supporters_contributors_subtit
|
|||
import nuvio.composeapp.generated.resources.about_licenses_attributions_subtitle
|
||||
import org.jetbrains.compose.resources.stringResource
|
||||
|
||||
private const val PRIVACY_POLICY_URL = "https://nuvio.tv/privacy-policy"
|
||||
|
||||
internal fun LazyListScope.settingsRootContent(
|
||||
isTablet: Boolean,
|
||||
onPlaybackClick: () -> Unit,
|
||||
|
|
@ -177,6 +183,7 @@ internal fun LazyListScope.settingsRootContent(
|
|||
}
|
||||
if (showAboutSection) {
|
||||
item {
|
||||
val uriHandler = LocalUriHandler.current
|
||||
SettingsSection(
|
||||
title = stringResource(Res.string.compose_settings_root_about_section),
|
||||
isTablet = isTablet,
|
||||
|
|
@ -192,6 +199,14 @@ internal fun LazyListScope.settingsRootContent(
|
|||
)
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
}
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_privacy_policy),
|
||||
description = stringResource(Res.string.compose_settings_root_privacy_policy_description),
|
||||
icon = Icons.Rounded.Policy,
|
||||
isTablet = isTablet,
|
||||
onClick = { uriHandler.openUri(PRIVACY_POLICY_URL) },
|
||||
)
|
||||
SettingsGroupDivider(isTablet = isTablet)
|
||||
SettingsNavigationRow(
|
||||
title = stringResource(Res.string.compose_settings_page_licenses_attributions),
|
||||
description = stringResource(Res.string.about_licenses_attributions_subtitle),
|
||||
|
|
|
|||
|
|
@ -10,4 +10,5 @@ actual object AppFeaturePolicy {
|
|||
actual val heroTrailerPlaybackSupported: Boolean = false
|
||||
actual val inAppUpdaterEnabled: Boolean = false
|
||||
actual val imdbRatingLogoEnabled: Boolean = true
|
||||
actual val mediaPlaybackForegroundServiceEnabled: Boolean = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,4 +10,5 @@ actual object AppFeaturePolicy {
|
|||
actual val heroTrailerPlaybackSupported: Boolean = false
|
||||
actual val inAppUpdaterEnabled: Boolean = false
|
||||
actual val imdbRatingLogoEnabled: Boolean = false
|
||||
actual val mediaPlaybackForegroundServiceEnabled: Boolean = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,4 +10,5 @@ actual object AppFeaturePolicy {
|
|||
actual val heroTrailerPlaybackSupported: Boolean = false
|
||||
actual val inAppUpdaterEnabled: Boolean = false
|
||||
actual val imdbRatingLogoEnabled: Boolean = true
|
||||
actual val mediaPlaybackForegroundServiceEnabled: Boolean = false
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue