Application qui freeze communication Android -> Arduino

Fermé
Thomas - 28 mai 2015 à 13:17
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 28 mai 2015 à 17:43
Bonjour,
je dois "créer" une application android dans le but de gérer le démarrage d'un moteur dans un sens ou dans l'autre par le biais d'une carte arduino et d'un shield ethernet.
J'ai récupéré une appli permettant d'allumer une Led via une requête http, du style "http://Ip_local/cmd1 ou cmd2.
Au démarrage de l'appli tout va bien je peux actionner mon moteur mais après une seule action l'application freeze et je dois la redémarrer pour pouvoir faire une autre action.
package com.androidarduino;

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity /*implements OnClickListener*/{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		StrictMode.ThreadPolicy policy = new StrictMode.
		ThreadPolicy.Builder().permitAll().build();
		StrictMode.setThreadPolicy(policy);
	
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		/*View Ouverture = findViewById(R.id.Ouverture);

		View Fermeture = findViewById(R.id.Fermeture);

		
		Ouverture.setOnClickListener(this);

		Fermeture.setOnClickListener(this);*/

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	public void commandArduino(String url){
	 	try {
	   		HttpClient httpclient = new DefaultHttpClient();
		    httpclient.execute(new HttpGet(url));			    
		  }
        catch (Exception e) {
		  }

}
	
	/*public void onClick(View thisView) {
		switch(thisView.getId()){
		case R.id.Ouverture:
            commandArduino("http://192.168.1.25/$1");
            Toast.makeText(getApplicationContext(), "OUVERTURE",Toast.LENGTH_LONG).show();
			break;

		case R.id.Fermeture:
			commandArduino("http://192.168.1.25/$2");
			Toast.makeText(getApplicationContext(), "FERMETURE",Toast.LENGTH_LONG).show();
			break;
		}


		}*/




    public void onClickOuverture(View view) {
        commandArduino("http://192.168.1.25/$1");
        Toast.makeText(getApplicationContext(), "OUVERTURE",Toast.LENGTH_LONG).show();

    }
    public void onClickFermeture(View view) {
        commandArduino("http://192.168.1.25/$2");
        Toast.makeText(getApplicationContext(), "Fermeture", Toast.LENGTH_LONG).show();
    }
}


Après je ne sais pas si le problème vient d'android ou d'arduino.
Je vous remercie par avance.

Thomas
A voir également:

1 réponse

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 895
28 mai 2015 à 17:43
Hello,

Si tu mets un log après ta méthode
httpClient.execute()
, tu le vois passer? Il me semble que cette méthode est synchrone.
Il faut plutôt la lancer dans un thread à part (cf. AsyncTask)
0