Error loading TTS

I get the following stack trace from some phones running my application.

This works fine on my G1 and emulator, I have never had any problems. But I get 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 Method)
       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 processes the 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(); 
}

}

0
source share
1 answer

Check out the SDK you are using on this particular device. The TexttoSpeech API was introduced only with the Android 1.6 SDK. Therefore, if you use 1.5 SDK, you may encounter this problem.

http://android-developers.blogspot.com/2009/09/introduction-to-text-to-speech-in.html

, . Android ... . ...

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();
}

, . , .

IntentNotFoundException TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA

+1

Source: https://habr.com/ru/post/1682904/


All Articles