From fa4fd276b349aa64f4567938c664f2bde63059b3 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Tue, 11 Oct 2022 10:00:47 +0200 Subject: [PATCH] Make PlayerMediaBrowserService be activated/deactivated --- app/src/main/AndroidManifest.xml | 3 +- .../ui/screens/settings/OtherSettings.kt | 37 ++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d133860..ba23fad 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -94,7 +94,8 @@ + android:exported="true" + android:enabled="false"> diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/OtherSettings.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/OtherSettings.kt index 664e8a9..82b37b0 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/OtherSettings.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/OtherSettings.kt @@ -1,7 +1,9 @@ package it.vfsfitvnm.vimusic.ui.screens.settings import android.annotation.SuppressLint +import android.content.ComponentName import android.content.Intent +import android.content.pm.PackageManager import android.net.Uri import android.os.Build import android.provider.Settings @@ -26,6 +28,8 @@ import it.vfsfitvnm.vimusic.LocalPlayerAwareWindowInsets import androidx.compose.foundation.layout.WindowInsetsSides import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.only +import androidx.compose.runtime.SnapshotMutationPolicy +import it.vfsfitvnm.vimusic.service.PlayerMediaBrowserService import it.vfsfitvnm.vimusic.ui.components.themed.Header import it.vfsfitvnm.vimusic.ui.styling.LocalAppearance import it.vfsfitvnm.vimusic.utils.isIgnoringBatteryOptimizations @@ -38,6 +42,26 @@ fun OtherSettings() { val context = LocalContext.current val (colorPalette) = LocalAppearance.current + var isAndroidAutoEnabled by remember { + val component = ComponentName(context, PlayerMediaBrowserService::class.java) + val disabledFlag = PackageManager.COMPONENT_ENABLED_STATE_DISABLED + val enabledFlag = PackageManager.COMPONENT_ENABLED_STATE_ENABLED + + mutableStateOf( + value = context.packageManager.getComponentEnabledSetting(component) == enabledFlag, + policy = object : SnapshotMutationPolicy { + override fun equivalent(a: Boolean, b: Boolean): Boolean { + context.packageManager.setComponentEnabledSetting( + component, + if (b) enabledFlag else disabledFlag, + PackageManager.DONT_KILL_APP + ) + return a == b + } + } + ) + } + var isInvincibilityEnabled by rememberPreference(isInvincibilityEnabledKey, false) var isIgnoringBatteryOptimizations by remember { @@ -62,9 +86,20 @@ fun OtherSettings() { ) { Header(title = "Other") + SettingsEntryGroupText(title = "ANDROID AUTO") + + SwitchSettingEntry( + title = "Android Auto", + text = "Enable Android Auto support", + isChecked = isAndroidAutoEnabled, + onCheckedChange = { isAndroidAutoEnabled = it } + ) + + SettingsGroupSpacer() + SettingsEntryGroupText(title = "SERVICE LIFETIME") - SettingsDescription(text = "If battery optimizations are applied, the playback notification can suddenly disappear when paused.") + ImportantSettingsDescription(text = "If battery optimizations are applied, the playback notification can suddenly disappear when paused.") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { SettingsDescription(text = "Since Android 12, disabling battery optimizations is required for the \"Invincible service\" option to take effect.")