目前随着技术的飞速发展,app制作的要求也是越来越多,在上一个项目中因为做的是类似电商类的app所以客服需要加一个能够随时监听客户下单情况,如何在有订购的单子时用语音提示且弹出订单的内容,然而当客户提出这个需求时,脑子里马上出现的便是百度语音,没错,就是它了,于是进百度语音的开发者平台申请appkey然后下载sdk照着文档一步一步的集成(对于集成第三方的一些功能,一个字,那就是“细心”),最后终于OK,测试了一下,一共有四种类型的声音,分别进行了试验,最后还是喜欢女声。好了,语音播报就算完成了,然而在接下来的日子里,项目有需要集成云信的聊天功能,又是一顿集成,然而在云信初始化的时候老是出错,查了半天是因为百度语音的云信初始化只能初始化一个,不然ANR,因为都是第三方的,所以,就想了其他办法,终于发现原来谷歌原生自带的语音播报,我的天啊,一顿翻墙查看。果然能发音了。下面是我自己写的的一个谷歌原生语音播报:
/**
* Created by luweicheng on 2016/12/13.
*/
public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener {
private static final int CHECK_TTS_ENGINE = 0;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.speak).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
tts.speak("Hello World",TextToSpeech.QUEUE_FLUSH,null);
Log.e(TAG, "onClick: 播放" );
}
});
Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent,CHECK_TTS_ENGINE);
}
private static final String TAG = "MainActivity";
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CHECK_TTS_ENGINE){
if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
tts = new TextToSpeech(MainActivity.this,this);
Log.e(TAG, "onActivityResult: 安装成功");
}else {
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
Log.e(TAG, "onActivityResult: 未安装去安装" );
}
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onInit(int i) {
if (i == TextToSpeech.SUCCESS) {
if (tts.isLanguageAvailable(Locale.US) == TextToSpeech.LANG_AVAILABLE)
Log.e(TAG, "onInit: SUCCESS" );
tts.setLanguage(Locale.US);
} else if (i == TextToSpeech.ERROR) {
Log.e(TAG, "onInit: Error");
Toast.makeText(this, "Sorry! Text To Speech failed...",
Toast.LENGTH_LONG).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
tts.shutdown();//释放资源
Log.e(TAG, "onDestroy: 释放资源" );
}
}
是不是觉得比第三方集成方便多了,但是这里有个特别坑爹的地方,毕竟Android是人家老外的,所以语音只支持五种语言:English ,German , Italian ,French ,Spanish(英文,德语,意大利语,法语,西班牙语)五个音库.所以中文发音必须要借助其他的软件,或者引擎,如果想要转化成汉语这里有个网址点击查看如何安装中文发音引擎