Объяснение службы TTS в Android
У меня есть вопросы, касающиеся реализации службы TTS для Android. Вот сделка:
-Я просмотрел код Flite и вижу, что для службы требуется выполнение следующих трех действий:
<activity
android:name=".DownloadVoiceData"
android:label="@string/flite_voice_manager"
android:theme="@android:style/Theme.Holo"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.speech.tts.engine.INSTALL_TTS_DATA" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".CheckVoiceData"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.speech.tts.engine.CHECK_TTS_DATA" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".GetSampleText"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="android.speech.tts.engine.GET_SAMPLE_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Фактические действия этих действий самоочевидны, но я хочу знать: являются ли они обязательными, как они работают.... У меня есть Google, но без везения.
Кто-нибудь может указать на некоторую документацию, где эти действия объясняются?
Кроме того, есть ли какая-либо документация потока обслуживания tts, объясненная подробно?
Спасибо заранее.
1 ответ
CheckVoiceData
необходимо, потому что он может быть вызван клиентом, желающим знать, будет ли работать двигатель. Я думаю, что вы можете прожить без двух других хотя бы какое-то время.
<activity android:name=".CheckVoiceData"
android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="android.speech.tts.engine.CHECK_TTS_DATA" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
В CheckVoiceData.onCreate()
вы будете делать что-то вроде этого:
ArrayList<String> askedToCheck = intent.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_CHECK_VOICE_DATA_FOR);
// if it is null, they usually check and report all available languages.
ArrayList<String> available = new ArrayList<String>();
ArrayList<String> unavailable = new ArrayList<String>();
//...
Intent returnData = new Intent();
returnData.putStringArrayListExtra(
TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES, available);
returnData.putStringArrayListExtra(
TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES, unavailable);
setResult(result, returnData);
finish();
Пример правильной языковой строки "eng-USA"
,