The Android 4.x+ code has changed a lot since the initial import
of the eyes-free codebase. A lot of bug fixes and improvements
have been made to it.
The eyes-free codebase had two different code paths:
* one for ICS (4.0) or later, using the Java-based TTS APIs
provided by the Android platform;
* one for pre-ICS using an internal C++-based TTS API.
Thus, any bug fixes or improvements would have to be done to both
code bases if Android 2.x/3.x support is required. This is not
maintainable.
If pre-ICS support is to be re-added in the future, the plan will
be to:
* forward the C++-based APIs to the Java-based APIs via a
compatibility layer;
* use a compatibility layer (Android Support Library?) for using
the ICS settings API on pre-ICS.
Rework the Voice variant preference to show a dialog with Category and Variant lists.
The original variant list UI resulted in a long, complex list that
was difficult to navigate. This change splits up that list into
more manageable groups.
CheckVoiceData.java: don't use the deprecated EXTRA_CHECK_VOICE_DATA_FOR value
This is used to filter the list of languages returned. However, the
filtering is not needed on the engine side as the client can simply
enumerate through all the available voices instead.
The android.speech.tts.engine.CHECK_TTS_DATA intent should just
check that the TTS data is OK. It should not attempt a
download/install of the TTS data.
SeekBarPreference: update the persisted value when the SeekBar changes value
The idea here is that whenever the user changes one of the parameter
values via the SeekBar control, it is reflected immediately by eSpeak.
This is similar to how e.g. the brightness preference UI works.
However, instead of updating every time the value changes while the
slider is being moved, it is updated once the touch interaction is
finished.
Also, if the user Cancels or exits the dialog with the back button,
the old setting value is restored.