2016-07-30 8 views
3

Ich habe ein Problem, ich möchte Android Service nach Text zu sprechen beenden sprechen.Dienst starten, nachdem setOnUtteranceProgressListener aktiviert wurde?

Hier ist mein Code

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) { 
         } 
        });; 
       } 
      } 

Bitte helfen Sie mir ....

+0

Ich bin mir nicht sicher, ob ich das Problem verstehe - warum können Sie den Dienst nicht einfach dort starten, wo Sie die Standardmethode verwenden möchten? http://StackOverflow.com/a/12555333/1256219 – brandall

+0

startService (neue Absicht (this, MyService.class)); Kann nicht Konstruktor ‚Intent (anonym android.speech.tts.utterenceProgressListener, java.lang.Class ‘ – umair

+0

Sie müssen lösen den richtigen Kontext verwenden. Siehe meine Antwort und den Link zur Dokumentation. – brandall

Antwort

1

Sie den Dienst in der üblichen Weise starten können, aber startService() erfordert Kontext und wenn Sie in Ihrem ProgressListener, das wird der Kontext sein.

Sie werden

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

verwenden müssen, wenn Sie von einer Aktivität verwenden, können Sie

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

Es sind mehr examples on this question verwenden. Sie können natürlich create an intent and add extras to it, bevor Sie es auf diese Weise verwenden.

+0

Startservice (neu Intent (getApplicationContext(), MyService.class)); Ihre Antwort ist richtig mate ...... Danke – umair

+0

@umair Froh, dass es geholfen hat. – brandall

Verwandte Themen