From 38432a3cdc84bb217281eb19672641e1c0760dcd Mon Sep 17 00:00:00 2001 From: Nite Date: Fri, 4 Apr 2025 12:55:13 +0000 Subject: [PATCH] Updated Min SDK to 26 --- .gitignore | 1 + gradle/versions.gradle | 2 +- .../ultrasonic/activity/NavigationActivity.kt | 2 +- .../kotlin/org/moire/ultrasonic/app/UApp.kt | 4 +- .../imageloader/CoverArtRequestHandler.kt | 7 -- .../provider/UltrasonicAppWidgetProvider.kt | 13 +-- .../ultrasonic/service/DownloadService.kt | 7 +- .../service/MediaLibrarySessionCallback.kt | 57 ++++++------- .../ultrasonic/service/PlaybackService.kt | 15 +--- .../org/moire/ultrasonic/util/FileUtil.kt | 13 +-- .../org/moire/ultrasonic/util/LocaleHelper.kt | 16 +--- .../util/SelectCacheActivityContract.kt | 3 +- .../org/moire/ultrasonic/util/ShortcutUtil.kt | 3 - .../kotlin/org/moire/ultrasonic/util/Util.kt | 75 +++++++----------- ultrasonic/src/main/res/layout/chat.xml | 1 + .../src/main/res/layout/save_playlist.xml | 1 + .../src/main/res/layout/share_details.xml | 1 + .../src/main/res/layout/time_span_dialog.xml | 1 + ultrasonic/src/main/res/menu-v26/rating.xml | 48 ----------- ultrasonic/src/main/res/menu/rating.xml | 6 ++ .../ic_launcher.xml | 0 .../ic_launcher_round.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2394 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4119 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1680 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2629 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 3295 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 5954 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 4745 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 8914 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 6759 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 13105 -> 0 bytes .../imageloader/CoverArtRequestHandlerTest.kt | 11 +++ 33 files changed, 91 insertions(+), 196 deletions(-) delete mode 100644 ultrasonic/src/main/res/menu-v26/rating.xml rename ultrasonic/src/main/res/{mipmap-anydpi-v26 => mipmap-anydpi}/ic_launcher.xml (100%) rename ultrasonic/src/main/res/{mipmap-anydpi-v26 => mipmap-anydpi}/ic_launcher_round.xml (100%) delete mode 100644 ultrasonic/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 ultrasonic/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 ultrasonic/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 ultrasonic/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 ultrasonic/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 ultrasonic/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 ultrasonic/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 ultrasonic/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 ultrasonic/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 ultrasonic/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/.gitignore b/.gitignore index abff6abb..88181110 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ out/ # Gradle files .gradle/ +.kotlin/ build/ # Local configuration file (sdk path, etc) diff --git a/gradle/versions.gradle b/gradle/versions.gradle index 799d9bc9..b147fc2b 100644 --- a/gradle/versions.gradle +++ b/gradle/versions.gradle @@ -1,5 +1,5 @@ ext.versions = [ - minSdk : 21, + minSdk : 26, targetSdk : 33, compileSdk : 35, ] diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt index b71e402a..3d3a339e 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/activity/NavigationActivity.kt @@ -227,7 +227,7 @@ class NavigationActivity : ScopeActivity() { // Setup app shortcuts on supported devices, but not on first start, when the server // is not configured yet. - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1 && !UApp.instance!!.isFirstRun) { + if (!UApp.instance!!.isFirstRun) { ShortcutUtil.registerShortcuts(this) } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt index 8f90d438..fa64f100 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/app/UApp.kt @@ -114,10 +114,8 @@ private fun VmPolicy.Builder.detectAllExceptSocket(): VmPolicy.Builder { detectLeakedClosableObjects() detectLeakedRegistrationObjects() detectFileUriExposure() + detectContentUriWithoutPermission() - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - detectContentUriWithoutPermission() - } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { detectCredentialProtectedWhileLocked() } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/imageloader/CoverArtRequestHandler.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/imageloader/CoverArtRequestHandler.kt index 379d79f9..ea494873 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/imageloader/CoverArtRequestHandler.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/imageloader/CoverArtRequestHandler.kt @@ -2,7 +2,6 @@ package org.moire.ultrasonic.imageloader import android.graphics.Bitmap import android.graphics.BitmapFactory -import android.os.Build import com.squareup.picasso.Picasso.LoadedFrom.DISK import com.squareup.picasso.Picasso.LoadedFrom.NETWORK import com.squareup.picasso.Request @@ -85,12 +84,6 @@ class CoverArtRequestHandler(private val client: SubsonicAPIClient) : RequestHan BitmapFactory.decodeFile(path, opt) // Now set the remaining flags - @Suppress("DEPRECATION") - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { - opt.inDither = true - opt.inPreferQualityOverSpeed = true - } - opt.inSampleSize = Util.calculateInSampleSize( opt, size, diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt index 18f889f8..697d8ecb 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.kt @@ -13,7 +13,6 @@ import android.appwidget.AppWidgetProvider import android.content.ComponentName import android.content.Context import android.content.Intent -import android.os.Build import android.os.Bundle import android.os.Environment import android.view.KeyEvent @@ -218,10 +217,8 @@ open class UltrasonicAppWidgetProvider : AppWidgetProvider() { intent.action = Intent.ACTION_MAIN intent.addCategory(Intent.CATEGORY_LAUNCHER) var flags = PendingIntent.FLAG_UPDATE_CURRENT - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - // needed starting Android 12 (S = 31) - flags = flags or PendingIntent.FLAG_IMMUTABLE - } + // needed starting Android 12 (S = 31) + flags = flags or PendingIntent.FLAG_IMMUTABLE var pendingIntent = PendingIntent.getActivity(context, 10, intent, flags) views.setOnClickPendingIntent(R.id.appwidget_coverart, pendingIntent) @@ -235,10 +232,8 @@ open class UltrasonicAppWidgetProvider : AppWidgetProvider() { KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) ) flags = 0 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - // needed starting Android 12 (S = 31) - flags = PendingIntent.FLAG_IMMUTABLE - } + // needed starting Android 12 (S = 31) + flags = PendingIntent.FLAG_IMMUTABLE pendingIntent = PendingIntent.getBroadcast(context, 11, intent, flags) views.setOnClickPendingIntent(R.id.control_play, pendingIntent) intent = Intent(Constants.CMD_PROCESS_KEYCODE) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadService.kt index e373884e..94fac688 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/DownloadService.kt @@ -12,7 +12,6 @@ import android.app.Service import android.content.Intent import android.net.wifi.WifiManager import android.os.Binder -import android.os.Build import android.os.Handler import android.os.IBinder import android.os.Looper @@ -509,11 +508,7 @@ class DownloadService : Service(), KoinComponent { try { val context = UApp.applicationContext() val intent = Intent(context, DownloadService::class.java) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context.startForegroundService(intent) - } else { - context.startService(intent) - } + context.startForegroundService(intent) } catch (e: IllegalStateException) { Timber.w(e, "Failed to start download service: the app is in the background") } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaLibrarySessionCallback.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaLibrarySessionCallback.kt index fbe2b37c..4277d36e 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaLibrarySessionCallback.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/MediaLibrarySessionCallback.kt @@ -7,7 +7,6 @@ package org.moire.ultrasonic.service -import android.os.Build import android.os.Bundle import androidx.annotation.OptIn import androidx.car.app.connection.CarConnection @@ -268,40 +267,36 @@ class MediaLibrarySessionCallback : } private fun configureRepeatMode(player: Player) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - Timber.d("Car app library available, observing CarConnection") + Timber.d("Car app library available, observing CarConnection") - val originalRepeatMode = player.repeatMode + val originalRepeatMode = player.repeatMode - var lastCarConnectionType = -1 + var lastCarConnectionType = -1 - CarConnection(UApp.applicationContext()).type.observeForever { - if (lastCarConnectionType == it) { - return@observeForever - } - - lastCarConnectionType = it - - Timber.d("CarConnection type changed to %s", it) - - when (it) { - CarConnection.CONNECTION_TYPE_PROJECTION -> - if (!customRepeatModeSet) { - Timber.d("[CarConnection] Setting repeat mode to ALL") - player.repeatMode = Player.REPEAT_MODE_ALL - customRepeatModeSet = true - } - - CarConnection.CONNECTION_TYPE_NOT_CONNECTED -> - if (customRepeatModeSet) { - Timber.d("[CarConnection] Resetting repeat mode") - player.repeatMode = originalRepeatMode - customRepeatModeSet = false - } - } + CarConnection(UApp.applicationContext()).type.observeForever { + if (lastCarConnectionType == it) { + return@observeForever + } + + lastCarConnectionType = it + + Timber.d("CarConnection type changed to %s", it) + + when (it) { + CarConnection.CONNECTION_TYPE_PROJECTION -> + if (!customRepeatModeSet) { + Timber.d("[CarConnection] Setting repeat mode to ALL") + player.repeatMode = Player.REPEAT_MODE_ALL + customRepeatModeSet = true + } + + CarConnection.CONNECTION_TYPE_NOT_CONNECTED -> + if (customRepeatModeSet) { + Timber.d("[CarConnection] Resetting repeat mode") + player.repeatMode = originalRepeatMode + customRepeatModeSet = false + } } - } else { - Timber.d("Car app library not available") } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/PlaybackService.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/PlaybackService.kt index 277184a5..9772dfa2 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/PlaybackService.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/service/PlaybackService.kt @@ -11,7 +11,6 @@ import android.app.PendingIntent import android.app.PendingIntent.FLAG_IMMUTABLE import android.app.PendingIntent.FLAG_UPDATE_CURRENT import android.content.Intent -import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.app.TaskStackBuilder @@ -337,11 +336,7 @@ class PlaybackService : private fun getPendingIntentForContent(): PendingIntent { val intent = Intent(this, NavigationActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) - var flags = FLAG_UPDATE_CURRENT - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - // needed starting Android 12 (S = 31) - flags = flags or FLAG_IMMUTABLE - } + val flags = FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE intent.action = Intent.ACTION_MAIN intent.putExtra(Constants.INTENT_SHOW_PLAYER, true) return PendingIntent.getActivity(this, 0, intent, flags) @@ -382,12 +377,8 @@ class PlaybackService : TaskStackBuilder.create(this@PlaybackService).run { addNextIntent(Intent(this@PlaybackService, NavigationActivity::class.java)) - val immutableFlag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - FLAG_IMMUTABLE - } else { - 0 - } - getPendingIntent(0, immutableFlag or FLAG_UPDATE_CURRENT) + val immutableFlag = FLAG_IMMUTABLE or FLAG_UPDATE_CURRENT + getPendingIntent(0, immutableFlag) } val builder = NotificationCompat.Builder(this@PlaybackService, NOTIFICATION_CHANNEL_ID) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/FileUtil.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/FileUtil.kt index 8f08ed03..1e07ae75 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/FileUtil.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/FileUtil.kt @@ -8,8 +8,6 @@ package org.moire.ultrasonic.util import android.content.Context -import android.os.Build -import android.os.Environment import android.text.TextUtils import android.util.Pair import java.io.BufferedWriter @@ -259,16 +257,7 @@ object FileUtil { get() { // Return cached if possible if (cachedUltrasonicDirectory != null) return cachedUltrasonicDirectory!! - - @Suppress("DEPRECATION") - cachedUltrasonicDirectory = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - File( - Environment.getExternalStorageDirectory(), - "Android/data/org.moire.ultrasonic" - ) - } else { - UApp.applicationContext().getExternalFilesDir(null)!! - } + cachedUltrasonicDirectory = UApp.applicationContext().getExternalFilesDir(null)!! return cachedUltrasonicDirectory!! } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/LocaleHelper.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/LocaleHelper.kt index 01bb3b74..bf8245cd 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/LocaleHelper.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/LocaleHelper.kt @@ -10,8 +10,6 @@ package org.moire.ultrasonic.util import android.content.Context import android.content.ContextWrapper import android.content.res.Configuration -import android.os.Build -import androidx.annotation.RequiresApi import java.util.Locale /** @@ -25,11 +23,7 @@ class LocaleHelper(base: Context?) : ContextWrapper(base) { val config = context.resources.configuration val locale = Locale.forLanguageTag(language) Locale.setDefault(locale) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - setSystemLocale(config, locale) - } else { - setSystemLocaleLegacy(config, locale) - } + setSystemLocale(config, locale) config.setLayoutDirection(locale) context = context.createConfigurationContext(config) @@ -37,13 +31,7 @@ class LocaleHelper(base: Context?) : ContextWrapper(base) { return LocaleHelper(context) } - @Suppress("DEPRECATION") - private fun setSystemLocaleLegacy(config: Configuration, locale: Locale?) { - config.locale = locale - } - - @RequiresApi(Build.VERSION_CODES.N) - fun setSystemLocale(config: Configuration, locale: Locale?) { + private fun setSystemLocale(config: Configuration, locale: Locale?) { config.setLocale(locale) } } diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/SelectCacheActivityContract.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/SelectCacheActivityContract.kt index 88437aca..4dd17c18 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/SelectCacheActivityContract.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/SelectCacheActivityContract.kt @@ -11,7 +11,6 @@ import android.app.Activity import android.content.Context import android.content.Intent import android.net.Uri -import android.os.Build import android.provider.DocumentsContract import androidx.activity.result.contract.ActivityResultContract import org.moire.ultrasonic.fragment.SettingsFragment @@ -19,7 +18,7 @@ import org.moire.ultrasonic.fragment.SettingsFragment class SelectCacheActivityContract : ActivityResultContract() { override fun createIntent(context: Context, input: String?): Intent { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE) - if (Settings.cacheLocationUri != "" && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (Settings.cacheLocationUri != "") { intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, input) } intent.addFlags(SettingsFragment.RW_FLAG) diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/ShortcutUtil.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/ShortcutUtil.kt index 7034d75b..04a4f60a 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/ShortcutUtil.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/ShortcutUtil.kt @@ -12,13 +12,10 @@ import android.content.Intent import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager import android.graphics.drawable.Icon -import android.os.Build -import androidx.annotation.RequiresApi import org.moire.ultrasonic.R import org.moire.ultrasonic.activity.NavigationActivity object ShortcutUtil { - @RequiresApi(Build.VERSION_CODES.N_MR1) fun registerShortcuts(activity: Activity) { val shortcutIntent = Intent(activity, NavigationActivity::class.java).apply { action = Constants.INTENT_PLAY_RANDOM_SONGS diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Util.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Util.kt index 227871b3..6bba5740 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Util.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/util/Util.kt @@ -303,16 +303,14 @@ object Util { private fun isNetworkMetered(): Boolean { val connManager = connectivityManager - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - val capabilities = connManager.getNetworkCapabilities( - connManager.activeNetwork - ) - if (capabilities != null && - capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && - capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN) - ) { - return false - } + val capabilities = connManager.getNetworkCapabilities( + connManager.activeNetwork + ) + if (capabilities != null && + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) && + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN) + ) { + return false } return connManager.isActiveNetworkMetered } @@ -320,21 +318,13 @@ object Util { @Suppress("DEPRECATION") private fun isNetworkCellular(): Boolean { val connManager = connectivityManager - return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - val network = connManager.activeNetwork - ?: return false // Nothing connected - connManager.getNetworkInfo(network) - ?: return true // Better be safe than sorry - val capabilities = connManager.getNetworkCapabilities(network) - ?: return true // Better be safe than sorry - capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) - } else { - // if the default network is a VPN, - // this method will return the NetworkInfo for one of its underlying networks - val info = connManager.activeNetworkInfo - ?: return false // Nothing connected - info.type == ConnectivityManager.TYPE_MOBILE - } + val network = connManager.activeNetwork + ?: return false // Nothing connected + connManager.getNetworkInfo(network) + ?: return true // Better be safe than sorry + val capabilities = connManager.getNetworkCapabilities(network) + ?: return true // Better be safe than sorry + return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) } @JvmStatic @@ -502,20 +492,18 @@ object Util { importance: Int? = null, notificationManager: NotificationManagerCompat ) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // The suggested importance of a startForeground service notification is IMPORTANCE_LOW - val channel = NotificationChannel( - id, - name, - importance ?: NotificationManager.IMPORTANCE_DEFAULT - ) + // The suggested importance of a startForeground service notification is IMPORTANCE_LOW + val channel = NotificationChannel( + id, + name, + importance ?: NotificationManager.IMPORTANCE_DEFAULT + ) - channel.lightColor = android.R.color.holo_blue_dark - channel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC - channel.setShowBadge(false) + channel.lightColor = android.R.color.holo_blue_dark + channel.lockscreenVisibility = Notification.VISIBILITY_PUBLIC + channel.setShowBadge(false) - notificationManager.createNotificationChannel(channel) - } + notificationManager.createNotificationChannel(channel) } fun ensurePermissionToPostNotification( @@ -773,10 +761,8 @@ object Util { val intent = Intent(context, NavigationActivity::class.java) .addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP) var flags = PendingIntent.FLAG_UPDATE_CURRENT - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - // needed starting Android 12 (S = 31) - flags = flags or PendingIntent.FLAG_IMMUTABLE - } + // needed starting Android 12 (S = 31) + flags = flags or PendingIntent.FLAG_IMMUTABLE intent.putExtra(Constants.INTENT_SHOW_PLAYER, true) return PendingIntent.getActivity(context, 0, intent, flags) } @@ -809,12 +795,7 @@ object Util { } fun Service.stopForegroundRemoveNotification() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - stopForeground(STOP_FOREGROUND_REMOVE) - } else { - @Suppress("DEPRECATION") - stopForeground(true) - } + stopForeground(STOP_FOREGROUND_REMOVE) } fun dumpSettingsToLog() { diff --git a/ultrasonic/src/main/res/layout/chat.xml b/ultrasonic/src/main/res/layout/chat.xml index fc4f447f..bc77c5fa 100644 --- a/ultrasonic/src/main/res/layout/chat.xml +++ b/ultrasonic/src/main/res/layout/chat.xml @@ -32,6 +32,7 @@ a:gravity="bottom" > - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/ultrasonic/src/main/res/menu/rating.xml b/ultrasonic/src/main/res/menu/rating.xml index 1a58492b..9efb8af0 100644 --- a/ultrasonic/src/main/res/menu/rating.xml +++ b/ultrasonic/src/main/res/menu/rating.xml @@ -10,31 +10,37 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/ultrasonic/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/ultrasonic/src/main/res/mipmap-anydpi/ic_launcher.xml similarity index 100% rename from ultrasonic/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to ultrasonic/src/main/res/mipmap-anydpi/ic_launcher.xml diff --git a/ultrasonic/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/ultrasonic/src/main/res/mipmap-anydpi/ic_launcher_round.xml similarity index 100% rename from ultrasonic/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to ultrasonic/src/main/res/mipmap-anydpi/ic_launcher_round.xml diff --git a/ultrasonic/src/main/res/mipmap-hdpi/ic_launcher.png b/ultrasonic/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index c5d13007cfa6a746a40d672750da2d161349259b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2394 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 M07*qoM6N<$f?gJ4(EtDd diff --git a/ultrasonic/src/main/res/mipmap-hdpi/ic_launcher_round.png b/ultrasonic/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 14f0810c1c7e0999d95020edc8c9b61a4c2097f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4119 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 diff --git a/ultrasonic/src/main/res/mipmap-xhdpi/ic_launcher.png b/ultrasonic/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index dc8eb47a64b3c83b7bbe1f87e242f0eebb2a9fdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3295 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 diff --git a/ultrasonic/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/ultrasonic/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 5f663df09488519d18b4d65352aa12ea03d2db37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5954 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 diff --git a/ultrasonic/src/main/res/mipmap-xxhdpi/ic_launcher.png b/ultrasonic/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 4d4230eba181494e6a29618adc5a9570cc3a69e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4745 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 OK<~D}tx_$U@c#j-(FlJ4 diff --git a/ultrasonic/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/ultrasonic/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 6f0f94ebd5e704576c43f31658446a9d7c5fe832..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8914 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 TY;ubPAT%wFyXs}CR$>1GeGo|j diff --git a/ultrasonic/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/ultrasonic/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 5af1f87754cf23968440734558c1f29cdb2704ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13105 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