mirror of
https://github.com/Michatec/Radio.git
synced 2026-05-31 03:02:39 +02:00
feat(audio): add native audio processing and Google Cast support
This commit is contained in:
@@ -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<SeekBarPreference>(Keys.PREF_EQ_LOW)?.value = 0
|
||||||
|
findPreference<SeekBarPreference>(Keys.PREF_EQ_MID)?.value = 0
|
||||||
|
findPreference<SeekBarPreference>(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
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -210,6 +210,16 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
|
|||||||
preferenceDrc.summary = getString(R.string.pref_drc_summary)
|
preferenceDrc.summary = getString(R.string.pref_drc_summary)
|
||||||
preferenceDrc.setDefaultValue(true)
|
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
|
// set up "App Version" preference
|
||||||
val preferenceAppVersion = Preference(context)
|
val preferenceAppVersion = Preference(context)
|
||||||
preferenceAppVersion.title = getString(R.string.pref_app_version_title)
|
preferenceAppVersion.title = getString(R.string.pref_app_version_title)
|
||||||
@@ -287,6 +297,7 @@ class SettingsFragment : PreferenceFragmentCompat(), YesNoDialog.YesNoDialogList
|
|||||||
preferenceCategoryAudioEffects.addPreference(preferenceBassBoost)
|
preferenceCategoryAudioEffects.addPreference(preferenceBassBoost)
|
||||||
preferenceCategoryAudioEffects.addPreference(preferenceReverb)
|
preferenceCategoryAudioEffects.addPreference(preferenceReverb)
|
||||||
preferenceCategoryAudioEffects.addPreference(preferenceDrc)
|
preferenceCategoryAudioEffects.addPreference(preferenceDrc)
|
||||||
|
preferenceCategoryAudioEffects.addPreference(preferenceEqualizer)
|
||||||
|
|
||||||
screen.addPreference(preferenceCategoryMaintenance)
|
screen.addPreference(preferenceCategoryMaintenance)
|
||||||
preferenceCategoryMaintenance.addPreference(preferenceUpdateStationImages)
|
preferenceCategoryMaintenance.addPreference(preferenceUpdateStationImages)
|
||||||
|
|||||||
@@ -277,4 +277,13 @@ object PreferencesHelper {
|
|||||||
fun loadEqMid(): Float = sharedPreferences.getInt(Keys.PREF_EQ_MID, 0).toFloat()
|
fun loadEqMid(): Float = sharedPreferences.getInt(Keys.PREF_EQ_MID, 0).toFloat()
|
||||||
fun loadEqHigh(): Float = sharedPreferences.getInt(Keys.PREF_EQ_HIGH, 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,16 @@
|
|||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/settings_destination"
|
android:id="@+id/settings_destination"
|
||||||
android:name="com.michatec.radio.SettingsFragment"
|
android:name="com.michatec.radio.SettingsFragment"
|
||||||
android:label="Settings" />
|
android:label="Settings">
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_settings_to_equalizer"
|
||||||
|
app:destination="@id/equalizer_destination" />
|
||||||
|
</fragment>
|
||||||
|
|
||||||
</navigation>
|
<!-- EQUALIZER -->
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/equalizer_destination"
|
||||||
|
android:name="com.michatec.radio.EqualizerFragment"
|
||||||
|
android:label="Equalizer" />
|
||||||
|
|
||||||
|
</navigation>
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
<string name="pref_update_collection_summary">Die neueste Version aller Senderinformationen herunterladen.</string>
|
<string name="pref_update_collection_summary">Die neueste Version aller Senderinformationen herunterladen.</string>
|
||||||
<string name="dialog_yes_no_message_update_collection">Die neueste Version aller Senderinformationen herunterladen?</string>
|
<string name="dialog_yes_no_message_update_collection">Die neueste Version aller Senderinformationen herunterladen?</string>
|
||||||
<string name="dialog_yes_no_positive_button_update_collection">Aktualisieren</string>
|
<string name="dialog_yes_no_positive_button_update_collection">Aktualisieren</string>
|
||||||
<string name="pref_eq_high_title">Equalizer: Hoch</string>
|
<string name="pref_eq_high_title">Equalizer: Höhen</string>
|
||||||
<string name="pref_advanced_title">Erweitert</string>
|
<string name="pref_advanced_title">Erweitert</string>
|
||||||
<string name="pref_app_version_summary">Version</string>
|
<string name="pref_app_version_summary">Version</string>
|
||||||
<string name="pref_app_version_title">App-Version</string>
|
<string name="pref_app_version_title">App-Version</string>
|
||||||
@@ -118,13 +118,16 @@
|
|||||||
<!-- Snackbars -->
|
<!-- Snackbars -->
|
||||||
<string name="snackbar_show">Zeigen</string>
|
<string name="snackbar_show">Zeigen</string>
|
||||||
<string name="snackbar_update_available">ist verfügbar!</string>
|
<string name="snackbar_update_available">ist verfügbar!</string>
|
||||||
<string name="pref_audio_effects_title">Audio Effekte</string>
|
<string name="pref_audio_effects_title">Audio-Effekte</string>
|
||||||
<string name="pref_bass_boost_title">Bass Boost</string>
|
<string name="pref_bass_boost_title">Bass-Boost</string>
|
||||||
<string name="pref_bass_boost_summary">Erhöhen Sie die Bassverstärkung.</string>
|
<string name="pref_bass_boost_summary">Erhöhen Sie die Bassverstärkung.</string>
|
||||||
<string name="pref_reverb_title">Hall</string>
|
<string name="pref_reverb_title">Hall</string>
|
||||||
<string name="pref_reverb_summary">Reverb-Mix anpassen.</string>
|
<string name="pref_reverb_summary">Reverb-Mix anpassen.</string>
|
||||||
<string name="pref_drc_title">Komprimierung des Dynamikbereichs</string>
|
<string name="pref_drc_title">Dynamikkompression</string>
|
||||||
<string name="pref_drc_summary">Den Dynamikbereich für ein gleichbleibendes Volumen komprimieren.</string>
|
<string name="pref_drc_summary">Den Dynamikbereich für eine gleichbleibende Lautstärke komprimieren.</string>
|
||||||
<string name="pref_eq_low_title">Equalizer: Leicht</string>
|
<string name="pref_eq_low_title">Equalizer: Bass</string>
|
||||||
<string name="pref_eq_mid_title">Equalizer: Mitte</string>
|
<string name="pref_eq_mid_title">Equalizer: Mitten</string>
|
||||||
|
<string name="pref_equalizer_title">Equalizer</string>
|
||||||
|
<string name="pref_equalizer_summary">Passen Sie die Audio-Frequenzen an.</string>
|
||||||
|
<string name="pref_equalizer_reset_title">Equalizer zurücksetzen</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -73,6 +73,9 @@
|
|||||||
<string name="pref_eq_low_title">Equalizer: Low</string>
|
<string name="pref_eq_low_title">Equalizer: Low</string>
|
||||||
<string name="pref_eq_mid_title">Equalizer: Mid</string>
|
<string name="pref_eq_mid_title">Equalizer: Mid</string>
|
||||||
<string name="pref_eq_high_title">Equalizer: High</string>
|
<string name="pref_eq_high_title">Equalizer: High</string>
|
||||||
|
<string name="pref_equalizer_title">Equalizer</string>
|
||||||
|
<string name="pref_equalizer_summary">Adjust audio frequencies</string>
|
||||||
|
<string name="pref_equalizer_reset_title">Reset Equalizer</string>
|
||||||
<string name="pref_advanced_title">Advanced</string>
|
<string name="pref_advanced_title">Advanced</string>
|
||||||
<string name="pref_app_version_summary">Version</string>
|
<string name="pref_app_version_summary">Version</string>
|
||||||
<string name="pref_app_version_title">App Version</string>
|
<string name="pref_app_version_title">App Version</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user