tts在android中的服务说明

时间:2013-02-02 10:32:30

标签: android service text-to-speech flite

我对Android的tts服务的实现有疑问。 这是交易:

- 我查看了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>

这些活动的实际行动可以自我解释,但我想知道: 它们是强制性的,它们是如何工作的......我已经谷歌了,但没有运气。

  1. 有人可以指出解释这些活动的文件吗?

  2. 此外,是否有详细说明tts服务流程的文档?

  3. 提前完成。

1 个答案:

答案 0 :(得分:0)

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"