2010-06-23 8 views
0

J'ai le pgm suivant qui répond avec un toast avec un msg entrant et parle aussi le msg reçu, mais il semble y avoir aucune synthèse vocale en arrière-plan, mais je peux encore voir le Toast si, alors devrais-je démarrer un service à partir de la méthode onReceive (ne sais pas si c'est possible) ici et ensuite dans la méthode startService, écrivez la méthode speak ??confondu avec BroadcastReceiver

est ici un de mes MGP:

Récepteur

package com.example.TextSpeaker; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.speech.tts.TextToSpeech; 
import android.telephony.SmsMessage; 
import android.util.Log; 
import android.widget.Toast; 

public class Receiver extends BroadcastReceiver{ 


public static String str; 
@Override 
public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); 
    Log.d("Receiver","Message received successfully"); 

    SmsMessage[] msgs = null; 

    if(bundle!=null) 
    { 
     // retrive the sms received 

     Object[] pdus = (Object[])bundle.get("pdus"); 
     msgs = new SmsMessage[pdus.length]; 
     for(int i=0;i<msgs.length;i++) 
     { 
      str=""; 
      msgs[i]=SmsMessage.createFromPdu((byte[]) pdus[i]); 
      str+="Message From "+msgs[i].getOriginatingAddress()+". "; 
      str+="The message is "+msgs[i].getMessageBody().toString(); 
      //TextSpeaker.mtts.speak(Receiver.str, TextToSpeech.QUEUE_FLUSH,null); 
      //str=""; 

     } 
     Toast.makeText(context,str,Toast.LENGTH_LONG).show(); 
     TextSpeaker.mtts.speak(Receiver.str, TextToSpeech.QUEUE_FLUSH,null); 

    } 
} 

}

Répondre

0
Intent serviceintent = new Intent(); 
serviceintent.setAction(".SpeakerService"); 

Je suppose que l'aide de la modification suivante dans votre intention pourrait aider:

Intent serviceintent = new Intent(context, SpeakerService.class) 
+0

merci cela a fonctionné! mais encore une fois, bien que je voie dans le journal que le service a commencé mais je n'entends aucun bruit, le moteur de tts fonctionne-t-il en arrière-plan du tout? – pranay

+0

AKAIK oui, le moteur tts continue à fonctionner en arrière-plan ... et si cela ne montre aucune erreur dans votre journal, je suppose que cela signifie qu'il fonctionne bien ... Au fait, vous essayez de l'utiliser sur un émulateur ou un périphérique? ? – JaVadid

0

Votre idée sur le démarrage du service dans OnReceive() et gérer la sortie de la parole dans le service devrait fonctionner. Je voudrais faire la même chose. Mais je suis plutôt nouveau à la programmation Android.

1

Vous devez donner suffisamment de temps pour le service de TTS pour commencer avant d'essayer d'utiliser il.

Questions connexes