有没有人能帮我把TTS和API 21一起使用?所有可用的示例在版本21中都已弃用
下面是我的代码,最后一行出现错误:
Calendar cal = Calendar.getInstance();
cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String text = sdf.toString();
btn.setText("Ouvir as Horas");
TextToSpeech tts = new TextToSpeech(NightClock.this,(TextToSpeech.OnInitListener) NightClock.this);
tts.setLanguage(Locale.US);
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
在Android开发人员中,它说这个方法已被弃用,取而代之的是:
API (String text,int queueMode,HashMap params)此方法在
级别21中已被弃用。从API级别21开始,替换为speak(CharSequence,int,Bundle,String)。
有人能帮我编写我的应用程序吗。
发布于 2015-04-21 23:55:27
我搜索了很多网站。最后,我想我可以得到你的问题的答案...
不是直接调用tts.speak(),而是使用下面的if-else语句。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ttsGreater21(text);
} else {
ttsUnder20(text);
}
然后声明ttsGreater21()和ttsUnder20(),如下所示。
@SuppressWarnings("deprecation")
private void ttsUnder20(String text) {
HashMap<String, String> map = new HashMap<>();
map.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "MessageId");
tts.speak(text, TextToSpeech.QUEUE_FLUSH, map);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void ttsGreater21(String text) {
String utteranceId=this.hashCode() + "";
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, utteranceId);
}
我用Genymotion VM Android 5.0和Android 4.4.4确认了上面的代码。
发布于 2015-01-17 20:50:34
tts.speak(text,TextToSpeech.QUEUE_FLUSH,null,null);
尝尝这个。
发布于 2015-01-17 22:35:45
所以我猜这就是诀窍:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
tts.speak("12 e8", TextToSpeech.QUEUE_FLUSH, null, null);
}
else {
tts.speak("12 e8", TextToSpeech.QUEUE_FLUSH, null);
}
我只需要在模拟器上测试一下。
顺便说一句,@Aditya自从你帮了我很大的忙,我一直被困在同一个项目中,它应该会说TextToSpeech并打开屏幕,但我没有设法打开屏幕。我试着从我发现的所有例子中使用唤醒和标志:)这是通过我设法工作的接近传感器来完成的。它会显示文本,但不会显示屏幕。你能在这方面帮我吗?
良好的实践是成功的关键。我建议的所有答案在我的eclipse IDE中都能完美地工作。下面是你屏幕锁定的解决方案
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
..screen will stay on during this section..
wl.release();
https://stackoverflow.com/questions/27968146
复制相似问题