diff --git a/app/src/main/java/com/rekaapps/autodnd/data/repository/AppRepository.kt b/app/src/main/java/com/rekaapps/autodnd/data/repository/AppRepository.kt index 649761f..169f994 100644 --- a/app/src/main/java/com/rekaapps/autodnd/data/repository/AppRepository.kt +++ b/app/src/main/java/com/rekaapps/autodnd/data/repository/AppRepository.kt @@ -24,6 +24,8 @@ class AppRepository private val dao: MonitoredAppDao, private val preferences: AppPreferences, ) { + private var cachedInstalledApps: List>? = null + /** * Returns all installed user apps merged with their monitored state from the database. */ @@ -85,18 +87,24 @@ class AppRepository * Returns a sorted list of installed user-facing applications. */ private fun getInstalledUserApps(): List> { + cachedInstalledApps?.let { return it } + val pm = context.packageManager - return pm - .getInstalledApplications(PackageManager.GET_META_DATA) - .filter { app -> - // Exclude system apps without a launcher intent - val isSystem = app.flags and ApplicationInfo.FLAG_SYSTEM != 0 - val hasLauncher = pm.getLaunchIntentForPackage(app.packageName) != null - !isSystem || hasLauncher - }.filter { app -> app.packageName != context.packageName } - .map { app -> - val name = pm.getApplicationLabel(app).toString() - app.packageName to name - }.sortedBy { (_, name) -> name.lowercase() } + val apps = + pm + .getInstalledApplications(PackageManager.GET_META_DATA) + .filter { app -> + // Exclude system apps without a launcher intent + val isSystem = app.flags and ApplicationInfo.FLAG_SYSTEM != 0 + val hasLauncher = pm.getLaunchIntentForPackage(app.packageName) != null + !isSystem || hasLauncher + }.filter { app -> app.packageName != context.packageName } + .map { app -> + val name = pm.getApplicationLabel(app).toString() + app.packageName to name + }.sortedBy { (_, name) -> name.lowercase() } + + cachedInstalledApps = apps + return apps } } diff --git a/app/src/main/java/com/rekaapps/autodnd/services/AppMonitorService.kt b/app/src/main/java/com/rekaapps/autodnd/services/AppMonitorService.kt index ceb3441..3018351 100644 --- a/app/src/main/java/com/rekaapps/autodnd/services/AppMonitorService.kt +++ b/app/src/main/java/com/rekaapps/autodnd/services/AppMonitorService.kt @@ -5,6 +5,7 @@ import android.app.PendingIntent import android.app.Service import android.content.Context import android.content.Intent +import android.content.pm.ServiceInfo import android.os.IBinder import android.util.Log import androidx.core.app.NotificationCompat @@ -50,7 +51,11 @@ class AppMonitorService : Service() { } private fun startMonitoring() { - startForeground(NOTIFICATION_ID, buildNotification()) + startForeground( + NOTIFICATION_ID, + buildNotification(), + ServiceInfo.FOREGROUND_SERVICE_TYPE_SPECIAL_USE, + ) monitorJob?.cancel() monitorJob = serviceScope.launch { diff --git a/app/src/main/java/com/rekaapps/autodnd/ui/about/AboutScreen.kt b/app/src/main/java/com/rekaapps/autodnd/ui/about/AboutScreen.kt index 4e1b0ac..05b2495 100644 --- a/app/src/main/java/com/rekaapps/autodnd/ui/about/AboutScreen.kt +++ b/app/src/main/java/com/rekaapps/autodnd/ui/about/AboutScreen.kt @@ -63,7 +63,7 @@ fun AboutScreen() { ) { // App icon Image( - painter = painterResource(R.mipmap.ic_launcher), + painter = painterResource(R.drawable.app_logo), contentDescription = "AutoDND icon", modifier = Modifier diff --git a/app/src/main/res/drawable/app_logo.webp b/app/src/main/res/drawable/app_logo.webp new file mode 100644 index 0000000..3baaf19 Binary files /dev/null and b/app/src/main/res/drawable/app_logo.webp differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 819b30a..264785c 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -4,8 +4,7 @@ android:height="108dp" android:viewportWidth="108" android:viewportHeight="108"> - + android:pathData="M0,0 h108 v108 h-108 z"/> diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..3baaf19 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 584bb0d..11b7f92 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,4 +1,4 @@ -