diff --git a/app/src/main/java/com/michatec/radio/EqualizerFragment.kt b/app/src/main/java/com/michatec/radio/EqualizerFragment.kt new file mode 100644 index 0000000..3b3808d --- /dev/null +++ b/app/src/main/java/com/michatec/radio/EqualizerFragment.kt @@ -0,0 +1,74 @@ +package com.michatec.radio + +import android.os.Bundle +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.SeekBarPreference +import com.michatec.radio.helpers.PreferencesHelper + +/* + * EqualizerFragment class: Handles audio frequency settings + */ +class EqualizerFragment : PreferenceFragmentCompat() { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + (activity as AppCompatActivity).supportActionBar?.title = getString(R.string.pref_equalizer_title) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + val context = preferenceManager.context + val screen = preferenceManager.createPreferenceScreen(context) + + // Reset Button + val resetPreference = Preference(context) + resetPreference.title = getString(R.string.pref_equalizer_reset_title) + resetPreference.setIcon(R.drawable.ic_refresh_24dp) + resetPreference.setOnPreferenceClickListener { + PreferencesHelper.resetEqualizer() + // Manually update SeekBars to 0 + findPreference(Keys.PREF_EQ_LOW)?.value = 0 + findPreference(Keys.PREF_EQ_MID)?.value = 0 + findPreference(Keys.PREF_EQ_HIGH)?.value = 0 + return@setOnPreferenceClickListener true + } + screen.addPreference(resetPreference) + + // EQ Low + val eqLow = SeekBarPreference(context) + eqLow.title = getString(R.string.pref_eq_low_title) + eqLow.key = Keys.PREF_EQ_LOW + eqLow.setIcon(R.drawable.ic_music_note_24dp) + eqLow.min = -12 + eqLow.max = 12 + eqLow.showSeekBarValue = true + eqLow.setDefaultValue(0) + screen.addPreference(eqLow) + + // EQ Mid + val eqMid = SeekBarPreference(context) + eqMid.title = getString(R.string.pref_eq_mid_title) + eqMid.key = Keys.PREF_EQ_MID + eqMid.setIcon(R.drawable.ic_music_note_24dp) + eqMid.min = -12 + eqMid.max = 12 + eqMid.showSeekBarValue = true + eqMid.setDefaultValue(0) + screen.addPreference(eqMid) + + // EQ High + val eqHigh = SeekBarPreference(context) + eqHigh.title = getString(R.string.pref_eq_high_title) + eqHigh.key = Keys.PREF_EQ_HIGH + eqHigh.setIcon(R.drawable.ic_music_note_24dp) + eqHigh.min = -12 + eqHigh.max = 12 + eqHigh.showSeekBarValue = true + eqHigh.setDefaultValue(0) + screen.addPreference(eqHigh) + + preferenceScreen = screen + } +} diff --git a/app/src/main/java/com/michatec/radio/SettingsFragment.kt b/app/src/main/java/com/michatec/radio/SettingsFragment.kt index 685f486..5eedab2 100644 --- a/app/src/main/java/com/michatec/radio/SettingsFragment.kt +++ b/app/src/main/java/com/michatec/radio/SettingsFragment.kt @@ -210,6 +210,16 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList preferenceDrc.summary = getString(R.string.pref_drc_summary) preferenceDrc.setDefaultValue(true) + // set up "Equalizer" preference entry + val preferenceEqualizer = Preference(context) + preferenceEqualizer.title = getString(R.string.pref_equalizer_title) + preferenceEqualizer.setIcon(R.drawable.ic_music_note_24dp) + preferenceEqualizer.summary = getString(R.string.pref_equalizer_summary) + preferenceEqualizer.setOnPreferenceClickListener { + findNavController().navigate(R.id.action_settings_to_equalizer) + return@setOnPreferenceClickListener true + } + // set up "App Version" preference val preferenceAppVersion = Preference(context) preferenceAppVersion.title = getString(R.string.pref_app_version_title) @@ -287,6 +297,7 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList preferenceCategoryAudioEffects.addPreference(preferenceBassBoost) preferenceCategoryAudioEffects.addPreference(preferenceReverb) preferenceCategoryAudioEffects.addPreference(preferenceDrc) + preferenceCategoryAudioEffects.addPreference(preferenceEqualizer) screen.addPreference(preferenceCategoryMaintenance) preferenceCategoryMaintenance.addPreference(preferenceUpdateStationImages) diff --git a/app/src/main/java/com/michatec/radio/helpers/PreferencesHelper.kt b/app/src/main/java/com/michatec/radio/helpers/PreferencesHelper.kt index cd2eafc..435d46b 100644 --- a/app/src/main/java/com/michatec/radio/helpers/PreferencesHelper.kt +++ b/app/src/main/java/com/michatec/radio/helpers/PreferencesHelper.kt @@ -277,4 +277,13 @@ object PreferencesHelper { fun loadEqMid(): Float = sharedPreferences.getInt(Keys.PREF_EQ_MID, 0).toFloat() fun loadEqHigh(): Float = sharedPreferences.getInt(Keys.PREF_EQ_HIGH, 0).toFloat() + /* Resets Equalizer settings to default */ + fun resetEqualizer() { + sharedPreferences.edit { + putInt(Keys.PREF_EQ_LOW, 0) + putInt(Keys.PREF_EQ_MID, 0) + putInt(Keys.PREF_EQ_HIGH, 0) + } + } + } diff --git a/app/src/main/res/navigation/nav_graph_main.xml b/app/src/main/res/navigation/nav_graph_main.xml index c861274..1d78b1a 100644 --- a/app/src/main/res/navigation/nav_graph_main.xml +++ b/app/src/main/res/navigation/nav_graph_main.xml @@ -19,6 +19,16 @@ + android:label="Settings"> + + - \ No newline at end of file + + + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index f42a6e6..f537ac0 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -55,7 +55,7 @@ Die neueste Version aller Senderinformationen herunterladen. Die neueste Version aller Senderinformationen herunterladen? Aktualisieren - Equalizer: Hoch + Equalizer: Höhen Erweitert Version App-Version @@ -118,13 +118,16 @@ Zeigen ist verfügbar! - Audio Effekte - Bass Boost + Audio-Effekte + Bass-Boost Erhöhen Sie die Bassverstärkung. Hall Reverb-Mix anpassen. - Komprimierung des Dynamikbereichs - Den Dynamikbereich für ein gleichbleibendes Volumen komprimieren. - Equalizer: Leicht - Equalizer: Mitte + Dynamikkompression + Den Dynamikbereich für eine gleichbleibende Lautstärke komprimieren. + Equalizer: Bass + Equalizer: Mitten + Equalizer + Passen Sie die Audio-Frequenzen an. + Equalizer zurücksetzen diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9ca2fb7..4271836 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -73,6 +73,9 @@ Equalizer: Low Equalizer: Mid Equalizer: High + Equalizer + Adjust audio frequencies + Reset Equalizer Advanced Version App Version