Android не поддерживает TTS Engine

Здесь я разрабатываю очень простое приложение. Это для моей дочери, страдающей церебральным параличом. Это просто большие кнопки ДА и НЕТ, чтобы она могла нажимать их по запросу.

Ну ... Я использую SVOX Classic TTS Engine.

Все шло гладко, пока мой планшет не обновился до ICS. Теперь каждый раз, когда я запускаю приложение, оно открывает Маркет и просит меня установить TTS. Я нажимаю "назад", и мое приложение говорит. Это ОЧЕНЬ раздражает.

Вот что говорит Google API:

* Успешная проверка будет отмечена кодом результата CHECK_VOICE_DATA_PASS, указывающим, что это устройство готово к работе после создания нашего объекта TextToSpeech. Если нет, мы должны сообщить пользователю об установке данных, необходимых для того, чтобы устройство стало многоязычной говорящей машиной! Загрузка и установка данных выполняется путем запуска намерения ACTION_INSTALL_TTS_DATA, которое приведет пользователя к Android Market и позволит ему / ему инициировать загрузку. Установка данных произойдет автоматически после завершения загрузки. Вот пример того, как будет выглядеть ваша реализация onActivityResult (): *

Вот мой код:

public class yesOunoActivity extends Activity implements OnInitListener{
ImageView yes;
ImageView no;
public TextToSpeech tts;
private int MY_DATA_CHECK_CODE = 0;

@Override
public void onCreate(Bundle savedInstanceState) {

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

    tts = new TextToSpeech(this, this);

    setContentView(R.layout.yesorno);

    yes = (ImageView) findViewById(R.id.yes);
    no = (ImageView) findViewById(R.id.no);


    yes.setClickable(true); 
    yes.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent arg1) {

             if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {                             
                 tts.speak("yes!", TextToSpeech.QUEUE_ADD, null);
             }
             return true;
        }
    });


    no.setClickable(true); 
    no.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent arg1) {

             if (arg1.getAction() == android.view.MotionEvent.ACTION_DOWN) {                             

                //Intent myIntent = new Intent(v.getContext(), ParametrosActivity.class);
                tts.speak("no!", TextToSpeech.QUEUE_ADD, null);
             }
            return true;
    }

    });


}


@Override
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
            tts = new TextToSpeech(this, this);
        } else {
            // missing data, install it
            //ATTENTION: BELOW THIS GIVES ME PROBLEMS SINCE IT OPENS MARKET
            //AND I HAVE TO HIT THE BACK BUTTON, THEN, IT SPEAKS!
            //BTW TTS ENGINE "IS" INSTALLED!!
            Intent installIntent = new Intent();
            installIntent
                    .setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        }
    }

}

@Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
    } else if (status == TextToSpeech.ERROR) {
    }
}

@Override
public void onDestroy() {
    if (tts != null) {
        tts.stop();
        tts.shutdown();
    }
    super.onDestroy();
    System.gc();
}

    }

Если я удалю область с надписью «ВНИМАНИЕ» выше (поскольку я УВЕРЕН, что у меня установлен TTS), она работает при первом запуске приложения, если я выхожу из приложения и открываю его снова, он говорит «говорить не удалось: не привязан к движку tts»

Это похоже на то, что он не создает объект TTS, так как приложение все еще находится в памяти.

Итак, ребята ... что вы, ребята, думаете, что мне следует делать ??

Это сводит меня с ума, и мне действительно нужно общаться с дочерью через планшет!

Любая помощь приветствуется !!

9
задан AakashM 8 March 2012 в 11:04
поделиться