android:如何在非 Activity 类上使用文本到语音

标签 android android-activity text-to-speech

我想在我的应用程序中使用文本转语音,我发现很多这样使用文本转语音的示例 Android Text-To-Speech Application .我想使用来自非 Activity 类的文本到语音,例如我有生成布局并将此布局返回到我的主要 Activity 的类,我在此布局上有按钮,我想在单击此按钮时调用文本到语音。我如何在非 Activity 课上使用文字转语音?

最佳答案

如下所示创建您的语音类(class):

package zillion;

import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.widget.Toast;

import java.util.Locale;


public class Speech {
    private static TextToSpeech tts;
    private static CharSequence SC_str;
    private static String S_str;

    public static void Talk(Context context, String str) {
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        S_str = str;
        tts = new TextToSpeech(Zillion.getContext(), new TextToSpeech.OnInitListener() {

            @Override
            public void onInit(int status) {
                if(status != TextToSpeech.ERROR) {
                    tts.setLanguage(Locale.UK);
                    tts.setPitch(1.3f);
                    tts.setSpeechRate(1f);
                 //   tts.speak(SC_str, TextToSpeech.QUEUE_FLUSH, null,null);
                    tts.speak(S_str, TextToSpeech.QUEUE_FLUSH, null);
                }
            }
        });
    }
}

正如您注意到 Zillion.getContext() 已被用作 getApplicationContext() 的替代品,要获取上下文,您需要创建一个扩展应用程序的类,例如下面:

package zillion;

import android.app.Application;
import android.content.Context;

public class Zillion extends Application {

    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }

    public static Context getContext() {
        return mContext;
    }
}

并将与此类相关的 list 中的应用程序定义为:

<application
        android:name=".Zillion"
</application>

关于android:如何在非 Activity 类上使用文本到语音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943614/

相关文章:

Android 库项目 : Refactoring and Navigation

java - 在 android studio 中使用 Firebase 记录数据验证用户数据

android - 如何在我的Android应用程序中添加音频消息?

c# - 在windows phone 8中取消语音合成

Java 文字转语音我无法让它说话

android - 日历事件问题

android - 如何模仿选择器 Activity/共享菜单?

java - 是否有与 Javascript 方法 fromCharCode() 等效的 Java?

java - startActivityForResult() 返回 RESULT_CANCELED

python - 如何在 'gTTS' 中使用多语言输入单行?