私はTTSを非常に重く使用しています。それは正常に動作していますが、私はそれを微調整する必要があります。AndroidのTTSとシングルトン
私はすべての画面でTTSオブジェクトを使用していますが、これは良くありません。私は、TTSオブジェクトを(シングルトンのように)一度だけ作成して、自分のすべてのアクティビティで使用できることを願っています。ここで
は、これが機能するための基本コードです:
public class SimOuNaoActivity extends Activity implements OnInitListener{
public TextToSpeech tts;
private int MY_DATA_CHECK_CODE = 0;
@Override
public 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);
tts.speak("Testing 1,2,3", TextToSpeech.QUEUE_ADD, null);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
tts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent
.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
// Toast.LENGTH_LONG).show();
} else if (status == TextToSpeech.ERROR) {
// Toast.LENGTH_LONG).show();
}
}
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
System.gc();
}
}
すべての私の活動にTTSオブジェクトが利用可能なための正しいアプローチは何ですか? startActivityForResultなどのいくつかのメソッドを使用していることを覚えておいてください。この作業をうまく行うために何ができるかを知りたいと思います。
誰でも助けてくれますか?
助けがありがとうございます!
ありがとうございます!
TextToSpeechオブジェクトをシングルトンとして設定できない原因は何ですか?あなたのユースケースで行うべき賢明なことのように聞こえる。あなた自身のアプリケーションサブクラスでそれを簡単に設定して、すべてのアクティビティから簡単にアクセスできるようにするか、あるいはシンプルな基本アクティビティを作成して、TextToSpeechオブジェクトへの呼び出しをシングルトン/アプリケーションから委譲し、アクティビティはこれを拡張します。 –
こんにちはMH、あなたの答えに感謝します。任意のサンプルコード?私はちょっとここにこだわっています= P –
ここにコピー・ペースト・コードの代わりに[このほとんど同じトピック]を見てみることをお勧めします(http://stackoverflow.com/questions/8159749/global-tts-インアンドロイド)。シングルトンパターンを使用するTTSの別の実装は、[ここ](http://www.androidadb.com/source/and-bible-read-only/AndBible/src/net/bible/android/device/TextToSpeechController.java)で見つけることができます。 .html)。実際に[Singleton vs. Application](http://stackoverflow.com/questions/3826905/singletons-vs-application-context-in-android)の使用についてコンセンサスがないことに注意してください。私はその決定をあなたに任せます。がんばろう。 :) –