Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TextToSpeech OnPatternanceCompletedListener不工作_Android - Fatal编程技术网

Android TextToSpeech OnPatternanceCompletedListener不工作

Android TextToSpeech OnPatternanceCompletedListener不工作,android,Android,我正在使用onutternancecompletedlistener来检测TTS何时结束讲话,但从未调用OnUttereanceCompleted。侦听器是在onInit中创建的,在HashMap之前,所以我不知道出了什么问题。有什么想法吗 public class TTSActivity extends Activity implements TextToSpeech.OnInitListener, OnUtteranceCompletedListener { private

我正在使用onutternancecompletedlistener来检测TTS何时结束讲话,但从未调用OnUttereanceCompleted。侦听器是在onInit中创建的,在HashMap之前,所以我不知道出了什么问题。有什么想法吗

    public class TTSActivity extends Activity implements TextToSpeech.OnInitListener, OnUtteranceCompletedListener
{
    private TextToSpeech tts;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tts_layout);

        tts = new TextToSpeech(this, this);
    }



    @Override
    public void onDestroy() {
        // Don't forget to shutdown tts!
        if (tts != null) {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
    }

    @Override
    public void onInit(int status) 
    {
        if (status == TextToSpeech.SUCCESS) 
        {
            tts.setOnUtteranceCompletedListener(this);
            int result = tts.setLanguage(Locale.US);

            if (result == TextToSpeech.LANG_MISSING_DATA
                    || result == TextToSpeech.LANG_NOT_SUPPORTED) {
                Log.e("TTS", "This Language is not supported");
            } else {
                speakOut();
            }
        } else {
            Log.e("TTS", "Initilization Failed!");
        }

    }

    private void speakOut() 
    {
        HashMap<String, String> myHashAlarm = new HashMap<String, String>();
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
        myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "FINISHED PLAYING");
    tts.speak("Some text.", TextToSpeech.QUEUE_FLUSH, myHashAlarm);   
  }

    @Override
    public void onUtteranceCompleted(String utteranceId) 
    {
        if(utteranceId=="FINISHED PLAYING")
        {
            Log.i("TTS", "Called");   //never called
        }   
    }
公共类TTSActivity扩展活动实现TextToSpeech.OnInitListener、OnPatternanceCompletedListener
{
私密文本语音tts;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.tts_布局);
tts=新的TextToSpeech(这个,这个);
}
@凌驾
公共空间{
//别忘了关闭tts!
如果(tts!=null){
tts.stop();
tts.shutdown();
}
super.ondestory();
}
@凌驾
公共无效onInit(int状态)
{
if(status==TextToSpeech.SUCCESS)
{
tts.setOnPatternanceCompletedListener(此);
int result=tts.setLanguage(Locale.US);
if(result==TextToSpeech.LANG_缺少_数据
||结果==TextToSpeech.LANG(不支持){
Log.e(“TTS”,“不支持这种语言”);
}否则{
说话();
}
}否则{
Log.e(“TTS”,“初始化失败!”);
}
}
私人空谈
{
HashMap myHashAlarm=新建HashMap();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM,String.valueOf(AudioManager.STREAM_ALARM));
myHashAlarm.put(TextToSpeech.Engine.KEY\u PARAM\u outrance\u ID,“播放完毕”);
tts.speak(“一些文本”,TextToSpeech.QUEUE\u FLUSH,myHashAlarm);
}
@凌驾
公共void onutternancecompleted(字符串utternanceid)
{
如果(utteranceId==“播放完毕”)
{
Log.i(“TTS”,“Called”);//从未调用
}   
}

使其正常工作。问题在于字符串的比较。 该行:

if(utteranceId=="FINISHED PLAYING")
必须更改为:

if(utteranceId.equals("FINISHED PLAYING"))

让它工作起来。问题在于比较字符串。 该行:

if(utteranceId=="FINISHED PLAYING")
必须更改为:

if(utteranceId.equals("FINISHED PLAYING"))