객체지향 언어에서는 기본적으로 메인 코드에서 비지니스 로직을 별도의 class 로 빼내는 것이 기본이죠.
가령, 안드로이드는 Activity 에 비지니스 로직을 넣지 않고 나만의 class 에 구현하는 것이 정석이겠죠.

그래서, MyClass 라는 것을 선언하고... 이곳에서 TextToSpeech 를 사용하려고 노력했습니다.
별별 에러를 다 겪으면서...겨우 완성했습니다. 자바의 객체 선언에 대해 무지하다 보니..
실행은 오류 없이 되지만...이게 제대로 구현한 것인지...무척 조심스럽게 내놓습니다.

혹시 잘못된 부분이 있으면, 지적 감사히 받겠습니다.

그럼, Activity 소스와 이어서 MyClass 소스입니다.
참고로, 안드로이드 레퍼런스에서 TextToSpeech 를 shutdown 하는 것을 꼭 잊지 말라고 하는 주석이 있습니다.
그래서. 그곳 예문처럼... onDestroy() 에 shutdown 코드를 넣었습니다. 제대로 한 것 같지는 않지만...잘 작동하네요 ^^;

package pkg.BasicTTSbyClass;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class BasicTTSbyClass extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        MyClass.Init(this);
        
        ((Button) findViewById(R.id.btnSpeak)).setOnClickListener(on_Speak);
    }
    
    private View.OnClickListener on_Speak = new View.OnClickListener() {
     private EditText zWord;
  @Override
  public void onClick(View v) {
   
   zWord = (EditText) findViewById(R.id.txtWord);
   MyClass.doTTS(zWord.getText().toString());
   
  }
 };
}

이어서 MyClass 소스입니다.

package pkg.BasicTTSbyClass;
import java.util.Locale;
import android.content.Context;
import android.speech.tts.TextToSpeech;
public class MyClass {
 
 private static TextToSpeech mTTS;
 private static Context mMain;
 
 public static void onDestroy() {
     if (mTTS != null) {            
      mTTS.stop();            
      mTTS.shutdown();        
     }    
 }
 
 public static void Init(Context main) {
  mMain = main; 
  mTTS = new TextToSpeech(mMain, new TextToSpeech.OnInitListener() 
        { 
         @Override 
         public void onInit(int status) 
         { 
          //onInitListener.onInit(status); -- it raises up an error;
          if (status == TextToSpeech.SUCCESS) 
          {             
           int result = mTTS.setLanguage(Locale.US); 
           if (result == TextToSpeech.LANG_MISSING_DATA ||                
         result == TextToSpeech.LANG_NOT_SUPPORTED) 
           {               
             //Log.e(TAG, "Language is not available.");
        } 
           else 
        {             
         //mTTS.speak("Hello" , TextToSpeech.QUEUE_FLUSH,  null);
        }        
       } 
          else 
       {            
        // Initialization failed.            
        //Log.e(TAG, "Could not initialize TextToSpeech.");
       }    
         } 
        }
  );
    }
 
 public static void doTTS(String zWord) 
 {
  mTTS.speak(zWord, TextToSpeech.QUEUE_FLUSH,  null);
 }
 
}




별도의 Class 에서 코딩을 하시는 분들께 조금이라도 도움이 되었기를 빕니다.