как программно узнать, установлен ли какой-либо движок TTS в моем устройстве или нет?

Я хотел бы знать программно, как получить информацию о двигателе TTS устройства, например установлен ли какой-либо движок TTS или нет, если он установлен, то что это такое и какие языки поддерживаются каждым движком TTS? Я должен использовать Android версии 2.1 (API-уровень 7) для достижения этой цели.

Пожалуйста, помогите мне реализовать эту функцию.

С Уважением,

Пикс

Ответы на вопрос(4)

Вы можете проверить это, сначала отправив намерение на результат

Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, 0);

Затем вы можете проверить это, если у вас установлен механизм TTS или нет в методе onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 0){
    if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
    Toast.makeText(getApplicationContext(),"Already Installed", Toast.LENGTH_LONG).show();
} else {
    Intent installIntent = new Intent();
    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
    startActivity(installIntent);
    Toast.makeText(getApplicationContext(),"Installed Now", Toast.LENGTH_LONG).show();
}

Надеюсь, что это работает :)

 12 нояб. 2018 г., 12:28
таким образом, если на мобильном телефоне нет движка TTS, программа не запустится! У вас есть какое-нибудь решение?
 12 июн. 2012 г., 22:17
int result = TTS.setLanguage (новая локаль (& quot; pt & quot;); & lt; - вот и все :) Надеюсь, это поможет @piks
 piks07 июн. 2012 г., 06:43
но как этот код помогает мне узнать, поддерживается ли конкретный язык механизмом TTS или нет, и вторая вещь: как установить механизм по умолчанию для другого механизма TTS?
 08 июн. 2012 г., 14:09
Ответ 1-й: есть функция isLanguageAvailable (Locale.FRANCE); Ответ второй: я не понял вашего вопроса! @piks
 piks09 июн. 2012 г., 05:35
Второй вопрос: предположим, что на устройстве установлено более одного механизма TTS, и один механизм установил его по умолчанию (обычно PICO), но по умолчанию TTS не поддерживает все языки, скажем португальский, в этом сценарии Мое приложение должно сначала проверить, установлено ли в настоящее время значение по умолчанию Движок поддерживает португальский или нет, если нет, то он установит другой установленный TTS и проверит то же самое. Как добиться этого программно?

Этот официальныйСообщение в блоге Android дает вам лучшие рекомендации для определения того, установлен ли TTS Engine и готов ли он к использованию, а также другие методы работы с TTS.

Это дает вам список двигателей TTS, установленных на вашем Android.

tts = new TextToSpeech(this, this);
for (TextToSpeech.EngineInfo engines : tts.getEngines()) {
Log.d("Engine Info " , engines.toString());
}

Чтобы сохранить ваши клики:

Запустите это, чтобы проверить, установлен ли TTS или нет:

Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

а затем получить результат в этом:

private TextToSpeech mTts;
protected void onActivityResult(
    int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
    if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
        // success, create the TTS instance
        mTts = new TextToSpeech(this, this);
    } else {
        // missing data, install it
        Intent installIntent = new Intent();
        installIntent.setAction(
            TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
        startActivity(installIntent);
    }
}
}
 19 нояб. 2018 г., 10:51
С этим решением, если двигатель TTS отключен, приложение не будет работать! У вас есть какое-нибудь решение?
 piks07 июн. 2012 г., 06:43
но как этот код помогает мне узнать, поддерживается ли конкретный язык механизмом TTS или нет, и вторая вещь: как установить механизм по умолчанию для другого механизма TTS?

Ваш ответ на вопрос