开发者

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜