У меня есть приложение Android TV, работающее на Fire TV Stick. Я инициализировал TextToSpeech
движок и вызываю его через функцию speak
. Моя проблема в том, что скорость речи (скорость разговора) не меняется, когда я меняю их в настройках. Я знаю, что могу установить скорость речи в соответствии с моим предпочтением, используя setSpeechRate(rate)
, но я хотел бы знать, как получить скорость из системы.
Я до сих пор пытался использовать : Settings.Secure.getString(contentResolver, Settings.Secure.TTS_DEFAULT_RATE);
, который возвращает null
, и Settings.Secure.getInt(contentResolver, Settings.Secure.TTS_DEFAULT_RATE);
, который выдает ошибку SettingNotFound
. Если я дам ему запасное значение, он всегда будет использовать его независимо от того, как я изменю системные настройки VoiceView. Мой код примерно выполняет следующие действия:
TextToSpeech engine = new TextToSpeech(context, this);
ContentResolver contentResolver = context.getContentResolver();
int speechRate = Settings.Secure.getInt(contentResolver, Settings.Secure.TTS_DEFAULT_RATE, 100);
engine.setSpeechRate((float)(speechRate / 100));
engine.speak("This is a sample sentence", QUEUE_FLUSH, null, utteranceID);
Я не решаюсь писать в настройки, потому что 1) я не хочу требовать дополнительных разрешений на запись; 2) Даже если я напишу в него, кажется, что изменение системных настроек не изменит этот параметр, что является моей конечной целью.
Есть ли какой-то другой способ получить настройки доступности, такие как скорость VoiceView, в Android