2017-09-04 5 views
2

Dans mon application, j'essaie d'obtenir des données à partir des capteurs de l'appareil Android, puis en essayant de les stocker dans un fichier. J'ai pu récupérer des données de capteurs et les afficher avec succès dans l'EditText, mais je n'arrive pas à obtenir les données en continu à partir de l'EditText. Alors que la boucle n'est pas du tout utile ici. Et le thread créerait une copie de la chaîne "entry" mais j'en ai besoin à l'extérieur, alors j'essayais d'utiliser un callable mais je ne suis pas sûr de le faire correctement. Suggérer quelque chose à faire de même.Comment obtenir en continu des valeurs à partir d'un texte d'édition en android

Voici ce que je veux faire.

btn_start.setOnClickListener(new Button.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Callable callable = new Callable() { 
       @Override 
       public Object call() throws Exception { 
        while(!btn_stop.isPressed()) { 
         entry += acc_x.getText().toString() + "," + 
           acc_y.getText().toString() + "," + 
           acc_z.getText().toString() + "," + 
           gyro_x.getText().toString() + "," + 
           gyro_y.getText().toString() + "," + 
           gyro_z.getText().toString() + "," + 
           user_name.getText().toString() + "\n"; 
        } 
        return entry; 
       } 
      }; 

      ExecutorService executorService = Executors.newFixedThreadPool(2); 
      Future<String> stringFuture = executorService.submit(callable); 
      try { 
       entry = stringFuture.get(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } catch (ExecutionException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

Here est le code complet si vous avez besoin de plus référence.

Répondre

1

si vous souhaitez obtenir les données en continu à partir de l'EditText.

editText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
//save it to file here or what ever you want 
    } 

    @Override 
    public void afterTextChanged(Editable s) {} 
}); 
+0

Merci c'est exactement ce dont j'ai besoin. <3 –