Getting Error when loading TTS
I am getting the following stack trace from some phones running my app.
This works fine on my G1 and the emulator, I have never had any troubles. But I am getting the following stack trace from other users.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.droidprofessor.android.mmm/com.droidprofessor.android.mmm.ActivityGame}: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.speech.tts.engine.CHECK_TTS_DATA }
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
at android.app.ActivityThread.access$2200(ActivityThread.java:119)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4363)
at java.lang.reflect.Method.invokeNative(Native Me开发者_StackOverflow社区thod)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.speech.tts.engine.CHECK_TTS_DATA }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
at android.app.Activity.startActivityForResult(Activity.java:2749)
at com.droidprofessor.android.mmm.ActivityGame.loadServices(ActivityGame.java:285)
at com.droidprofessor.android.mmm.ActivityGame.onCreate(ActivityGame.java:105)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
... 11 more
Here is the activity that handles TTS. GameActivity extends this activity.
public class ActivityTTS extends Activity implements OnInitListener {
//TEXT TO SPEECH SERVICE
public static final int CHECK_TTS_AVAILABILITY = 0;
private static final String TAG = "ActivityTTS";
private TextToSpeech mTts; //Text to speech library
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//TTS Service
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, CHECK_TTS_AVAILABILITY);
}
/**
* For TTS
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try {
if(Logging.DEBUG_LOG) Log.d(TAG, "TTS Response: "+requestCode);
if (requestCode == CHECK_TTS_AVAILABILITY) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
} else {
// missing data, install it
Toast.makeText(getApplicationContext(), R.string.install_audio_data, Toast.LENGTH_LONG).show();
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
finish();
}
}
}catch (Exception e) {
if(Logging.ERROR_LOG) Log.e(TAG, "Unable to access service");
finish();
}
}
/**
* Loads when the TTS is ready
*/
@Override
public void onInit(int status) {
mTts.setLanguage(Locale.getDefault());
}
/**
* Speak text
*/
final void speak(String text) {
try{
mTts.stop(); //Stop speaking
mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
}
catch(Exception e) {
if (Logging.ERROR_LOG) Log.e(TAG, "TTS Failed - cannot say: "+text );
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//Close the Text to Speech Library
if(mTts != null) mTts.shutdown();
}
}
Check the SDK that you are running in that particular device. TexttoSpeech API has been introduced only from Android 1.6 SDK. So if you running 1.5 SDK you might face this issue.
http://android-developers.blogspot.com/2009/09/introduction-to-text-to-speech-in.html
This is the place where you must be getting that error. It tries to navigate an user to android market to download the app...Check the above link.They would have specified it there...
else
{
// missing data, install it
Toast.makeText(getApplicationContext(), R.string.install_audio_data, Toast.LENGTH_LONG).show();
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
finish();
}
There has been already an issue that has been filed on the same. Probably you need to change the conditions a bit.
IntentNotFoundException for TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA
精彩评论