Объяснение службы 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, но без везения.

  1. Кто-нибудь может указать на некоторую документацию, где эти действия объясняются?

  2. Кроме того, есть ли какая-либо документация потока обслуживания 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",

Другие вопросы по тегам