【问题标题】:Init text to speech in all activities?在所有活动中初始化文本到语音?
【发布时间】:2012-09-13 04:57:57
【问题描述】:

假设 android 应用程序有不止一个活动和服务。 他们每个人都使用文本到语音。我了解所有这些活动和服务 在同一个进程中运行,除非我们明确指定在单独的进程中运行。 我们知道一次只有一个处于活动状态。

如果是这种情况,我们有什么方法可以初始化文本到语音引擎 在一项活动中并在其他活动/服务中引用它?

例子

ptrTTS = new TextToSpeech(this, this);

在一项活动中并在其他活动/服务中引用它?

进行此初始化的最佳位置是什么?

oncreateoninit 的 Text to Speech 或 onactivityresult 中是否安装了 TTS?

【问题讨论】:

    标签: android init text-to-speech


    【解决方案1】:

    据我了解,TextToSpeech() 只是另一个类。如果您在一个活动中创建一个对象,当您移动到另一个活动时,它会被销毁。
    在 Activity 之间共享同一个对象有不同的方法,例如通过 Intent 传递它们。
    在您的情况下,您可以创建一个定义 ptrTTS 的应用程序类,如下所示(但不确定它是否正确):

    class MyApp extends Application {
    
      private TextToSpeech ptrTTS;
    
      public TextToSpeech getObject(){
        return ptrTTS;
      }
      public TextToSpeech setObject(TextToSpeech obj){
        ptrTTS = obj;
      }
    }
    

    然后你选择你的第一个 Activity 来初始化它。

    class MainActivity extends Activity {
    
      @Override
      public void onCreate(Bundle b){
        ...
        TextToSpeech ptr = new TextToSpeech(this, this);
        MyApp appState = ((MyApp)getApplicationContext());
        appState.setObject(ptr);
        ...
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多