布局文件        

主类:

public class MainActivity extends AppCompatActivity implements View.OnClickListener, TextToSpeech.OnInitListener {    private EditText main_edit_text;    private Button main_btn_read;    // TTS对象    private TextToSpeech mTextToSpeech;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initTextToSpeech();    }    private void initTextToSpeech() {        // 参数Context,TextToSpeech.OnInitListener        mTextToSpeech = new TextToSpeech(this, this);        // 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规        mTextToSpeech.setPitch(1.0f);        // 设置语速        mTextToSpeech.setSpeechRate(0.5f);    }    private void initView() {        main_edit_text = (EditText) findViewById(R.id.main_edit_text);        main_btn_read = (Button) findViewById(R.id.main_btn_read);        main_btn_read.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.main_btn_read:                submit();                break;            default:                break;        }    }    private void submit() {        // validate        String text = main_edit_text.getText().toString().trim();        if (TextUtils.isEmpty(text)) {            Toast.makeText(this, "请您输入要朗读的文字", Toast.LENGTH_SHORT).show();            return;        }        if (mTextToSpeech != null && !mTextToSpeech.isSpeaking()) {            /*                TextToSpeech的speak方法有两个重载。                // 执行朗读的方法                speak(CharSequence text,int queueMode,Bundle params,String utteranceId);                // 将朗读的的声音记录成音频文件                synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);                第二个参数queueMode用于指定发音队列模式,两种模式选择                (1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务                (2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后,                等前面的语音任务执行完了才会执行新的语音任务             */            mTextToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null);        }    }    /**     * 用来初始化TextToSpeech引擎     *     * @param status SUCCESS或ERROR这2个值     */    @Override    public void onInit(int status) {        if (status == TextToSpeech.SUCCESS) {            /*                使用的是小米手机进行测试,打开设置,在系统和设备列表项中找到更多设置,            点击进入更多设置,在点击进入语言和输入法,见语言项列表,点击文字转语音(TTS)输出,            首选引擎项有三项为Pico TTs,科大讯飞语音引擎3.0,度秘语音引擎3.0。其中Pico TTS不支持            中文语言状态。其他两项支持中文。选择科大讯飞语音引擎3.0。进行测试。                如果自己的测试机里面没有可以读取中文的引擎,            那么不要紧,我在该Module包中放了一个科大讯飞语音引擎3.0.apk,将该引擎进行安装后,进入到            系统设置中,找到文字转语音(TTS)输出,将引擎修改为科大讯飞语音引擎3.0即可。重新启动测试            Demo即可体验到文字转中文语言。             */            // setLanguage设置语言            int result = mTextToSpeech.setLanguage(Locale.CHINA);            // TextToSpeech.LANG_MISSING_DATA:表示语言的数据丢失            // TextToSpeech.LANG_NOT_SUPPORTED:不支持            if (result == TextToSpeech.LANG_MISSING_DATA                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {                Toast.makeText(this, "数据丢失或不支持", Toast.LENGTH_SHORT).show();            }        }    }    @Override    protected void onStop() {        super.onStop();        // 不管是否正在朗读TTS都被打断        mTextToSpeech.stop();        // 关闭,释放资源        mTextToSpeech.shutdown();    }    @Override    protected void onDestroy() {        if (mTextToSpeech != null) {            mTextToSpeech.stop();            mTextToSpeech.shutdown();            mTextToSpeech = null;        }        super.onDestroy();    }}

更多相关文章

  1. Android世界的15款开源的游戏开发引擎
  2. 图表引擎AChartEngine 一
  3. Android(朗读文本) TextToSpeech的使用
  4. Unity3d中MicroPhone的使用
  5. Android(安卓)录音实现方法、仿微信语音、麦克风录音、发送语音
  6. android 2d物理引擎-APEngine
  7. Android(安卓)自带语音识别功能
  8. 22、TTS技术
  9. 【Android】后台收听收音机时,语音搜索失效

随机推荐

  1. Android如何设置圆角按钮
  2. Android中如何判断是否联网
  3. Android(安卓)统计图表引擎 AChartEngine
  4. Android(安卓)Stdio实现点击按钮出现图片
  5. android典型代码系列(二十六)------App w
  6. Activity基类广播退出APP
  7. APP启动时白屏或出现标题
  8. Android(安卓)Unable to execute dex: ja
  9. Android为Menu添加item及响应函数
  10. [rk3399][Android(安卓)6.0]隐藏状态栏