SpeechSynthesis.java: Simplify the SetVoiceByProperties parameters.
The `age` parameter is not useful as eSpeak does not use this when
selecting voices. This is always set to `0` by TtsService.java.
The `variant` parameter is not used to select the actual voice
variant (from the `!v` directory) but to select the n^th matching
voice from the list of matching voices. This is always set to
select the first matching voice by TtsService.java.
The sampleRate variable gets overwritten with the actual sample
rate during creation from the espeak_Initialize method, so the
value it is set to in the constructor does not matter.
Don't check in espeakdata.zip to version control every time it changes.
The espeakdata.zip file is a generated file that can be recreated
by running the `make android` command. It takes up ~ 900 Kb of space
and changes significantly every time it is built.
TtsService.java: ensure that the voice data is installed/upgraded correctly.
When using assistive technology like TalkBack and not accessing
either the eSpeak application or the Android TTS settings
directly, the voice data would previously not be installed/upgraded
correctly.
The approach here is to move the logic to onIsLanguageAvailable so
that if the espeak voice data is not installed or is upgradable
then trigger an install of the voice data and return
TextToSpeech.LANG_MISSING_DATA.
Make eSpeak-specific setting changes apply immediately.
This reverts commit 433a0a0455.
The issue here appears to be that the process the eSpeak commands are
processed from to generate the speech differs from the one used to
modify the settings. This appears to be enough to cause it to not
get the updated settings until the process is restarted.
Thanks to Peter Vagner for locating the cause.