感謝那些告訴我要通過ApplicationContext。事實證明,這是一件容易的事情......難的是TextToSpeech對象是否保證線程安全。
感謝您的回答告訴我如何做出線程安全的/假設它是,但問題是關於對象是否已經是。我可能應該說,我沒有執行線程安全性,但我想知道我是否需要打擾。我不想確定線程安全。
我跑了以下,它似乎工作。所以我認爲Android SDK TTS是線程安全的,但是找不到任何文檔說明在所有設備上都假設這是安全的,所以我將暫時包裝我的TTS實例!
package com.example.testproject;
import java.util.Random;
import android.os.Bundle;
import android.app.Activity;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
public class TestActivity extends Activity implements OnInitListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tts = new TextToSpeech(getApplicationContext(), this);
}
TextToSpeech tts = null;
@Override
public void onInit(int arg0) {
for (int i = 0; i < 100; ++i) {
class Irritate implements Runnable {
Irritate(int iIn) {
i = iIn;
}
@Override
public void run() {
Random r = new Random();
try {
Thread.sleep(r.nextInt(2000));
} catch (InterruptedException e) {
e.printStackTrace();
}
tts.speak(Integer.toString(i), TextToSpeech.QUEUE_ADD, null);
}
int i;
}
Thread t = new Thread(new Irritate(i));
t.start();
}
}
}
你的意思是語音識別?如果我正確地理解了這個問題,他的意思是相反的,也就是說,通過文本產生真正的聲音 – mdelolmo 2012-07-06 14:45:55
噢。你是對的。我所描述的是語音識別。然而,我在第二段中擴展Application的模式仍然是他正在尋找的解決方案。 – 2012-07-06 14:48:42
是的,我同意,他應該通過應用程序上下文而不是活動上下文 – mdelolmo 2012-07-06 15:00:31