バックグラウンドで実行されているサービスからインテントを受信する必要があるブロードキャストレシーバーを実装しようとしていますが、機能していません。
私のメインアクティビティでは、サービスをバインドonClick
し、ボタンから開始します。
私のSpeechRecognizer
Serviceクラスで、新しいものを作成しますBroadcastReceiver
(以下のコードを参照)。
public void onCreate() {
Log.d(TAG, "onCreate");
if (SpeechRecognizer.isRecognitionAvailable(this)){ //check if a SpeechRecognizer is available
this.sr = SpeechRecognizer.createSpeechRecognizer(this);
this.sr.setRecognitionListener(new listener());
commandsReceiver = new CommandsReceiver();
ConnectivityManager cm =(ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
testfilter = new IntentFilter();
registerReceiver(commandsReceiver,testfilter);
} else {
Toast.makeText(this,"Please install a SpeechRecognizer on your system.", Toast.LENGTH_LONG).show(); //alert if speech-recognizer is not installed on the device
Log.d(TAG, "no SpeechRecognizer available");
this.onDestroy();
}
}
私のonResult
中で私はこのようにします:
Intent intent = new Intent();
intent.setAction(CommandsReceiver.TEST);
sendBroadcast(intent);
私の中で、CommandsReceiver
私は単純なString
ログメッセージを受け取りました:
public class CommandsReceiver extends BroadcastReceiver {
public static final String TEST = "de.speech.TEST_INTENT";
@Override
public void onReceive(Context context, Intent intent) {
Log.d("BroadCastReceiver", "Intent received"+intent);
}
}
しかし、私はLog.d()
メッセージを受け取っていません。
あなたが私を助けてくれることを願っています。