I my app Я звоню в широковещательный приемник, чтобы читать входящие текстовые сообщения и говорить об этом вслух. Мой широковещательный приемник получает правильное имя, он правильно считывает текстовое сообщение, но когда дело доходит до метода speak()
, он просто падает. Вот мой код:Как вызвать TextToSpeech от широковещательного приемника
Это BroadcastReceiver:
public class DrivingModeSpeaker extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
int n;
Bundle bundle=intent.getExtras();
Object messages[]=(Object[])bundle.get("pdus");
SmsMessage smsMessage[]=new SmsMessage[messages.length];
for(n=0;n<messages.length;n++)
{
smsMessage[n]=SmsMessage.createFromPdu((byte[])messages[n]);
}
//show first message
String sms1=smsMessage[0].getMessageBody();
String from=smsMessage[0].getOriginatingAddress();
Toast toast=Toast.makeText(context,"In DrivingModeSpeaker BR",1);
toast.show();
DrivingMode.speakSMS(sms1);
}
}
И это DrivingMode.java, который содержит speak()
метод:
public class DrivingMode extends Activity {
private static TextToSpeech myTts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.message_m);
myTts = new TextToSpeech(this,ttsInitListener);
}
private TextToSpeech.OnInitListener ttsInitListener=new TextToSpeech.OnInitListener() {
@Override
public void onInit(int version) {
// myTts.speak(""+o, 0 ,null);
}
};
public static void speakSMS(String sms)
{
myTts.speak(sms,0,null);
}
}
Я попробовал этот код в отдельный проект, оно работает. Но в моем основном проекте это не так - может быть, из-за столкновения двух радиоприемников или чего-то еще? Я не знаю, я новичок в Android, пожалуйста, помогите!
трассировки стека вашего логарифма? –