Android TextToSpeech根据需要安装新语言

时间:2015-11-01 11:15:54

标签: android locale translation text-to-speech

我正在尝试创建一个通过TextToSpeech口头说出给定文本字符串的应用程序。我以前正在寻找一种从字符串中选择给定语言的方法。但是,现在我正在尝试解决如何在Google Play商店中安装语言(如果该语言尚未在设备上安装)。

E.G。如果没有安装俄语,并且我提供俄语国家代码(我有),则需要检查并安装语言包。语言可以随时通过用户干预来改变。

这件事让我对它的运作方式感到困惑。

我找到了这个链接:http://android-developers.blogspot.com.au/2009/09/introduction-to-text-to-speech-in.html

我有应用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) {

                        }
                    });
                }
            }
        });

我不希望有人为我做这件事。我希望有人能够更好地向我说明上面的网站,更多地参考我的问题。这样我就能理解并实施解决方案来解决我的问题。

这最终必须在没有互联网的情况下脱机工作(下载其他语言除外)。

0 个答案:

没有答案