Global TTS en Android

Hola, estoy desarrollando una aplicación para usuarios ciegos, de modo que utilizo muy a menudo texto a voz como prácticamente el único método para responder a las acciones del usuario. Decidí hacer que se ejecutara una instancia global de TTS mientras la aplicación. Lo he implementado de esta manera

package com.simekadam.blindguardian;

import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;

public class SpeechHelper implements OnInitListener {

private static TextToSpeech mTts;
private String text; 
private static final SpeechHelper helper = new SpeechHelper();

public static SpeechHelper getInstance(){

    return helper;
}


public void say(String text, Context context){

    if(mTts == null){
        this.text = text;
        mTts = new TextToSpeech(context, (OnInitListener) helper);

    }
    else{
        mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
    }
}


@Override
public void onInit(int status) {
    // TODO Auto-generated method stub
    if (status == TextToSpeech.SUCCESS) {
        mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
    }
}

public void stopTTS(){
    if(mTts != null){
        mTts.shutdown();
        mTts.stop();
        mTts = null;
    }
}

}

En primer lugar, está funcionando PERO ... Quería verificar la disponibilidad de datos de voz como ese

protected 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);
    text = getIntent().getExtras();
}


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, (OnInitListener) this);
            mTts.setLanguage(new Locale("cze", "CZE"));
        } else {
            // missing data, install it
            Intent installIntent = new Intent();
            installIntent.setAction(
                TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
            startActivity(installIntent);
        }
    }       
}

Su código del portal de desarrolladores de Android, pero no puedo iniciar la actividad para el resultado de la clase que no es hija de Android. Actividad .. Por favor, ¿cómo verificarlo sin usar actividades? ¿Es correcto este enfoque de invocar TTS? (Lo he implementado todo con Actividades antes, pero hubo un par de pérdidas de memoria, debido a un TTS cerrado incorrectamente, y cuando lo cerré correctamente, debe crearse nuevamente en cada llamada, demasiado lento ...)

Respuestas a la pregunta(3)

Su respuesta a la pregunta