From 0a56971fa257bb14451e99b6fc9dabe7328ae7e8 Mon Sep 17 00:00:00 2001
From: Michatec <121869403+Michatec@users.noreply.github.com>
Date: Wed, 11 Jun 2025 17:36:47 +0200
Subject: [PATCH] Some Bugfixes and Improvments
- Update the libary gson.
- Deleted some unuseful Code.
- added some locals to locales config.
---
app/build.gradle | 3 +-
.../java/com/michatec/radio/PlayerFragment.kt | 3 ++
.../java/com/michatec/radio/PlayerService.kt | 16 ----------
app/src/main/java/com/michatec/radio/Radio.kt | 2 --
.../com/michatec/radio/SettingsFragment.kt | 15 +--------
.../radio/collection/CollectionAdapter.kt | 1 +
.../radio/dialogs/AddStationDialog.kt | 4 ---
.../com/michatec/radio/dialogs/ErrorDialog.kt | 6 ++--
.../com/michatec/radio/helpers/AudioHelper.kt | 3 ++
.../michatec/radio/helpers/ShortcutHelper.kt | 32 ++++++-------------
.../radio/search/SearchResultAdapter.kt | 22 +++++--------
app/src/main/res/values-ru/strings.xml | 2 +-
app/src/main/res/xml/locales_config.xml | 2 ++
build.gradle | 2 +-
14 files changed, 35 insertions(+), 78 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index ce2df96..fc937af 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,6 +9,7 @@ android {
defaultConfig {
applicationId 'com.michatec.radio'
minSdk 28
+ //noinspection OldTargetApi
targetSdk 35
versionCode 129
versionName '12.9'
@@ -48,7 +49,7 @@ dependencies {
// Google Stuff //
implementation 'com.google.android.material:material:1.12.0'
- implementation 'com.google.code.gson:gson:2.10.1'
+ implementation 'com.google.code.gson:gson:2.13.1'
// AndroidX Stuff //
implementation 'androidx.activity:activity-ktx:1.10.1'
diff --git a/app/src/main/java/com/michatec/radio/PlayerFragment.kt b/app/src/main/java/com/michatec/radio/PlayerFragment.kt
index 788f746..343bd21 100644
--- a/app/src/main/java/com/michatec/radio/PlayerFragment.kt
+++ b/app/src/main/java/com/michatec/radio/PlayerFragment.kt
@@ -32,6 +32,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.PickVisualMediaRequest
import androidx.activity.result.contract.ActivityResultContracts
+import androidx.annotation.OptIn
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
@@ -40,6 +41,7 @@ import androidx.lifecycle.ViewModelProvider
import androidx.media3.common.MediaItem
import androidx.media3.common.PlaybackException
import androidx.media3.common.Player
+import androidx.media3.common.util.UnstableApi
import androidx.media3.session.MediaController
import androidx.media3.session.SessionResult
import androidx.media3.session.SessionToken
@@ -395,6 +397,7 @@ class PlayerFragment : Fragment(),
/* Initializes the MediaController - handles connection to PlayerService under the hood */
+ @OptIn(UnstableApi::class)
private fun initializeController() {
controllerFuture = MediaController.Builder(
activity as Context,
diff --git a/app/src/main/java/com/michatec/radio/PlayerService.kt b/app/src/main/java/com/michatec/radio/PlayerService.kt
index fee4091..da1a2df 100644
--- a/app/src/main/java/com/michatec/radio/PlayerService.kt
+++ b/app/src/main/java/com/michatec/radio/PlayerService.kt
@@ -636,22 +636,6 @@ class PlayerService : MediaLibraryService() {
}
- /*
- * Defines the listener for changes in shared preferences
- */
- private val sharedPreferenceChangeListener =
- SharedPreferences.OnSharedPreferenceChangeListener { _, key ->
- when (key) {
- Keys.PREF_LARGE_BUFFER_SIZE -> {
- bufferSizeMultiplier = PreferencesHelper.loadBufferSizeMultiplier()
- if (!player.isPlaying && !player.isLoading) {
- initializePlayer()
- }
- }
- }
- }
-
-
/*
* Custom AnalyticsListener that enables AudioFX equalizer integration
*/
diff --git a/app/src/main/java/com/michatec/radio/Radio.kt b/app/src/main/java/com/michatec/radio/Radio.kt
index d3b0957..12a8e1b 100644
--- a/app/src/main/java/com/michatec/radio/Radio.kt
+++ b/app/src/main/java/com/michatec/radio/Radio.kt
@@ -25,8 +25,6 @@ import com.michatec.radio.helpers.PreferencesHelper.initPreferences
*/
class Radio : Application() {
- /* Define log tag */
- private val TAG: String = Radio::class.java.simpleName
/* Implements onCreate */
override fun onCreate() {
diff --git a/app/src/main/java/com/michatec/radio/SettingsFragment.kt b/app/src/main/java/com/michatec/radio/SettingsFragment.kt
index 9c9a0e2..d97a63b 100644
--- a/app/src/main/java/com/michatec/radio/SettingsFragment.kt
+++ b/app/src/main/java/com/michatec/radio/SettingsFragment.kt
@@ -62,20 +62,7 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
(activity as AppCompatActivity).supportActionBar?.show()
(activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)
(activity as AppCompatActivity).supportActionBar?.title = getString(R.string.fragment_settings_title)
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- // above Android Oreo
- (activity as AppCompatActivity).window.navigationBarColor = getColor(requireContext(), android.R.attr.colorBackground)
- } else {
- val nightMode = AppCompatDelegate.getDefaultNightMode()
- if (nightMode == AppCompatDelegate.MODE_NIGHT_YES) {
- // night mode is active, set navigation bar color to a suitable color for night mode
- (activity as AppCompatActivity).window.navigationBarColor = getColor(requireContext(), android.R.attr.colorBackground)
- } else {
- // night mode is not active, set navigation bar color to a suitable color for day mode
- (activity as AppCompatActivity).window.navigationBarColor = ContextCompat.getColor(requireContext(), android.R.color.black)
- }
- }
+ (activity as AppCompatActivity).window.navigationBarColor = getColor(requireContext(), android.R.attr.colorBackground)
}
/* Overrides onCreatePreferences from PreferenceFragmentCompat */
diff --git a/app/src/main/java/com/michatec/radio/collection/CollectionAdapter.kt b/app/src/main/java/com/michatec/radio/collection/CollectionAdapter.kt
index 7b01a08..9996dfa 100644
--- a/app/src/main/java/com/michatec/radio/collection/CollectionAdapter.kt
+++ b/app/src/main/java/com/michatec/radio/collection/CollectionAdapter.kt
@@ -296,6 +296,7 @@ class CollectionAdapter(
/* Shows / hides the edit view for a station */
+ @SuppressLint("NotifyDataSetChanged")
private fun toggleEditViews(position: Int, stationUuid: String) {
when (stationUuid) {
// CASE: this station's edit view is already expanded
diff --git a/app/src/main/java/com/michatec/radio/dialogs/AddStationDialog.kt b/app/src/main/java/com/michatec/radio/dialogs/AddStationDialog.kt
index 740ce95..d7412eb 100644
--- a/app/src/main/java/com/michatec/radio/dialogs/AddStationDialog.kt
+++ b/app/src/main/java/com/michatec/radio/dialogs/AddStationDialog.kt
@@ -42,10 +42,6 @@ class AddStationDialog (
}
- /* Define log tag */
- private val TAG = AddStationDialog::class.java.simpleName
-
-
/* Main class variables */
private lateinit var dialog: AlertDialog
private lateinit var stationSearchResultList: RecyclerView
diff --git a/app/src/main/java/com/michatec/radio/dialogs/ErrorDialog.kt b/app/src/main/java/com/michatec/radio/dialogs/ErrorDialog.kt
index df8cf88..9751eb4 100644
--- a/app/src/main/java/com/michatec/radio/dialogs/ErrorDialog.kt
+++ b/app/src/main/java/com/michatec/radio/dialogs/ErrorDialog.kt
@@ -46,9 +46,9 @@ class ErrorDialog {
// get views
val inflater: LayoutInflater = LayoutInflater.from(context)
val view: View = inflater.inflate(R.layout.dialog_generic_with_details, null)
- val errorMessageView: TextView = view.findViewById(R.id.dialog_message) as TextView
- val errorDetailsLinkView: TextView = view.findViewById(R.id.dialog_details_link) as TextView
- val errorDetailsView: TextView = view.findViewById(R.id.dialog_details) as TextView
+ val errorMessageView: TextView = view.findViewById(R.id.dialog_message)
+ val errorDetailsLinkView: TextView = view.findViewById(R.id.dialog_details_link)
+ val errorDetailsView: TextView = view.findViewById(R.id.dialog_details)
// set dialog view
builder.setView(view)
diff --git a/app/src/main/java/com/michatec/radio/helpers/AudioHelper.kt b/app/src/main/java/com/michatec/radio/helpers/AudioHelper.kt
index 722173b..5968626 100644
--- a/app/src/main/java/com/michatec/radio/helpers/AudioHelper.kt
+++ b/app/src/main/java/com/michatec/radio/helpers/AudioHelper.kt
@@ -15,7 +15,9 @@
package com.michatec.radio.helpers
import android.util.Log
+import androidx.annotation.OptIn
import androidx.media3.common.Metadata
+import androidx.media3.common.util.UnstableApi
import androidx.media3.extractor.metadata.icy.IcyHeaders
import androidx.media3.extractor.metadata.icy.IcyInfo
import com.michatec.radio.Keys
@@ -33,6 +35,7 @@ object AudioHelper {
/* Extract audio stream metadata */
+ @OptIn(UnstableApi::class)
fun getMetadataString(metadata: Metadata): String {
var metadataString = String()
for (i in 0 until metadata.length()) {
diff --git a/app/src/main/java/com/michatec/radio/helpers/ShortcutHelper.kt b/app/src/main/java/com/michatec/radio/helpers/ShortcutHelper.kt
index 0937d8b..8feeece 100644
--- a/app/src/main/java/com/michatec/radio/helpers/ShortcutHelper.kt
+++ b/app/src/main/java/com/michatec/radio/helpers/ShortcutHelper.kt
@@ -73,27 +73,15 @@ object ShortcutHelper {
): IconCompat {
val stationImageBitmap: Bitmap =
ImageHelper.getScaledStationImage(context, stationImage.toUri(), 192)
- return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- IconCompat.createWithAdaptiveBitmap(
- ImageHelper.createSquareImage(
- context,
- stationImageBitmap,
- stationImageColor,
- 192,
- true
- )
- )
- } else {
- IconCompat.createWithAdaptiveBitmap(
- ImageHelper.createSquareImage(
- context,
- stationImageBitmap,
- stationImageColor,
- 192,
- false
- )
- )
- }
- }
+ return IconCompat.createWithAdaptiveBitmap(
+ ImageHelper.createSquareImage(
+ context,
+ stationImageBitmap,
+ stationImageColor,
+ 192,
+ true
+ )
+ )
+ }
}
diff --git a/app/src/main/java/com/michatec/radio/search/SearchResultAdapter.kt b/app/src/main/java/com/michatec/radio/search/SearchResultAdapter.kt
index 174e91a..91eed94 100644
--- a/app/src/main/java/com/michatec/radio/search/SearchResultAdapter.kt
+++ b/app/src/main/java/com/michatec/radio/search/SearchResultAdapter.kt
@@ -209,22 +209,16 @@ class SearchResultAdapter(
// stop radio playback when one is active
val audioManager = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- val audioAttributes = AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build()
+ val audioAttributes = AudioAttributes.Builder()
+ .setUsage(AudioAttributes.USAGE_MEDIA)
+ .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
+ .build()
- val focusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
- .setAudioAttributes(audioAttributes)
- .build()
+ val focusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
+ .setAudioAttributes(audioAttributes)
+ .build()
- audioManager.requestAudioFocus(focusRequest)
- } else {
- @Suppress("DEPRECATION")
- // For older versions where AudioFocusRequest is not available
- audioManager.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
- }
+ audioManager.requestAudioFocus(focusRequest)
}
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index ed032ee..2c647a4 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -98,7 +98,7 @@
Было запущено воспроизведение предварительного просмотра.
Станции были успешно восстановлены.
Сохранение радиостанций как M3U…
- Сохранение радиостанций в формате PLS...
+ Сохранение радиостанций в формате PLS
Ярлык создан.
Ярлык не создан. Устройство не позволяет создавать ярлыки.
Пожалуйста, запустите сперва воспроизведение.
diff --git a/app/src/main/res/xml/locales_config.xml b/app/src/main/res/xml/locales_config.xml
index 44da2f0..34aff72 100644
--- a/app/src/main/res/xml/locales_config.xml
+++ b/app/src/main/res/xml/locales_config.xml
@@ -17,4 +17,6 @@
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 631ca83..c0fa7b5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,5 +7,5 @@ plugins {
}
tasks.register('clean', Delete) {
- delete rootProject.buildDir
+ delete rootProject.buildDir()
}
\ No newline at end of file