Text To Speech error

1.7k views Asked by At

Can any let me know what I am doing wrong. Trying to get Text To Speech to work onClick for a Text View.

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.speech.tts.TextToSpeech;

public class MainActivity extends Activity implements TextToSpeech.OnInitListener
{
    private TextToSpeech tts;
    private static final int MY_DATA_CHECK_CODE = 1234;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_24);

        Intent checkIntent = new Intent();
        checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);

        ((Button)findViewById(R.id.btnClear)) .setOnClickListener(clearbutton);  
    }

    public void onClick(View v)
    {
        TextView textSpeak = (TextView) findViewById(R.id.mainText);
        tts.speak(textSpeak.getText(), TextToSpeech.QUEUE_FLUSH, null);
    }

    public void onInit( int i)
    {

    }

    public 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
            {
                Intent installIntent = new Intent();
                installIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
                startActivity(installIntent);               
            }
        }
    }

    public void onDestory()
    {
        if (tts != null)
        {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
    }

    OnClickListener clearbutton = new OnClickListener()
    {
        public void onClick(View v)
        {
            TextView mainText = (TextView)findViewById(R.id.mainText);
            mainText.setText("");
        }
    };

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
        case R.id.select8icons: setContentView(R.layout.layout_8);
            break;
        case R.id.select24icons: setContentView(R.layout.layout_24);
            break;
        case R.id.select63icons: setContentView(R.layout.layout_63);
            break;
        }
        return true;
    }
}

If anyone can help or has a better way to run the code, I love to hear your ideals. I try to research but every way I try gave me a error or something. Thanks in advance.

2

There are 2 answers

0
mmeyer On

Your TTS stuff looks fine. However, I dont see where you are binding any button to your onClick method and neither does your Activity seem to implement the onClickListener interface. You would need to do one or the other to get that onClick method to run.

So basically, I dont see any way your onClick method will ever get called.

Assuming you have some view/button in your layout the user is supposed to click to hear the tts, I think you want something like:

Button btnSpeak = (Button)findViewById(R.id.btnSpeak);
btnSpeak.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView textSpeak = (TextView) findViewById(R.id.mainText);
                tts.speak(textSpeak.getText(), TextToSpeech.QUEUE_FLUSH, null);

            }
        });
0
gregm On

Your button will not work until TextToSpeech calls onInit. So you should disable btnSpeak until then.