0

なんらかの理由で、onutteranceCompleted から PhoneCallListener を含むメソッドを呼び出すことができません。エラー メッセージはありません。スクリプトの実行が停止しているように見えます。いくつかのログを追加したところ、PhoneCallListener を使用して setUpPhone の「こちら」のログに到達しました。PhoneCallListener がないと、最終ログ「電話の設定」に到達します。これが私がどのように実装したかのサンプルコードです。

@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)
        {
            //Language not supported
        }
        else
        {
            speakOut();
        }
    }

}

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, "Text to Speech");
    tts.speak("blah blah", TextToSpeech.QUEUE_FLUSH, myHashAlarm);
}

@Override
public void onDestroy()
{
    if(tts != null)
    {
        tts.stop();
        tts.shutdown();
    }

    super.onDestroy();
}

public void onUtteranceCompleted(String utteranceId)
{
    Log.i("TEST", utteranceId);
    setUpPhone();
    Log.i("TEST", "phone set up"); //this is never reached
}

private void setUpPhone()
{
    Log.i("TEST", "here");

    PhoneCallListener phoneListener = new PhoneCallListener(); //If I remove this line, the log "phone set up" displays.
}
4

1 に答える 1

0

PhoneCallListener が実行を停止する理由はわかりませんが、「phoneListener = new PhoneCallListener();」を入れることでこれを解決しました。onCreate メソッドで。

于 2013-11-30T01:18:20.370 に答える