0

Android アプリに複数のアクティビティとサービスがあるとします。それらのそれぞれは、テキスト読み上げを使用します。別のプロセスで実行することを明示的に指定しない限り、これらすべてのアクティビティとサービスが同じプロセスで実行されることを理解しています。一度にアクティブなのは 1 つだけです。

この場合、あるアクティビティで Text to Speech エンジンを初期化し、それを他のアクティビティ/サービスで参照する方法はありますか?

ptrTTS = new TextToSpeech(this, this);

ある活動でそれを他の活動/サービスで参照しますか?

この初期化を行うのに最適な場所はどこですか?

TTS がインストールされているかどうかの Text to Speech または onactivityresult 内またはのoncreate?oninit

4

1 に答える 1

0

私の理解では、 TextToSpeech() は単なる別のクラスです。あるアクティビティで作成したオブジェクトは、別のアクティビティに移動すると破棄されます。
アクティビティ間で同じオブジェクトを共有するには、インテントを介して渡すなど、さまざまな方法があります。
あなたの場合、次のようにptrTTSを定義するアプリケーションクラスを作成できます(ただし、正しいかどうかはわかりません):

class MyApp extends Application {

  private TextToSpeech ptrTTS;

  public TextToSpeech getObject(){
    return ptrTTS;
  }
  public TextToSpeech setObject(TextToSpeech obj){
    ptrTTS = obj;
  }
}

そして、最初のアクティビティを選択して初期化します。

class MainActivity extends Activity {

  @Override
  public void onCreate(Bundle b){
    ...
    TextToSpeech ptr = new TextToSpeech(this, this);
    MyApp appState = ((MyApp)getApplicationContext());
    appState.setObject(ptr);
    ...
  }
}
于 2012-09-13T05:34:51.370 に答える