java - 如何让 Android TextToSpeech 从 ListView 读取

标签 java android

我有一个 ListView,它通过 CursorLoader 从 ContentProvider 中提取数据。

我想要一个按钮,在按下时读出 ListView 中的数据。棘手的部分是 ListView 中的数据不断更新(来自 ContentProvider 的数据每隔几秒定期更改一次)并且每行的数据可能会在读取音频时更新。

如何做到每次更新都读取最新的数据?

最佳答案

试试下面的代码:

private boolean ttsEnabled= true;
private Thread ttsThread = null;
private ListView lastState = null;

public void enableTTS() {
    ttsEnabled = true;
    ttsThread = new Thread(ttsRunnable);
    ttsThread.start();
}

public void disableTTS() {
    ttsEnabled = false;
    try {
        ttsThread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

private Runnable ttsRunnable = new Runnable() {
    @Override
    public void run() {
        while (ttsEnabled) {
            if (lastState == null || !lastState.equals(yourListView)) {
                // List view updated, tts here
                lastState = yourListView;
            }
        }
    }
};

关于java - 如何让 Android TextToSpeech 从 ListView 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30131203/

相关文章:

java - GRPC 使用地理编码器失败

android - 在谷歌地图中旋转标记/汽车图标 - Android

java - 如何标记化、扫描或拆分这串电子邮件地址

java - 使用 JRuby 创建独立的 jar

android - 如果设置了 iRoom 属性,ActionBar 按钮总是强制溢出

android - 检查我的应用程序是否启用了使用访问权限

java - 部分线性布局隐藏在操作栏下

c# - 如何在 Xamarin.Android 中使用 AppGlideModule?

java - 使用 API21 编译时出现 UnsatisfiedLinkError

java - if 语句产生不正确的结果