我写了一个后台服务来查找用户的位置。现在我想在用户位置发生变化时向用户发送语音通知。我已经编写了用于确定位置更改和发送简单推送通知的代码,现在任何人都可以帮助我制作语音通知或如何编写语音通知代码,或者是否有任何第三方库可以通过它向用户发送语音通知. 帮助表示赞赏。谢谢
问问题
4081 次
4 回答
3
是的,最后我以非常简单的方式和完整的解决方案得到了它。
private TextToSpeech myTTS; // Define the TTS objecy
private int MY_DATA_CHECK_CODE = 0;
//write the following code in oncreate method or whereever you want to use this
{
myTTS = new TextToSpeech(this, this);
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
speakWords("Pass the String here");
}
private void speakWords(String speech) {
//speak straight away
//myTTS.setLanguage(Locale.US);
System.out.println(speech + " TTSTTTS");
myTTS.speak(speech, TextToSpeech.LANG_COUNTRY_AVAILABLE, null);
}
public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS) {
if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE)
myTTS.setLanguage(Locale.US);
} else if (status == TextToSpeech.ERROR) {
Toast.makeText(getApplicationContext(), "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();
}
}
于 2012-12-05T06:41:25.173 回答
2
这是一个示例 链接,您可能需要的部分粘贴在此处。
private TextToSpeech myTTS;
Intent checkTTSIntent = new Intent();
checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);
myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
speakWords(words); //call this function with the string you want as voice
//speak the user text
private void speakWords(String speech) {
//speak straight away
myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);
}
//act on result of TTS data check
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
//the user has the necessary data - create the TTS
myTTS = new TextToSpeech(this, this);
}
else {
//no data - install it now
Intent installTTSIntent = new Intent();
installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installTTSIntent);
}
}
}
//setup TTS and don't forget to implement OnInitListener interface to use this method
public void onInit(int initStatus) {
//check for successful instantiation
if (initStatus == TextToSpeech.SUCCESS) {
if(myTTS.isLanguageAvailable(Locale.US)==TextToSpeech.LANG_AVAILABLE)
myTTS.setLanguage(Locale.US);
}
else if (initStatus == TextToSpeech.ERROR) {
Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();
}
}
于 2012-12-04T13:18:47.207 回答
1
使用 android text to Speech api在这里查看参考
于 2012-12-04T13:08:23.093 回答
1
在您的通知方法(notificationManager.notify(0, notification);
调用位置)中,添加以下内容:
try {
Uri ring_uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), ring_uri);
r.play();
} catch (Exception e) {
// Error playing sound
}
每当您推送通知时,这都会发出通知声音。
于 2012-12-04T13:46:10.913 回答