SpeechToText 并运行 ACTION_CHECK_TTS_DATA 意图

2023-11-30

我已经实施了TextToSpeech完全按照中提到的集成这篇博文。在我将它添加到我的程序中后,它现在干扰了我的其他程序intents.

例如:

  1. 项目清单
  2. 用户启动应用程序
  3. 用户调用加载活动
  4. 用户选择要加载的文件,活动返回 fileanme 以在意图中加载
  5. 主活动启动,并意识到需要加载文件名,因此开始这样做
  6. 需要完成 TTS 检查,因此我启动了ACTION_CHECK_TTS_DATA intent
  7. 这会暂停主要活动again并且加载过程被中断
  8. 当 TTS 检查返回时,加载从未发生。

我什么时候需要进行 TTS 检查?我可以在应用程序启动时执行一次吗?这导致我的应用程序加载缓慢。如果可能的话,我希望在单独的线程中执行此加载。


检查一次。一旦安装了数据,用户就不太可能需要再次执行此操作。一旦安装了数据,用户就无法删除它,即使他们想删除。

另外,不要使用 ACTION_CHECK_TTS_DATA Intent,这使用起来很尴尬。

相反,请执行以下操作:

  1. 创建文本转语音
  2. OnInit,检查 isLanguageAvailable() 如果是,则您的应用程序已全部设置完毕。 如果没有,发送 ACTION_INSTALL_TTS_DATA

下面是一些按照我建议的方式初始化 TextToSpeech 的代码。作为奖励,它还设置了语言。

public class DemoCreateTTS
{
    private static final String TAG = "DemoCreateTTS";

    private TextToSpeech tts;

    public void createTextToSpeech(final Context context, 
            final Locale locale)
    {
        tts = new TextToSpeech(context, new OnInitListener()
        {
            @Override
            public void onInit(int status)
            {
                if (status == TextToSpeech.SUCCESS)
                {
                    Locale defaultOrPassedIn = locale;
                    if (locale == null)
                    {
                        defaultOrPassedIn = Locale.getDefault();
                    }
                    // check if language is available
                    switch (tts.isLanguageAvailable(defaultOrPassedIn))
                    {
                        case TextToSpeech.LANG_AVAILABLE:
                        case TextToSpeech.LANG_COUNTRY_AVAILABLE:
                        case TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE:
                            Log.d(TAG, "SUPPORTED");
                            tts.setLanguage(locale);
                            //pass the tts back to the main
                            //activity for use
                            break;
                        case TextToSpeech.LANG_MISSING_DATA:
                            Log.d(TAG, "MISSING_DATA");
                                Log.d(TAG, "require data...");
                                Intent installIntent = new Intent();
                                installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
                                context.startActivity(installIntent);
                            break;
                        case TextToSpeech.LANG_NOT_SUPPORTED:
                            Log.d(TAG, "NOT SUPPORTED");
                            break;
                    }
                }
            }
        });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpeechToText 并运行 ACTION_CHECK_TTS_DATA 意图 的相关文章

  • 更改 pyttsx3 语言

    当尝试使用 pyttsx3 时 我只能使用英语语音 我也希望能够使用荷兰语 我已经在 Windows 设置菜单中安装了文本转语音语言包 但我仍然只能使用默认的英文语音 我怎样才能解决这个问题 如果您想更改语言 您需要更改为支持您的语言的另一
  • 如何使用android canvas绘制一个只有左上角和右上角为圆角的矩形?

    我找到了一个用于所有 4 个角均为圆角的矩形的函数 但我只想将顶部 2 个角设为圆角 我能做些什么 canvas drawRoundRect new RectF 0 100 100 300 6 6 paint 对于 API 21 及更高版本
  • 在 JellyBean 上使用 LogCat

    我有一个非常随机发生的错误 所以我依赖LogCat我从 Play 商店购买的监控应用程序 以查看发生时设备上抛出的异常 自从使用 Jelly Bean 以来 我没有看到任何日志记录 我读过 使用 Jelly Bean 应用程序只能看到Log
  • CustomWebViewRenderer DownloadManager 与 CopyBackForwardList 的问题

    我仍在学习 android 我正在使用它创建一个混合应用程序推荐 https stackoverflow com questions 58967929 xamarin webview webpage cant download files
  • Android studio Gradle 同步和构建错误

    我是 android studio 和 gradle 的新手 我得到了 AS 0 5 我下载了0 8 1更新包并通过删除已安装的文件并将更新文件复制到program files文件夹进行更新 它运行正确 但当我尝试同步 gradle 时 出
  • 如何在 Android 应用程序中实现 Rate It 功能

    我正在开发一个 Android 应用程序 一切正常 我的应用程序已准备好启动 但我还需要实现一项功能 我需要显示一个包含以下内容的弹出窗口 Rate It and Remind me later 在这里 如果任何用户在市场上对应用程序进行评
  • 按下按钮时清除编辑文本焦点并隐藏键盘

    我正在制作一个带有编辑文本和按钮的应用程序 当我在 edittext 中输入内容然后单击按钮时 我希望键盘和焦点在 edittext 上消失 但我似乎无法做到这一点 我在 XML 中插入了这两行代码 android focusable tr
  • 从 Bitmap 类创建 .bmp 图像文件

    我创建了一个使用套接字的应用程序 客户端在其中接收图像并将图像数据存储在 Bitmap 类中 谁能告诉我如何创建一个名为我的图像 png or 我的图像 bmp来自此 Bitmap 对象 String base64Code dataInpu
  • android以编程方式打开电池设置

    我正在寻找一种从 Android 应用程序打开电池设置屏幕的方法 到目前为止我发现了两个意图 Intent ACTION POWER USAGE SUMMARY Settings ACTION BATTERY SAVER SETTINGS
  • Gradle 控制台 - 获取更多日志输出

    我正在使用Android Studio 在 gradle 控制台中收到以下错误消息 编译错误 查看日志了解更多详情 尝试 使用 stacktrace 选项运行以获取堆栈跟踪 使用 info 或 debug 选项运行以获得更多日志输出 构建失
  • 将 REST 服务与 Android 应用程序同步

    我使用一个 REST 服务来填充数据库中的信息 稍后由我的应用程序使用 我已经阅读了有关此事的多个主题 现在必须决定如何在 REST 服务和数据库之间实现同步 想象一个应用程序 它从谷歌金融 API 获取有关股票的信息并将其存储在数据库中
  • 从 Android 模拟器使用 WebView WebGL

    据我了解 WebGL 仅在 Android Lollipop 中的 WebView 更新 Play 商店中的 WebView 组件 和较新版本 无需 Play 商店更新 中受支持 但是 我有一个使用 Android 7 1 1 的模拟器 并
  • 在 Facebook 上分享文本和 URL

    我想分享一条消息 例如 查看图片http someUrl com http someUrl com从应用程序共享ABCapp 用户必须能够选择任何已安装的应用程序进行共享 我正在使用以下代码 Intent intent new Intent
  • SlidingPaneLayout setCoveredFadeColor () 和 setSliderFadeColor()

    我正在使用SlidingPaneLayout并希望在滑块右窗格打开时在左窗格上设置灰色渐变颜色 在右窗格关闭且左窗格完全可见时在左窗格上设置透明渐变颜色 我知道这是默认行为SlidingPaneLayout 但使用默认实现时 我在横向模式下
  • 没有 ContentProvider 的 SyncAdapter

    我想为我想要与服务器同步的内容实现 SyncAdapter 看来要做到这一点 您需要为 SyncAdapter XML 属性文件中指定的权限注册一个 ContentProvider 由于我不希望手机的其余部分可以访问此内容 因此我没有实现自
  • 文本转语音无法在 Android 设备上运行

    下面是我的代码 我无法在 Kitkat 设备中听到声音 Toast 出现 但声音没有播放 我正在遵循本教程 https www tutorialspoint com android android text to speech htm ht
  • 存储 FCM 的令牌

    我正在尝试将我的令牌存储在我的云数据库中 我稍后将在云函数中使用此令牌 以便向已添加为好友的用户发送通知 然而 推送设备令牌不起作用 因为用户未经授权 授权后我无法保存它 因为令牌是在安装应用程序时生成的 private static fi
  • Android 中的垂直(旋转)标签

    我需要两种在 Android 中显示垂直标签的方法 水平标签逆时针旋转 90 度 字母在侧面 带有字母的水平标签 如商店招牌 我是否需要为这两种情况 一种情况 开发自定义小部件 我可以使 TextView 以这种方式呈现吗 如果我需要完全自
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜
  • 在另一个布局中以编程方式膨胀布局

    我的 Android 应用程序需要帮助 我需要在另一个布局中膨胀一个布局 但我不知道该怎么做 我的xml代码是这样的 item xml 我需要膨胀多个 xml 取决于可变数量

随机推荐