android - 文本到语音在 android 中的来电期间不起作用

标签 android text-to-speech

我想在来电期间将文本序列作为语音播放,将铃声降低几秒钟。我已经通过 Intent 将字符串从广播接收器发送到另一个类文件。 如果我在通话期间在 toast 中使用文本,则会显示文本,但不会播放语音。 我的类(class)文件中文本到语音的代码是:-

public class callName extends Activity {

    String call;

    TextToSpeech tts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle extras = getIntent().getExtras();

        call = extras.getString("sms");

        tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {

            @Override
            public void onInit(int status) {
                // TODO Auto-generated method stub
                if (status != TextToSpeech.ERROR) {
                    tts.setLanguage(Locale.US);
                }
            }
        });

        Toast.makeText(getBaseContext(), call, Toast.LENGTH_LONG).show();
        tts.speak(call, TextToSpeech.QUEUE_FLUSH, null);
    }

}

最佳答案

调用 speak 时 tts 还没有初始化,你必须把你的 speak 代码移到 onInit()

tts = new TextToSpeech(this, new TextToSpeech.OnInitListener() {

        @Override
        public void onInit(int status) {
            // TODO Auto-generated method stub
            if (status != TextToSpeech.ERROR) {
                tts.setLanguage(Locale.US);
                tts.speak(call, TextToSpeech.QUEUE_FLUSH, null);
            }
        }
    });

关于android - 文本到语音在 android 中的来电期间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945583/

相关文章:

java - 如何绘制如下图所示的形状

text-to-speech - 我可以将自己的声音添加到 TTS 并可以用自己的声音生成段落吗?

android - TextToSpeech.isSpeaking() 在什么情况下返回 true?

node.js - 如何更改 Node 模块 "say"的音频输出设备

android -/dev/log/main 未找到

android - Android React Native 中的多个可扩展 ListView

java - 设备上获取的比例坐标

java - 如何链接android中的按钮来执行功能?

java - Java中播放Azure输出格式 "audio-16khz-128kbitrate-mono-mp3"的一种方法

java - UtteranceProgressListener (TTS) 不起作用或未被调用 (Android 4.4.2)