0
所以我試圖實現文本到語音到我的應用程序有史以來第一次。講話被調用時,我仍然會有一個錯誤的想法。下面是我收到的日誌:文本到語音產生錯誤
01-23 18:52:29.825: E/AndroidRuntime(24380): FATAL EXCEPTION: main
01-23 18:52:29.825: E/AndroidRuntime(24380): Process: com.rcd.league, PID: 24380
01-23 18:52:29.825: E/AndroidRuntime(24380): java.lang.NullPointerException
01-23 18:52:29.825: E/AndroidRuntime(24380): at com.rcd.league.speakActivity.speakOut(speakActivity.java:60)
01-23 18:52:29.825: E/AndroidRuntime(24380): at com.rcd.league.spawnTimers$15.onClick(Timers.java:350)
01-23 18:52:29.825: E/AndroidRuntime(24380): at android.view.View.performClick(View.java:4442)
01-23 18:52:29.825: E/AndroidRuntime(24380): at android.view.View$PerformClick.run(View.java:18423)
01-23 18:52:29.825: E/AndroidRuntime(24380): at android.os.Handler.handleCallback(Handler.java:733)
01-23 18:52:29.825: E/AndroidRuntime(24380): at android.os.Handler.dispatchMessage(Handler.java:95)
01-23 18:52:29.825: E/AndroidRuntime(24380): at android.os.Looper.loop(Looper.java:137)
01-23 18:52:29.825: E/AndroidRuntime(24380): at android.app.ActivityThread.main(ActivityThread.java:5083)
01-23 18:52:29.825: E/AndroidRuntime(24380): at java.lang.reflect.Method.invokeNative(Native Method)
01-23 18:52:29.825: E/AndroidRuntime(24380): at java.lang.reflect.Method.invoke(Method.java:515)
01-23 18:52:29.825: E/AndroidRuntime(24380): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
01-23 18:52:29.825: E/AndroidRuntime(24380): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
01-23 18:52:29.825: E/AndroidRuntime(24380): at dalvik.system.NativeStart.main(Native Method)
這裏是我的代碼:
package com.rcd.league;
import java.util.Locale;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
public class speakActivity extends Activity implements TextToSpeech.OnInitListener {
private int MY_DATA_CHECK_CODE = 0;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
tts = new TextToSpeech(this, this);
}
@Override
public void onDestroy() {
// Don't forget to shutdown tts!
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
speakOut();
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
public void speakOut() {
String text = "test";
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
}
我打電話SPEAKOUT();來自另一項活動。下面是代碼片段:
speakActivity speak = new speakActivity();
...
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (btTimer.getText().toString().contains(":50")){
cd[0].start();
speak.speakOut();
} else {
cd[0].cancel();
cd[0].onFinish();
}
}
});
任何幫助將不勝感激! 謝謝!
編輯:我也曾嘗試QUEUE_ADD而不是QUEUE_FLUSH並沒有工作之一:您創建的speakActivity
活動/
謝謝你,這是非常有益實際上,我認爲它終於點擊的意圖做什麼。但是,我應該startActivity(意向)在第一次活動的onCreate? – Rob
從我看到的代碼看起來像你想要這個代碼被稱爲當用戶點擊應用程序的權利按鈕?所以你想在用戶點擊按鈕時開始活動。查看本教程中的「在Android中啓動活動」。我認爲這是一個很好,更徹底的例子,說明你想做什麼,我可以解釋。 http://developer.android.com/training/basics/firstapp/starting-activity.html – mdewitt