0

Je travaille actuellement sur une application qui va recevoir en continu des données de capteurs d'un serveur web et les afficher dans des vues texte. J'utilise un Asynctask pour obtenir les données et la méthode OnprogressUpdate récupère continuellement de nouvelles données et les affiche. Chaque fois que les données du capteur sont supérieures à 70, une notification est envoyée. Le problème que j'ai est qu'une seule notification est envoyée lorsque les données sont supérieures à 70 et quand elle diminue et re-augmente aucune notification n'est envoyée.Notifications de la méthode asynctack OnProgressUpdate

Lorsque je supprime la valeur booléenne, mon téléphone continue d'envoyer des notifications et cela est gênant. Y at-il un moyen quand les données sont> 70, il envoie une notification et quand il diminue et augmente encore, une autre notification est envoyée?

Notez que le téléphone recevra 2 données de capteurs et qu'il affichera continuellement les données dans les vues de texte.

Voici le code de OnProgressMethod. J'espère que vous pouvez m'aider les gars. Merci.

méthode OnProgressUpdate:

private boolean alreadyDisplayedNotification = false; 
 

 
protected void onProgressUpdate(byte[]... values) { 
 
\t \t super.onProgressUpdate(values); 
 
     String command=new String(values[0]);//get the String from the recieved bytes 
 
     String[] parts= command.split(","); 
 
     String part1=parts[0]; 
 
     String part2=parts[1]; 
 
      
 
     temp.setText(part1); 
 
     humi.setText(part2); 
 
      
 
      
 
     if(Float.parseFloat(part2)>70.00 && !alreadyDisplayedNotification) 
 
     { 
 
     \t NotificationCompat.Builder builder=new NotificationCompat.Builder(this.context); 
 
    \t \t \t builder.setContentTitle("AM Home Automation"); 
 
    \t \t \t builder.setContentText("humidity is high"); 
 
    \t \t \t builder.setSmallIcon(R.drawable.ic_launcher); 
 
    \t \t \t builder.setTicker("alert"); 
 
    \t \t \t builder.setDefaults(Notification.DEFAULT_ALL); 
 
    \t \t \t //builder.setSound(Uri.parse("android.resource://"+getPackageName()+"/"+R)); 
 
    \t \t \t 
 
    \t \t \t notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
 
    \t \t \t notificationManager.notify(1, builder.build()); 
 
    \t \t \t //notificationID--; 
 
    \t \t \t alreadyDisplayedNotification=true; 
 
    \t \t \t 
 
     } 
 
     
 
      
 
     
 
    }

Répondre

1

Je pense:

if(Float.parseFloat(part2)<=70.00){ 
    alreadyDisplayedNotification=false; 
}