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