IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Envoyer des données par Wifi [Débutant(e)]


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 54
    Par défaut Envoyer des données par Wifi
    Bonjour,

    j'ai une application Android dont la finalité est de générer une ArrayList contenant les SMS contenus dans le smarthone. J'aimerais maintenant pouvoir envoyer cette ArrayList par Wifi, depuis le smartphone vers un programme Java situé sur un ordinateur connecté au même réseau. Je ne sais pas comment m'y prendre côté application Android, ni côté programme Java

    Je débute complètement en programmation Android dont merci de m'expliquer " la méthode simple "

    Merci beaucoup

  2. #2
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Règle n°1 : Il n'y a jamais rien de simple quand on programme une application.

    Il va falloir transformer ton ordinateur en serveur, c-a-d à l'écoute de possibles requêtes sur un port donné. Ton application Android sera le client.
    Peut-être le plus simple est de le transformer en serveur Web (port 80), propulsé par Tomcat, où une servlet "recupSMS" sera chargée de récupérer les infos SMS, puis de les passer à ton autre programme Java.

    Ton application android aura donc à sérialiser ton ArrayList sous une forme de ton choix, xml par exemple, comme suit :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <sms>Salut ca va ?</sms>
    <sms>Rdv au ciné à 20h30. @+</sms>
    ...

    Puis envoyer ce message par HTTP (méthode POST) à ton serveur désormais accessible, du genre : http://123.56.78.12:80/recupSMS
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 54
    Par défaut
    Merci beaucoup pour ton aide, mais j'ai vraiment peu de connaissances dans ce domaine et je ne sais pas comment transformer mon ordinateur en serveur, je ne sais pas ce qu'est Tomcat, ni une servlet...

    Par ailleurs j'ai trouvé ce code qui fournit deux classes " Serveur " et " Client " que je comprends à peu près et que j'arrive à faire fonctionner avec l'émulateur d'Android Studio :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    public class Serveur {
     
    	public static void main(String[] zero) {
     
    		ServerSocket socketserver  ;
    		Socket socketduserveur ;
     
    		try {
     
    			socketserver = new ServerSocket(2009);
    			socketduserveur = socketserver.accept(); 
    			System.out.println("Un zéro s'est connecté !");
    		        socketserver.close();
    		        socketduserveur.close();
     
    		}catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
     
    public class Client {
     
    	public static void main(String[] zero) {
     
    		Socket socket;
     
    		try {
     
    		     socket = new Socket(InetAddress.getLocalHost(),2009);	
    	             socket.close();
     
    		}catch (UnknownHostException e) {
     
    			e.printStackTrace();
    		}catch (IOException e) {
     
    			e.printStackTrace();
    		}
    	}
     
    }
    Pour que ça fonctionne avec l'émulateur Android il faut cependant remplacer InetAddress.getLocalHost() par InetAddress.getByAddress(new byte[]{10,0,2,2}), qui correspond à l'adresse IP locale de l'ordinateur du point de vue de l'émulateur (si j'ai bien compris).

    Le problème c'est que ça n'est que local, ça ne fonctionne pas si je lance le client depuis un téléphone Android réel connecté au même réseau wifi que l'ordinateur. J'ai pensé qu'il fallait remplacer InetAddress.getLocalHost() par l'adresse IP de mon ordinateur, mais à moins que je ne me trompe celle-ci est 192.168.0.105 et je ne sais pas comment créer un objet InetAddress à partir de ça : en effet la méthode InetAddress.getByAddress() requiert un byte[] comme argument, et 192 n'est pas un byte...

    Est-ce que cette piste peut répondre à mes besoins ou bien je m'égare ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 54
    Par défaut
    Finalement en utilisant des Socket, des ObjectInputStream et des ObjectOutputStream j'ai réussi à faire ce que je souhaitais

    Il me reste un dernier problème : l'application cliente (sur le téléphone Android) se connecte sur l'application server (sur mon ordinateur) en utilisant l'adresse IP locale de mon ordinateur (obtenue par ipconfig). La connexion n'est donc possible que si le téléphone Android est connecté au même réseau wifi que mon ordinateur. J'aimerais que la connexion soit possible depuis n'importe quelle connexion internet, comme la 3G par exemple. Dans ce but, j'ai changé le code de l'application Android en remplaçant l'adresse IP locale de mon ordinateur par l'adresse IP publique statique fournie par mon FAI (obtenue sur ce site : http://www.mon-ip.com/ip-dynamique.php).
    Malheureusement cela ne fonctionne pas, la connexion ne s'établit pas ; avez-vous une idée du problème ?

    Merci

    EDIT : J'ai désactivé le par-feu windows, j'ai désactivé Avast et j'ai redirigé le port que j'utilise dans les options de mon routeur, mais toujours pas de connexion par 3G

Discussions similaires

  1. envoyer des données par rapport à une checkbox
    Par dudu134 dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2007, 17h57
  2. Envoyer des données par post sans formulaire
    Par webrider dans le forum Langage
    Réponses: 12
    Dernier message: 31/03/2007, 19h11
  3. Envoyer des données par TCP/IP
    Par slimdre dans le forum C++
    Réponses: 4
    Dernier message: 18/03/2007, 18h28
  4. envoyer des données par mail
    Par zorba49 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/12/2005, 11h00
  5. envoyer des données par l'intermédiaire d'un bouton
    Par mathilde50 dans le forum Access
    Réponses: 26
    Dernier message: 28/10/2004, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo