J'essaie de mettre en œuvre un récepteur de diffusion qui devrait recevoir l'intention d'un service qui fonctionne en arrière-plan, mais cela ne fonctionne pas.Récepteur de diffusion ne recevant pas d'intention via le service
Dans mon activité principale, je viens de lier le service et le démarrer via onClick
sur un bouton.
Dans mon SpeechRecognizer
Classe de service, je crée un nouveau BroadcastReceiver
(voir le code ci-dessous).
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();
}
}
Dans mon onResult
je le fais comme ceci:
Intent intent = new Intent();
intent.setAction(CommandsReceiver.TEST);
sendBroadcast(intent);
Dans mon CommandsReceiver
Je viens d'un simple String
et un message de journal:
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);
}
}
Cependant, je ne reçois pas le message Log.d()
.
J'espère que vous pouvez m'aider.
Ah droite i doit être aveugle .... maintenant cela fonctionne –
Comme vous êtes un nouvel utilisateur et que vous n'avez pas coché de réponse. Mieux commencer à cocher les réponses de marquage dont vous êtes satisfait. Donc, ce futur utilisateur peut savoir que cette réponse a déjà été répondue. –
Merci pour les conseils que je garderai en tête –