diff --git a/app/src/main/java/io/bartek/ttsserver/preference/Preference.kt b/app/src/main/java/io/bartek/ttsserver/preference/Preference.kt
index 50b85d8..f55f07e 100644
--- a/app/src/main/java/io/bartek/ttsserver/preference/Preference.kt
+++ b/app/src/main/java/io/bartek/ttsserver/preference/Preference.kt
@@ -7,4 +7,5 @@ object PreferenceKey {
const val ENABLE_WAVE_ENDPOINT = "preference_enable_wave_endpoint"
const val ENABLE_SONOS_ENDPOINT = "preference_enable_sonos_endpoint"
const val TTS = "preference_tts"
+ const val INVALIDATE_SONOS_CACHE = "preference_invalidate_sonos_cache"
}
\ No newline at end of file
diff --git a/app/src/main/java/io/bartek/ttsserver/preference/PreferencesFragment.kt b/app/src/main/java/io/bartek/ttsserver/preference/PreferencesFragment.kt
index ab6fe7f..b29b39f 100644
--- a/app/src/main/java/io/bartek/ttsserver/preference/PreferencesFragment.kt
+++ b/app/src/main/java/io/bartek/ttsserver/preference/PreferencesFragment.kt
@@ -6,6 +6,7 @@ import android.content.Intent
import android.content.IntentFilter
import android.os.Bundle
import android.text.InputType
+import android.widget.Toast
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
@@ -19,6 +20,7 @@ class PreferencesFragment : PreferenceFragmentCompat() {
private lateinit var sayEndpointPreference: SwitchPreference
private lateinit var waveEndpointPreference: SwitchPreference
private lateinit var ttsEnginePreference: Preference
+ private lateinit var clearSonosCachePreference: Preference
private val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
@@ -35,14 +37,14 @@ class PreferencesFragment : PreferenceFragmentCompat() {
override fun onResume() {
super.onResume()
LocalBroadcastManager
- .getInstance(context!!)
+ .getInstance(requireContext())
.registerReceiver(receiver, IntentFilter(ForegroundService.CHANGE_STATE))
updateViewAccordingToServiceState(ForegroundService.state)
}
override fun onPause() {
LocalBroadcastManager
- .getInstance(context!!)
+ .getInstance(requireContext())
.unregisterReceiver(receiver)
super.onPause()
}
@@ -58,6 +60,12 @@ class PreferencesFragment : PreferenceFragmentCompat() {
startActivity(Intent(ANDROID_TTS_SETTINGS))
true
}
+ clearSonosCachePreference = findPreference(PreferenceKey.INVALIDATE_SONOS_CACHE)!!
+ clearSonosCachePreference.setOnPreferenceClickListener {
+ context?.cacheDir?.listFiles() ?. forEach { it.delete() }
+ Toast.makeText(context, getString(R.string.preference_invalidate_sonos_cache_toast), Toast.LENGTH_SHORT).show()
+ true
+ }
updateViewAccordingToServiceState(ForegroundService.state)
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8b83820..908dbf4 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,8 +25,13 @@
Enable /sonos endpoint
Go to platform\'s TTS engine settings and adjust its parameters
TTS engine settings
+ Clear application cache directory from already generated Sonos TTS data for given sentences. You typically want to do it when you change the TTS engine\'s voice settings.
+ Invalidate Sonos cache
TTS engine
Server
+ Sonos
+ Sonos cache has been invalidated
+
Settings
Help
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 5ed76fd..e951f3f 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -41,5 +41,13 @@
app:iconSpaceReserved="false" />
+
+
+
+
\ No newline at end of file