2016-07-30 23 views
3

私は問題を持っています。ここで完了時にsetOnUtteranceProgressListenerの後にサービスを開始しますか?

は私のコードは

+0

私はこの問題を理解していません - 標準の方法を使用したい場所でサービスを開始できないのはなぜですか? http://stackoverflow.com/a/12555333/1256219 – brandall

+0

startService(新しいインテント(this、MyService.class)); コンストラクタ「テント(匿名android.speech.tts.utterenceProgressListener、java.lang.Classの」 – umair

+0

あなたは正しいコンテキストを使用する必要が解決することはできません。私の答えとドキュメントへのリンクを参照してください。 – brandall

答えて

1

あなたが標準的な方法でサービスを開始することができますが、startService()はコンテキストを必要とし、あなたがしている場合....私を助けてください

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, "SOME MESSAGE"); 
     t1.speak(text, TextToSpeech.QUEUE_FLUSH, myHashAlarm); 
     t1.speak("I can speak anything",TextToSpeech.QUEUE_ADD, null); 

@Override 
      public void onInit(int status) { 
       if (status != TextToSpeech.ERROR) { 
        t1.setLanguage(Locale.US); 
        t1.setOnUtteranceProgressListener(new UtteranceProgressListener() { 
         @Override 
         public void onDone(String utteranceId) { 
          // Log.d("MainActivity", "TTS finished"); 
//here i want to start my service 
startService(new Intent(this, MyService.class));// but its not working 

         } 

         @Override 
         public void onError(String utteranceId) { 
         } 

         @Override 
         public void onStart(String utteranceId) { 
         } 
        });; 
       } 
      } 

ですあなたのProgressListenerの中に、それは文脈になります。

あなたがActivityから使用している場合は、

MyActivity.this.startService(new Intent(MyActivity.this, MyService.class)); 

を使用することができます

context.startService(new Intent(context, MyService.class)); 

を使用する必要がありますより多くのexamples on this questionがあります。この方法で使用する前に、もちろんcreate an intent and add extras to itを使用することができます。

+0

STARTSERVICE(新しいテント(getApplicationContext ()、MyService.class)); あなたの答えは正しいです......ありがとう – umair

+0

@umair嬉しいです。 – brandall

関連する問題