TextToSpeech : API Level 21 中已弃用的说话功能

Posted

技术标签:

【中文标题】TextToSpeech : API Level 21 中已弃用的说话功能【英文标题】:TextToSpeech : deprecated speak function in API Level 21 【发布时间】:2015-08-22 18:43:06 【问题描述】:

我尝试在我的应用中使用 TextToSpeech,

String text = editText.getText().toString();
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);

但是函数 speak(String text, int queueMode, HashMap params) 在 API 级别 21 中已被弃用。相反,建议使用 speak(CharSequence text, int queueMode, Bundle params, String utteranceId)。 但我不知道如何设置它。谢谢

【问题讨论】:

【参考方案1】:
String text = editText.getText().toString();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
    tts.speak(text,TextToSpeech.QUEUE_FLUSH,null,null);
 else 
    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);

【讨论】:

当我使用您的建议时,android Studio 会说:“params="null" utteranceId="null" 并打开 if 语句建议。而且,它对我的​​情况没有足够的帮助。 Build.VERSION_CODES 现已过时(2021 年 4 月)。只需替换上述条件 (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) ...等【参考方案2】:

这是适合我的完整作品

Private TextToSpeech ts
 ts=new TextToSpeech(CurrentActivity.this, new TextToSpeech.OnInitListener() 
            @Override
            public void onInit(int status) 
                String text = "Any Text to Speak";
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
                    ts.speak(text,TextToSpeech.QUEUE_FLUSH,null,null);
                 else 
                    ts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
                

            
        );

【讨论】:

以上是关于TextToSpeech : API Level 21 中已弃用的说话功能的主要内容,如果未能解决你的问题,请参考以下文章

Android TextToSpeech TTS中文文本转语音(语音合成)

textToSpeech.synthetizeToFile 创建损坏的文件?

Android中TextToSpeech的使用

Android中TextToSpeech的使用

Xamarin Essentials教程语音播报TextToSpeech

Android 文字转语音,语音消息播放之TextToSpeech