首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不更改任何设备设置的情况下在android应用程序中使用日语google tts引擎

如何在不更改任何设备设置的情况下在android应用程序中使用日语google tts引擎
EN

Stack Overflow用户
提问于 2018-12-24 14:52:42
回答 1查看 766关注 0票数 1

我正在开发一个日语学习应用程序。我想在我的应用中听到日语发音。

我像这样初始化tts

代码语言:javascript
复制
private TextToSpeech tts;

private void initTTS()
{
    tts = new TextToSpeech(this, new TextToSpeech.OnInitListener()
    {
        @Override
        public void onInit(int status)
        {
            if(status == TextToSpeech.SUCCESS)
            {
                Locale loc = new Locale("ja_JP");
                int result = tts.setLanguage(loc);
                if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED)
                {
                    Intent installIntent = new Intent();
                    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                    installIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    //installIntent.setPackage("com.google.android.tts");
                    startActivityForResult(installIntent,MY_DATA_CHECK_CODE);
                }
                else
                {
                    Log.e(TAG,"initilization success");
                }
            }
            else
            {
                Log.e(TAG,"initilization failed");
            }
        }
    });
}

我手机的默认语言设置不是日语。我的应用程序用户也是如此。

如果默认语言设置不是日语,则tts.setLanguage返回TextToSpeech.LANG_MISSING_DATA。所以我安装了带有新活动的tts数据。但是google tts引擎日语版已经安装好了。如何在不更改客户电话语言的情况下为客户提供日语tts服务?

EN

回答 1

Stack Overflow用户

发布于 2018-12-27 10:38:25

要初始化专门使用google引擎的TTS对象,而不考虑用户的首选引擎设置:

代码语言:javascript
复制
private void createGoogleTTS() {

        googleTTS = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
            @Override
            public void onInit(int status) {
                if (status != TextToSpeech.ERROR) {
                    Log.i("XXX", "Google tts initialized");
                    onTTSInitialized();
                } else {
                    Log.i("XXX", "Internal Google engine init error.");
                }
            }
        }, "com.google.android.tts");

    }

当然,这只有在安装了google引擎的情况下才有效,因此您还可以使用以下方法:

代码语言:javascript
复制
private boolean isGoogleTTSInstalled() {

        Intent ttsIntent = new Intent();
        ttsIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        PackageManager pm = this.getPackageManager();
        List<ResolveInfo> listOfInstalledTTSInfo = pm.queryIntentActivities(ttsIntent, PackageManager.GET_META_DATA);
        for (ResolveInfo r : listOfInstalledTTSInfo) {
            String engineName = r.activityInfo.applicationInfo.packageName;
            if (engineName.equals("com.google.android.tts")) {
                return true;
            }
        }
        return false;

    }

private void installGoogleTTS() {

        Intent goToMarket = new Intent(Intent.ACTION_VIEW)
                .setData(Uri.parse("market://details?id=com.google.android.tts"));
        startActivity(goToMarket);

    }


// use this if attempting to speak in Japanese locale results in onError() being called by your UtteranceProgressListener.
private void openTTSSettingsToInstallUnsupportedLanguage() {

        Intent intent = new Intent();
        intent.setAction("com.android.settings.TTS_SETTINGS");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53910128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档