Android TextToSpeech根据需要安装新语言

Android TextToSpeech根据需要安装新语言,android,locale,translation,text-to-speech,Android,Locale,Translation,Text To Speech,我正在尝试创建一个应用程序,通过TextToSpeech口头说出给定的文本字符串。我之前一直在寻找一种从字符串中选择给定语言的方法。然而,现在我正试图弄清楚,如果谷歌Play商店中还没有一种语言,我该如何安装它 例如,如果未安装俄语,并且我提供了俄罗斯国家代码(我有),则需要检查并安装语言包(如果需要)。通过用户干预,语言可以随时更改 我完全搞不清楚它是如何工作的 我确实找到了这个链接: 我有应用程序TextToSpeech构建的基本结构…如你所见。我没有在应用程序中输入更改语言的代码,也没有为

我正在尝试创建一个应用程序,通过TextToSpeech口头说出给定的文本字符串。我之前一直在寻找一种从字符串中选择给定语言的方法。然而,现在我正试图弄清楚,如果谷歌Play商店中还没有一种语言,我该如何安装它

例如,如果未安装俄语,并且我提供了俄罗斯国家代码(我有),则需要检查并安装语言包(如果需要)。通过用户干预,语言可以随时更改

我完全搞不清楚它是如何工作的

我确实找到了这个链接:

我有应用程序TextToSpeech构建的基本结构…如你所见。我没有在应用程序中输入更改语言的代码,也没有为语言使用任何变量。在我展示的代码中,为了简单起见,我将其保留为静态。更改语言时,将重新生成以下代码

t1=new TextToSpeech(context, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                if(status != TextToSpeech.ERROR) {
                    User u = new User(context);
                    t1.setLanguage(Locale.US); // TODO: 22/09/2015 FIX LOCALE FOR TextToSpeech
                    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                        /** creates a high quality voice when on Lollipop or better android version */
                        Voice voice = new Voice("voice", Locale.US, Voice.QUALITY_VERY_HIGH, Voice.LATENCY_NORMAL, false, null);
                        t1.setVoice(voice);
                    }
                }
            }
        });

        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TextView tv = (TextView) v.findViewById(R.id.to_language);
                String toSpeak = tv.getText().toString();
                if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null, v.getTag().toString());

                    t1.setOnUtteranceProgressListener(new UtteranceProgressListener() {
                        @Override
                        public void onStart(String utteranceId) {
                           //tv.setTextColor(Color.parseColor("#57d801"));
                        }

                        @Override
                        public void onDone(String utteranceId) {
                            //tv.setTextColor(Color.parseColor("#FFFFFF"));
                        }

                        @Override
                        public void onError(String utteranceId) {

                        }
                    });
                } else {
                    t1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
                    t1.setOnUtteranceCompletedListener(new TextToSpeech.OnUtteranceCompletedListener() {
                        @Override
                        public void onUtteranceCompleted(String utteranceId) {

                        }
                    });
                }
            }
        });
我不希望有人为我做这件事。我希望有人能比上面的网站更好地向我解释,更多地涉及到我的问题。以便我能够理解并实施解决问题的解决方案

这最终将不得不在没有互联网的情况下离线工作(除了下载其他语言)