Aller au contenu

Aide programmation android : sauver paramètres + switcher fenetre


Dahevos

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

Modifié par Dahevos
Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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 !

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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 ^^

Lien vers le commentaire
Partager sur d’autres 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 ^^

Lien vers le commentaire
Partager sur d’autres 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 )

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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 ;)

Modifié par naholyr
Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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 !

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...