2016-04-22 5 views
1

何らかの理由で、onInitメソッドのstautusがTextToSpeech.SUCCESSになることはありません。どうして?なぜ私のテキストから音声へのセットアップが正常に初期化されないのですか?

package me.ruben.learningproject; 

import android.app.Activity; 
import android.speech.SpeechRecognizer; 
import android.speech.tts.TextToSpeech; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import java.util.Locale; 


public class MainActivity extends Activity implements TextToSpeech.OnInitListener { 

    TextToSpeech tts; 
    EditText inputText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tts = new TextToSpeech(this, this); 
     inputText = (EditText)findViewById(R.id.inputText); 
    } 

    @Override 
    public void onInit(int status){ 
     if(status != TextToSpeech.SUCCESS){ 
      Toast.makeText(this, "Error initializing text to speech!", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     tts.setLanguage(Locale.UK); 
     ((Button) findViewById(R.id.speakBtn)).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       speak(); 
      } 
     }); 
    } 

    void speak(){ 
     tts.speak(inputText.getText().toString(), TextToSpeech.QUEUE_FLUSH, null); 
    } 
} 

それも、再起動後に動作しないと私は、Android Studioでコンパイル・エラーを得ることはありません。

どのような考えがありますか?

答えて

0

speak()メソッドの前にstopSelf()の実装がありません。

+0

ありがとう!しかし、私はどのようにそれを実装する必要がありますか?サンプルを提供できますか? – 000000000000000000000

0

トリガーするには、メソッドを実行できるボタンをonCreateに追加します。

btnSpeak = (Button) findViewById(R.id.button1); 

     // button on click event 
     btnSpeak.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       speak(); 
      } 

     }); 

し、既存の方法のわずかな変化、()話す:

private void speak() { 

String text = inputText.getText().toString(); 
    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); 

} 
0

は、このようなあなたのInit()方法を変更します。

@Override 
public void onInit(int status){ 

    new Thread(new Runnable() { 

       @Override 
       public void run() { 

        if(status != TextToSpeech.SUCCESS){ 

         Toast.makeText(this, "Error initializing text to speech!", Toast.LENGTH_LONG).show(); 
         return; 
        } 
        tts.setLanguage(Locale.UK); 
        ((Button) findViewById(R.id.speakBtn)).setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           speak(); 
          } 
         }); 
       } 
      }).start(); 


} 

役立つかもしれない別のスレッドでそれを実行します。 !!

関連する問題