2011-11-10 59 views
0

可以讓我知道我做錯了什麼。嘗試讓文本到語音爲文本視圖工作。文本到語音錯誤

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方法,你的Activity也沒有實現onClickListener接口。您需要執行一個或另一個才能使該onClick方法運行。

所以基本上,我沒有看到你的onClick方法會被調用。

假設你已經在你的佈局一些看法/按鈕,用戶應該點擊聽到TTS,我覺得你想要的東西,如:

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

您的按鈕將無法工作,直到文字轉語音通話的OnInit。所以你應該先禁用btnSpeak。