1,入门:让TEXT朗读起来

        
  1. //1,先写一个用来检查tts是否安装的方法privatefinalstaticintCHECK_CODE=1;
  2. publicvoidcheckTts(){
  3. IntentcheckIntent=newIntent();checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
  4. startActivityForResult(checkIntent,CHECK_CODE);}
  5. //创建一个TTS
  6. privateTextToSpeechmTts;
  7. //这个自己先去了解下onActivityResult是怎么回事,这里不作详解
  8. @OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
  9. //TODOAuto-generatedmethodstubsuper.onActivityResult(requestCode,resultCode,data);
  10. if(requestCode==CHECK_CODE){
  11. if(resultCode==TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
  12. //成功创建一个TTS
  13. mTts=newTextToSpeech(this,this);
  14. }else{
  15. //否则安装一个
  16. IntentinstallIntent=newIntent();installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);startActivity
  17. (installIntent);}}}
  18. //2,让TTS朗读起来
  19. //onCreate方法中
  20. //检查TTS是否正常checkTts();
  21. //创建用组件privatespeakValue=(EditText)
  22. findViewById(R.id.speakValue);
  23. privatespeakButton=(Button)
  24. findViewById(R.id.sayHello);
  25. speakButton.setOnClickListener(newOnClickListener(){
  26. @Override
  27. publicvoidonClick(Viewv){
  28. //TODOAuto-generatedmethodstub
  29. Stringtext=speakValue.getText().toString();
  30. Log.d("result","text-->"+text);sayTts(text);}});
  31. //TTs朗读用privatevoidsayTts(Stringtext){
  32. //最简单的例子mTts.speak(text,TextToSpeech.QUEUE_FLUSH,null);
  33. }
  34. //补充,使用TTS朗读,一定要实现OnInitListener 接口
  35. //TTs对象创建后初始化
  36. @OverridepublicvoidonInit(intstatus){
  37. if(status==TextToSpeech.SUCCESS){
  38. //设置语言区域intresult=mTts.setLanguage(Locale.US);
  39. //如果是不支持语言
  40. if(result==TextToSpeech.LANG_MISSING_DATA||result==TextToSpeech.LANG_NOT_SUPPORTED){
  41. Log.e("error","不支持");}}}

就这么点代码就可以正常运行了…

2,进阶使用:改变我们朗读播放的类型,回调函数的使用与自定义文字发音

1,更改播放的流类型(暂且这样说,希望,有人解释一下)

        
  1. //更改播放使用的流类型
  2. //在sayTts作以下修改
  3. //TTs朗读用privatevoidsayTts(Stringtext){HashMap<String,String>myAlarm=newHashMap();
  4. //把播放类型,通过闹钟流实现myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM,String.valueOf(AudioManager.STREAM_ALARM));
  5. //你播放的tts在音频播放的闹钟类型流中mTts.speak(text,TextToSpeech.QUEUE_FLUSH,myAlarm);
  6. //英语原文是这样,我了解的就是以上我注释的内容
  7. //我感觉不是很了解,希望有人帮帮
  8. //OnAndroid,eachaudiostreamthatisplayedisassociatedwithone
  9. //streamtype,asdefinedinandroid.media.AudioManager.Foratalking
  10. //alarmclock,wewouldlikeourtexttobeplayedonthe
  11. //AudioManager.STREAM_ALARMstreamtypesothatitrespectsthealarm
  12. //settingstheuserhaschosenonthedevice.
  13. }

2,回调函数的使用

        
  1. //在sayTts()中实现..
  2. //需要实现OnUtteranceCompletedListener这个接口
  3. //TTs朗读用
  4. privateToasttoast;prvateContextcontext=getApplicationContext();
  5. privatevoidsayTts(Stringtext){HashMap<String,String>myAlarm=newHashMap();mTts.setOnUtteranceCompletedListener(this);
  6. myAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"metoo");
  7. toast=Toast.makeText(context,"metoo",Toast.LENGTH_LONG);
  8. //最简单的例子mTts.speak(text,TextToSpeech.QUEUE_FLUSH,myAlarm);}
  9. //回调函数@OverridepublicvoidonUtteranceCompleted(StringutteranceId){speakPlayBack(utteranceId);}
  10. privatevoidspeakPlayBack(Stringstr){Log.d("result","playBack-->"+str);toast.show();}

3,录制TTS朗读保存到SD卡中

        
  1. //把TTS朗读结果保存
  2. privatevoidsayTofile(Stringtext){
  3. HashMap<String,String>ttsRender=newHashMap<String,String>();
  4. StringdestFileName="/sdcard/tts/"+text+".wav";ttsRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,text);mTts.synthesizeToFile(text,ttsRender,destFileName);
  5. }
  6. //在

你就可以看到你刚才朗读的Text被保存了

4,自定义Text发音

        
  1. //自定义文字播放
  2. privatevoidsayTrue(Stringtext){
  3. StringdestFileName="/sdcard/tts/"+text+".wav";mTts.addSpeech(text,destFileName);
  4. mTts.speak(text,TextToSpeech.QUEUE_FLUSH,null);}
  5. //在onclick方法中运行sayTrue();

亲测,MP3也可以播放…

5,销毁

        
  1. @OverrideprotectedvoidonDestroy(){super.onDestroy();
  2. if(mTts!=null){
  3. mTts.stop();
  4. mTts.shutdown();}}

更多相关文章

  1. SettingActivity学习笔记
  2. Android(安卓)获取控件高度宽度三种方法
  3. Android(安卓)Vold和SDIO冲突问题解决方法
  4. android 自定义动画2
  5. android webView 使用方法
  6. Android(安卓)UI 测试框架 Espresso
  7. Android获取当前进程名
  8. Android中图片的处理(放大缩小,去色,转换格式,增加水印等)函数
  9. Android(安卓)生命周期架构组件使用方法

随机推荐

  1. Android中自定义一个View的方法详解
  2. 基于 Distcc 的android分布式编译环境的
  3. android:showAsAction的用法
  4. AndroidUnity项目嵌入有米广告注意
  5. Android的IBinder接口及其安全性机制
  6. Android学习路线(十一)管理Activity的生命
  7. Android中Canvas绘图之Shader使用图文详
  8. 直接拿来用!最火的Android开源项目(一)-CSDN
  9. Android中的动画效果学习之二---Tween动
  10. 安装android studio报错Failed to instal