をあなたのコードは、上で動作しませんでした:BroadcastReceiverの
tts = new TextToSpeech(context, this);
コンテキストは "制限文脈" です。これは、BroadcastReceiverのコンテキストでサービスを開始できないことを意味します。 TTSはサービスなので、anytingを呼び出さない。
ベストソリューションは、サービスを呼び出すアクティビティを持つBroadcastReceiverに別のインテントを開始することです。
public void onReceive(Context context, Intent intent) {
....
Intent speechIntent = new Intent();
speechIntent.setClass(context, ReadTheMessage.class);
speechIntent.putExtra("MESSAGE", message.getMessageBody().toString());
speechIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(speechIntent);
....
}
そして活動にあなたが余分からのパラメータを持つTTSサービスを呼び出す
public class ReadTheMessage extends Activity implements OnInitListener,OnUtteranceCompletedListener {
private TextToSpeech tts = null;
private String msg = "";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startingIntent = this.getIntent();
msg = startingIntent.getStringExtra("MESSAGE");
tts = new TextToSpeech(this,this);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (tts!=null) {
tts.shutdown();
}
}
// OnInitListener impl
public void onInit(int status) {
tts.speak(msg, TextToSpeech.QUEUE_FLUSH, null);
}
// OnUtteranceCompletedListener impl
public void onUtteranceCompleted(String utteranceId) {
tts.shutdown();
tts = null;
finish();
}
}
このエラーコードを投稿してください... – st0le
申し訳ありません、私のソースコードを追加しました – Chandana
こんにちは、この問題を解決する方法を知っていますか? – Chandana