2012-02-18 25 views
2

私は画像が自動的に読み込まれるようなアプリケーションを作成しようとしています。 私は正しく動作しているTTSの1つのアプリケーション(例)を試していましたが、このコードは私に教えてくれます 私のコードはテキスト音声サービスです。それがエラーを与えないと終了し、決してエンジンをインストールするために行くので、あなたはこのコードを書かれているOnCreateテキストは音声サービスがアンドロイドで起動していません

public class show_image extends Activity implements TextToSpeech.OnInitListener { 

Intent mIntent; 
String value; 
ImageView mImageView; 
private TextToSpeech tts; 
int j; 

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

    mIntent = getIntent(); 
    Bundle b = getIntent().getExtras(); 
    final String name = b.getString("name"); 
    j = name.toCharArray()[0]; 

    tts = new TextToSpeech(this, this); 
    tts.speak("Welcome", TextToSpeech.QUEUE_ADD, null); 
    mImageView = (ImageView) findViewById(R.id.imageView1); 

    switch (j) { 
    case 65: 
     mImageView.setBackgroundResource(R.drawable.a); 
     tts.speak(name + " for Apple", TextToSpeech.QUEUE_ADD, null); 
     // Toast.makeText(getApplicationContext(), 
     // "Saying:" + name + " for Apple", Toast.LENGTH_SHORT) 
     // .show(); 
     tts.isLanguageAvailable(Locale.ENGLISH); 
     break; 
    case 66: 
     mImageView.setBackgroundResource(R.drawable.b); 
     tts.speak(name + "for Bluetooth", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 67: 
     mImageView.setBackgroundResource(R.drawable.c); 
     tts.speak(name + "for Chat", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 68: 
     mImageView.setBackgroundResource(R.drawable.d); 
     tts.speak(name + "for Download", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 69: 
     mImageView.setBackgroundResource(R.drawable.e); 
     tts.speak(name + "for E Mail", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 70: 
     mImageView.setBackgroundResource(R.drawable.f); 
     tts.speak(name + "for Facebook", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 71: 
     mImageView.setBackgroundResource(R.drawable.g); 
     tts.speak(name + "for Google", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 72: 
     mImageView.setBackgroundResource(R.drawable.h); 
     tts.speak(name + "for Hewlwtt Packard", TextToSpeech.QUEUE_ADD, 
       null); 
     break; 
    case 73: 
     mImageView.setBackgroundResource(R.drawable.i); 
     tts.speak(name + "for Iphone", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 74: 
     mImageView.setBackgroundResource(R.drawable.j); 
     tts.speak(name + "for Java", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 75: 
     mImageView.setBackgroundResource(R.drawable.k); 
     tts.speak(name + "for kingston", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 76: 
     mImageView.setBackgroundResource(R.drawable.l); 
     tts.speak(name + "for Laptop", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 77: 
     mImageView.setBackgroundResource(R.drawable.m); 
     tts.speak(name + "for Messenger", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 78: 
     mImageView.setBackgroundResource(R.drawable.n); 
     tts.speak(name + "for Nero", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 79: 
     mImageView.setBackgroundResource(R.drawable.o); 
     tts.speak(name + "for Orkut", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 80: 
     mImageView.setBackgroundResource(R.drawable.p); 
     tts.speak(name + "for Picassa", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 81: 
     mImageView.setBackgroundResource(R.drawable.q); 
     tts.speak(name + "for Quick Heal", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 82: 
     mImageView.setBackgroundResource(R.drawable.r); 
     tts.speak(name + "for Ram", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 83: 
     mImageView.setBackgroundResource(R.drawable.s); 
     tts.speak(name + "for Server", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 84: 
     mImageView.setBackgroundResource(R.drawable.t); 
     tts.speak(name + "for Twitter", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 85: 
     mImageView.setBackgroundResource(R.drawable.u); 
     tts.speak(name + "for Usb", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 86: 
     mImageView.setBackgroundResource(R.drawable.v); 
     tts.speak(name + "for Vista", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 87: 
     mImageView.setBackgroundResource(R.drawable.w); 
     tts.speak(name + "for WiFi", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 88: 
     mImageView.setBackgroundResource(R.drawable.x); 
     tts.speak(name + "for XP", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 89: 
     mImageView.setBackgroundResource(R.drawable.y); 
     tts.speak(name + "for Youtube", TextToSpeech.QUEUE_ADD, null); 
     break; 
    case 90: 
     mImageView.setBackgroundResource(R.drawable.z); 
     tts.speak(name + "for Zorpia", TextToSpeech.QUEUE_ADD, null); 
     break; 
    default: 
     break; 
    } 

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

    final Thread t1 = new Thread() { 
     public void run() { 
      try { 

       Thread.sleep(10000); 
       finish(); 
       // this.destroy(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       Toast.makeText(getApplicationContext(), e.getMessage(), 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }; 
    t1.start(); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == RESULT_OK) { 
     if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
      // success, create the TTS instance 
      tts = new TextToSpeech(this, this); 
     } else { 
      // missing data, install it 
      Intent installIntent = new Intent(); 
      installIntent 
        .setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
      startActivity(installIntent); 
     } 
    } 

} 

public void onInit(int status) { 
    if (status == TextToSpeech.SUCCESS) { 
     Toast.makeText(this, 
       "Write and Listen engine is initialized & Ready", 
       Toast.LENGTH_LONG).show(); 
    } else if (status == TextToSpeech.ERROR) { 
     Toast.makeText(this, 
       "Error occurred while initializing Text-To-Speech engine", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

protected void onDestroy() { 
    super.onDestroy(); 
    if (tts != null) { 
     tts.shutdown(); 
    } 
} 

} 
+0

私がここに投稿した解決策を見てください。 http://stackoverflow.com/a/23786730/447558 – Milton

+0

@ミルトン私は答えを見つけてそれを受け入れました... – Wolverine

答えて

3

、その時のエンジンで

tts = new TextToSpeech(this, this); 
    tts.speak("Welcome", TextToSpeech.QUEUE_ADD, null); 
    mImageView = (ImageView) findViewById(R.id.imageView1); 

は、インストールされていない

だから、最初のタスクOnCreateに行うには、あなたがしている、

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

する必要がありますインストール前にspeakに接続してください

エンジンチェックの目的は、onCreateの最初の行に書いてください。

関連する問題