2011-11-10 9 views
0

私が間違っていることを教えてもらえますか?テキスト表示のためにonClickを動作させるために、テキストを音声に変換しようとしています。音声からテキストへのエラー

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.Button; 
import android.widget.TextView; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.content.Intent; 
import android.speech.tts.TextToSpeech; 

public class MainActivity extends Activity implements TextToSpeech.OnInitListener 
{ 
    private TextToSpeech tts; 
    private static final int MY_DATA_CHECK_CODE = 1234; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_24); 

     Intent checkIntent = new Intent(); 
     checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
     startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

     ((Button)findViewById(R.id.btnClear)) .setOnClickListener(clearbutton); 
    } 

    public void onClick(View v) 
    { 
     TextView textSpeak = (TextView) findViewById(R.id.mainText); 
     tts.speak(textSpeak.getText(), TextToSpeech.QUEUE_FLUSH, null); 
    } 

    public void onInit(int i) 
    { 

    } 

    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (requestCode == MY_DATA_CHECK_CODE) 
     { 
      if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) 
      { 
       tts = new TextToSpeech(this, this); 
      } 
      else 
      { 
       Intent installIntent = new Intent(); 
       installIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
       startActivity(installIntent);    
      } 
     } 
    } 

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

    OnClickListener clearbutton = new OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      TextView mainText = (TextView)findViewById(R.id.mainText); 
      mainText.setText(""); 
     } 
    }; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
     case R.id.select8icons: setContentView(R.layout.layout_8); 
      break; 
     case R.id.select24icons: setContentView(R.layout.layout_24); 
      break; 
     case R.id.select63icons: setContentView(R.layout.layout_63); 
      break; 
     } 
     return true; 
    } 
} 

誰が助けたり、コードを実行するためのより良い方法を持っていることができれば、私はあなたの理想を聞くのが大好き。私は研究しようとしますが、私が試したあらゆる方法で私にエラーや何かを与えました。前もって感謝します。

+0

遭遇しているエラーは何ですか?あなたはスタックトレースを持っていますか? – eldarerathis

答えて

0

あなたのTTSはうまく見えます。しかし、私はどこにあなたのonClickメソッドへのボタンをバインドしているかわかりません、あなたのアクティビティはonClickListenerインターフェイスを実装しているようです。実行するonClickメソッドを取得するには、どちらか一方を実行する必要があります。

基本的に、あなたのonClickメソッドが呼び出される方法は基本的にはわかりません。テキスト読み上げはのOnInitを呼び出すまで

Button btnSpeak = (Button)findViewById(R.id.btnSpeak); 
btnSpeak.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       TextView textSpeak = (TextView) findViewById(R.id.mainText); 
       tts.speak(textSpeak.getText(), TextToSpeech.QUEUE_FLUSH, null); 

      } 
     }); 
1

あなたのボタンは機能しません。

あなたのレイアウトのいくつかのビュー/ボタンは、ユーザがTTSを聞くためにクリックすることになっていると仮定すると、私はあなたのような何かをしたいと思います。それまではbtnSpeakを無効にする必要があります。

関連する問題