安卓文字转语音实例+代码+TextToSpeech的使用

package example.com.myapplication;

import android.content.Intent;
import android.speech.tts.TextToSpeech;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //2,让TTS朗读起来
        //onCreate方法中
        //检查TTS是否正常
         checkTts();

        //创建用组件
        final EditText speakValue = (EditText) findViewById(R.id.edtText);
        Button speakButton = (Button) findViewById(R.id.btnRead);
        speakButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String text = speakValue.getText().toString();
                Log.d("result","text-->" +text);
                sayTts(text);
            }
        });
    }
    //1,先写一个用来检查tts是否安装的方法
    private final static int CHECK_CODE = 1;
    public void checkTts(){
        Intent checkIntent = new Intent();
        checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkIntent, CHECK_CODE);
    }
    //创建一个TTS
    private TextToSpeech mTts;
    //这个自己先去了解下onActivityResult是怎么回事,这里不作详解
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == CHECK_CODE){
            if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
                //成功创建一个TTS
                mTts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
                    @Override
                    public void onInit(int i) {
                        if(i == TextToSpeech.SUCCESS){                   //设置语言区域
                            int result = mTts.setLanguage(Locale.US);   //如果是不支持语言
                            if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){
                                Log.e("error","不支持");
                            }
                        }
                    }
                });
            }else{
                //否则安装一个
                Intent installIntent = new Intent();
                installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                startActivity(installIntent);
            }
        }
    }
       //TTs朗读用
    private void sayTts(String text){
      //最简单的例子
        mTts.speak(text, TextToSpeech.QUEUE_FLUSH, null);

    }

}

你可能感兴趣的:(Android学习笔记)