Jump to content
Dahevos

Aide programmation android : sauver paramètres + switcher fenetre

Recommended Posts

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 !!!

Edited by Dahevos

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ... )

Edited by Dahevos

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ^^

Share this post


Link to post
Share on other sites

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 ^^

Share this post


Link to post
Share on other sites

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 )

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 !!!

Edited by Dahevos

Share this post


Link to post
Share on other sites

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"

Share this post


Link to post
Share on other sites

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 ;)

Edited by naholyr

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

Marche avec la 3G en utilisant le port suivant: 64788

Avec le port 8080 marche pas avec la 3G.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.






×
×
  • Create New...