我有以下pgm响应带有传入消息的Toast并且还说出收到的消息,但是在后台似乎没有语音合成但是我仍然可以看到Toast,所以我应该开始服务从onReceive方法(不知道是否可能)这里然后在startService方法中,编写speak方法??
这是我的一个pgms:
接收机
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);
}
}
}
答案 0 :(得分:1)
在尝试使用TTS服务之前,您需要有足够的时间来启动它。
答案 1 :(得分:0)
您在onReceive()中启动服务以及处理服务中的语音输出的想法应该有效。我也会这样做。但我对Android编程很新。
答案 2 :(得分:0)
Intent serviceintent = new Intent(); serviceintent.setAction(".SpeakerService");
我想在您的意图中使用以下更改可能有所帮助:
Intent serviceintent = new Intent(context, SpeakerService.class)