首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本到语音转换错误

文本到语音转换错误
EN

Stack Overflow用户
提问于 2011-11-11 04:46:36
回答 2查看 1.6K关注 0票数 0

谁能让我知道我做错了什么。正在尝试将文本到语音转换为文本视图的work onClick。

代码语言:javascript
复制
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;
    }
}

如果有人能帮上忙,或者有更好的方法来运行代码,我很乐意听到你的想法。我试着去研究,但是每一种我尝试的方式都会给我一个错误或者别的什么。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-11-11 19:57:54

在TextToSpeech调用onInit之前,您的按钮将不起作用。因此,在此之前,您应该禁用btnSpeak。

票数 1
EN

Stack Overflow用户

发布于 2011-11-11 05:06:45

你的TTS东西看起来很好。但是,我看不到您将任何按钮绑定到onClick方法的位置,您的活动似乎也没有实现onClickListener接口。您需要执行其中的一个操作才能运行该onClick方法。

所以基本上,我看不到任何方法可以调用你的onClick方法。

假设你的布局中有一些视图/按钮,用户应该点击来收听tts,我想你需要这样的东西:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8086068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档