Dahevos Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 (modifié) Bonjour à tous, Etant étudiant en informatique j'ai des connaissances en Java mais c'est la première fois que je me lance dans l'aventure android. Aucun problème côté eclipse et autres, ce sont des outils que je maîtrise plutôt bien... Cependant, j'ai des questions concernants des points de base dans android : - Comment on peut faire en sorte de switcher la fenêtre : si on clic sur le bouton configuration, que la fenêtre configuration apparaisse et que si l'utilisateur clic sur le bouton "annuler" de son portable, on revienne à la page d'accueil. Que la page de config soit gérer par une autre classe car pour le moment j'ai fait un setContentView(R.layout.config); donc j'ai bien une nouverlle page qui apparait mais si l'utilisateur appuie sur le bouton annuler de son portable cela ferme l'application (retour sur le bureau). Je voudrais aussi faire en sorte que si il clic sur le bouton annuler de l'application, il revient sur la page d'origine. Je souhaite donc savoir comment gérer efficacement plusieurs fenêtres. - Lire/écrire dans un fichier ou autres : en effet je veux faire en sorte que ma configuration soit sauvegardés, quand l'utilisateur lance le bouton start que je puisse utiliser la config de l'utilisateur. Pour le moment j'ai utilisé ça : // Restore preferences SharedPreferences settings = getSharedPreferences("ANDROFROG", 0); String serverAddress = settings.getString("serverAddress", "localhost"); Et je voulais savoir si c'était correct ( si on pouvait faire ça comme ça : ici en gros si j'ai compris il récupère dans le "namespace" ANDROFROG la varaible serverAddress et si elle existe pas il lui colle la valeur par defaut qui est localhost. Est-ce juste ? => OK CA MARCHE - Utiliser les sockets. Bizarrement j'essaie mais mon code java ne fait absolument rien pour le moment. Ok j'ai résolu ce problème j'avais oublié de éditer dans le fichier AndroidManifest et de rajouter cette ligne : Merci d'avance !!! Modifié 8 mai 2010 par Dahevos Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 Les "fenetres" sont gérées par les Activity Chaque fois que tu demandes à ouvrir une nouvelle fenetre, la nouvelle Activity est empilée sur une stack (pile) Si tu décides de revenir en arrière, l'Activity courante est enlevée de la pile. ça permet entre autre de revenir à l'écran précédent en gardant son contenu identique SharedPreferences.edit oublies pas de commit Tu peux aussi écrire directement un fichier sur les carte SD Pour connaitre le chemin de la carte SD, regardes la classe Environment Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 8 mai 2010 Auteur Share Posté(e) 8 mai 2010 Ok merci je comprend mieux. Par contre pour les sockets ca marche en émulateur mais pas sur le téléphone quand c'est en 3G (quand c'est en WIFI pas de probleme ). Le serveur me répond une erreur http 501 service not implemented.... si vous avez une idée, je suis preneur ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 l'émulateur passe par ta connextion internet, comme le wifi la 3G, ça dépend de ton abonnement téléphone si t'as un forfait "au rabais", il est surement bridé tu ne peux surement utiliser que http via la 3G, et non les sockets TCP Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 8 mai 2010 Auteur Share Posté(e) 8 mai 2010 (modifié) Aie OK donc exit les sockets, il faut mettre en place un web service côté serveur du coup (serveur HTTP de type Apache par exemple avec TOMCAT ... ) Modifié 8 mai 2010 par Dahevos Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 ce n'était qu'une supposition hein :P mais généralement, les problèmes de 3G, ça vient des opérateurs qui brident la connexion tout ce que je peux te dire, c'est que le http n'est jamais bloqué :D Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 8 mai 2010 Auteur Share Posté(e) 8 mai 2010 Ok merci... Ca m'embête à mort ce problème, c'est vraiment impossible de passer par des sockets, même en traficotant ? :p Car j'ai d'un côté un serveur en java avec les sockets justement, et tout mon appli repose dessus et l'intérêt était de pouvoir utiliser l'appli quand on est pas chez soi ... =D. Sinon je vais essayer de remodeler tout ça en requette HTTP j'ai vu que java pouvait apparement le faire http://www.commentcamarche.net/forum/affich-2242924-java-requetes-http Je vais voir de ce coté et je reviens ^^ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 attends .... tu utilises quoi comme protocoles actuellement ? et c'est pour faire quoi ? (si tu peux le dire) c'est comment coté serveur ? car si tu utilises juste du TCP, et que tu as une erreur HTTP, il y a un problème quelque part ^^ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 8 mai 2010 Auteur Share Posté(e) 8 mai 2010 Alors j"utilise les sockets TCP uniquement normalement : côté serveur : ServerSocket s = new ServerSocket(port); et côté client : Socket socket = new Socket(adresse, port); Ensuite pour réception et envoie de message : BufferedReader plec = new BufferedReader( new InputStreamReader(socket.getInputStream()) ); PrintWriter pred = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())), true); pred.println(cmd); // envoi d'un message String str = plec.readLine(); // lecture d'un message Et en faite j'ai fait une authentification qui renvoie OK ou KO. J'envoie donc le "password", et au lieu de me renvoyer OK côté serveur comme c'est le cas en WIFI, il me renvoie l'erreur HTTP/1.1 501 Not Implemented ( quand j'affiche ce que je recoit, à savoir str ) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 je suis quasiment sûr que ça vient du fait que ton forfait est bridé ^^ tu n'utilises que du TCP, et tu reçois une erreur HTTP donc ta connexion passe par un serveur "proxy" de ton opérateur, qui n'autorise que le HTTP par conséquent, il te jette :D Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 8 mai 2010 Auteur Share Posté(e) 8 mai 2010 (modifié) Saleté de bouygues telecom ! :rolleyes: Du coup, je suis partie pour revoir ma formule :mad: Merci en tout cas car je comprenais pas l'erreur !!! Modifié 8 mai 2010 par Dahevos Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 Chez moi ça marche Bouygues :/ SSH, VNC c'est ok Et le protocole de mon appli Android fonctionne sans problème J'utilise du TCP "bas niveau" Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
naholyr Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 (modifié) Oublie les sockets, tu auras plus vite fait de te faire un petit webservice en JSON que tu héberges quelque part en HTTP, et de te faire un client de ce service (avec un simple URL.getContent() ça marche très bien). Pour mon appli j'utilisais au début les sockets et je n'ai eu que des problèmes : selon le type de connexion, l'opérateur, etc... J'avais beau taper sur du port 80, ça ne marchait quasiment jamais et c'était complètement aléatoire. Depuis que je suis passé sur un webservice, tout va mieux :) Tu peux jeter un oeil sur http://termobile-ws.sfhost.net j'y raconte mes malheurs ;) Modifié 8 mai 2010 par naholyr Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 8 mai 2010 Auteur Share Posté(e) 8 mai 2010 Le problème est que le web service nécessite de grosses installations : tomcat, axis et Cie. Comme mon server avait vocation a être installé chez les clients même, je préfère lui balancer le .jar et qu'il le lance et comme ça on est tranquille.... Pierre > tu pourrais me mettre un exemple de code qui fonctionne chez toi ? Quelle port utilise tu ? Merci d'avance Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 8 mai 2010 Share Posté(e) 8 mai 2010 http://code.google.com/p/premotedroid/source/browse/#svn/trunk/PRemoteDroid%20Protocol/src/org/pierre/remotedroid/protocol C'est un peu "lourd" à comprendre, mais ça marche :P Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 9 mai 2010 Auteur Share Posté(e) 9 mai 2010 Bon je suis allé a la fnac hier et j'ai vu un bouquin sur android traitant des sockets. J'ai pris des photos du code, j'ai testé chez moi et les sockets marchent même en 3G .... J'ai essayé d'adapter ça à mon code mais rien à faire je vois pas ou est le problème :'(. JE voudrais savoir pierre si il y a moyen que je te file le code qui marche et mon code pour que tu jettes un coup d'oeil a mon appli - j'ai pas non plus envie de la diffuser publiquement comme ça sur le forum. SI tu acceptes merci de me le dire sur ce sujet je t'expliquerai et t'enverrai les fichiers via mp. Merci ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 9 mai 2010 Share Posté(e) 9 mai 2010 Ok, envoie moi ça par mail : pierredurand at gmail dot com Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 9 mai 2010 Auteur Share Posté(e) 9 mai 2010 Voila c'est fait :) Merci ^^ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dahevos Posté(e) 12 mai 2010 Auteur Share Posté(e) 12 mai 2010 Marche avec la 3G en utilisant le port suivant: 64788 Avec le port 8080 marche pas avec la 3G. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pierre87 Posté(e) 12 mai 2010 Share Posté(e) 12 mai 2010 toujours une solution !!! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.