Jump to content
Ice

Afficher une variable sous android

Recommended Posts

Bonjours je suis nouveau sur ce forum que j'ai découvert depuis que je projette de m'acheter un téléphone sous android (soit environ deux semaines) et je dois dire que c'est vraiment le meilleur !!

Je suis débutant dans la programmation sous android et je souhaiterais afficher une variable de type int à l'écran tout simplement. J'ai cherché mais en vain. Je sais que pour le texte on utilise textView, alors j'ai essayé de cast mon nombre en String mais ça n'a pas l'air de marcher.

Donc si vous pouviez me donner ce coups de pouce ce serait sympa, bonne fin de journée à tous

Edit : C'est bon j'ai résolu mon problème avec String.valueOf(i) même si dans un premier temps cela n'avais pas marché, j'avais du mal m'y prendre. Par contre j'aurais une autre question : je ne comprend pas comment afficher une liste de nombre, par exemple dans une boucle for, en effet cela m'affiche toujours le dernier.

Par exemple avec :

TextView textView = new TextView(this);
TextView autretxt = new TextView(this);
textView.setText("Hello world !\n");

setContentView(textView);

       for(int i = 1; i <= 10; i++)
       {
       	autretxt.setText( "\n" + String.valueOf(i));
       	setContentView(autretxt);
       }

Comment je peux faire pour afficher à l'écran :

Hello world !

1

2

...

10

Edited by Ice

Share this post


Link to post
Share on other sites

Salut!

Le problème vient du fait que tu REMPLACES le contenu de ta TextView à chaque fois... Mais ca va tellement vite que tu ne vois que le résultat final, c'est a dire la derniere valeur.

Tu as plusieurs solutions:

- La première: mettre toutes les lignes dans la même TextView,

- La seconde : ajouter une TextView pour chaque ligne.

Pour la première :

Tu vas créer une StringBuffer, par exemple.

du coup, ton code donnera à peu près ca:

TextView textView = new TextView(this); 
StringBuffer contenu = new StringBuffer();
contenu.append("Hello world !\n");

for(int i = 1; i <= 10; i++) 
{ 
      contenu.append("\n" + String.valueOf(i));
}
textView.setText(contenu); 
setContentView(textView); 

Pour la seconde:

Tu vas créer un LinearLayout (ou récupérer un existant) et tu lui rajoutera, à chaque fois, une nouvelle TextView.

N'oublie pas d'ajouter la propriété orientation verticale pour ton LinearLayout. Cela permettra de mettre tes TextViews les unes apres les autres verticalement et non horizontalement (par défaut).

Ca donnera à peu près ca:

LinearLayout conteneur = new LinearLayout (this);
conteneur.setOrientation(LinearLayout.VERTICAL);
TextView textView = new TextView(this); 
textView.setText("Hello world !");
conteneur.addView(textView);
for(int i = 1; i <= 10; i++) 
{ 
      TextView ligne = new TextView(this); 
       textView.setText(String.valueOf(i));
      conteneur.addView(ligne);
}
setContentView(conteneur); 

Essaye et tu me diras...

Edit : Pour ton problème précédent, il y avait plus simple que "String.valueOf(i)" => ""+i ca revient à caster un int en String... ;)

Edited by Kricek

Share this post


Link to post
Share on other sites

Salut, merci pour ton aide :)

J'aurais deux autres questions, en fait je suis en train (j'essaye plutôt) de développer une application qui utilise le micro du téléphone donc :

- C'est bien cette librairie qu'il faut utiliser : http://developer.android.com/reference/android/media/MediaRecorder.html ?

- J'en suis quasiment sûr mais le microphone ne fonctionne pas sur l'émulateur ? Donc il faut que je développe et teste mon appli sur un vrai téléphone ?

Edited by Ice

Share this post


Link to post
Share on other sites

De toute manière attend toi à devoir investir dans un téléphone android si tu veux développer des application , l'émulateur c'est bien mais c'est pas vraiment parfait non plus , ça sert plus a tester ton appli sur des version d'android que tu ne possède pas.

Pour répondre à ta question , oui je crois que l'émulateur ne peut pas avoir d'entrée audio (mais je peut me tromper)

Share this post


Link to post
Share on other sites

De toute manière attend toi à devoir investir dans un téléphone android si tu veux développer des application , l'émulateur c'est bien mais c'est pas vraiment parfait non plus

Oui c'est pour ça que je pense me prendre et puis aussi pour le fait d'avoir un jolie smartphone.

J'ai légèrement avancé sur mon applie car j'arrive maintenant à capturer du son mais ça n'a pas été simple. Mais bon ça rame à mort on dirait que je parle au ralenti. J'ai aussi un problème avec getMaxAmplitude() qui me renvoie toujours 0. Si des gens arrivent à le faire marcher ça m'aiderais bien d'avoir un coup de main.

J'ai aussi une question qui a déjà du être posée mais ça fait une demie heure que je cherche sur google sans trouver : comment lancer une applie développée sous Éclipse sur son téléphone en lieu et place de l'émulateur ?

Bonne fin de soirée ;)

Share this post


Link to post
Share on other sites

rien de plus simple , tu branche ton téléphone en usb (en ayant activé le mode debug sur le téléphone) , il sera detecté par adb (et donc par eclipse et son plugin adt) , et sera dès lors utilisé a la place de ton émulateur lorsque tu lancera ton application comme tu le faisais avant

Share this post


Link to post
Share on other sites

Ah ah j'ai réussi à récupérer l'amplitude du son, par contre ça m'affiche tout de même beaucoup de 0, jugez par vous même :

27473525.jpg

Alors je pense que ça vient de la lenteur de l'émulateur, donc dans l'attente d'un téléphone quelqu'un serait t'il assez gentil de la tester sur son téléphone, je peux vous envoyer le code par mp :emo_im_angel:

En passant j'aurais une autre question : étant donné que j'affiche beaucoup de nombres existe t'il un moyen de scroller pour visionner l'intégralité du texte affiché ?

Merci et bonne soirée :D

Edited by Ice

Share this post


Link to post
Share on other sites

Bonjours, je reviens avec une question à laquelle je ne trouve pas de réponse. En fait je suis en train de développer un spectrographe en temps réel pour afficher le spectre fréquentiel du son enregistré par le micro. Avant de commencer à développer toute une interface graphique je voudrais m'assurer du bon fonctionnement de la transformée de Fourié pour se faire j'aurais donc aimé par exemple dessiner les barres d'amplitudes comme sur cette images avec des points tout simplement. Faire du genre :

...

.....

..

.........

..

.......

..

.

.

....

.........

..

Seulement je n'arrive pas à faire un texte qui se rafraichie, je sais pas comment dire mais il m'affiche seulement la dernières occurrence au lieu de voir les barres qui montent et qui descendent.

Si vous avez une idée ça m'aiderais beaucoup, merci :)

Share this post


Link to post
Share on other sites

si tu veux voir les barres qui montent et descendent va falloir rajouter du code.

ex : tu récupère les données (spectorielle?) toutes les 500ms , donc tu rafraîchie ton textview tout les 500ms .

A la place de ça , tu vas rafraîchir ton textview tout les 100ms (donc 5 fois plus) et entre les deux récupération de données tu va avoir toutes les 100ms ta barre qui descendra d'un cran.

c'est ça que tu veux ?

Edited by eephyne

Share this post


Link to post
Share on other sites

Oui c'est à peut près ça : j'ai une fréquence d'échantillonnage de 16 000Hz qui me rempli un buffer de 4096 cases sur lequel j'applique la transformé de fourier, ensuite je coupe le tableau de résultat en deux à cause du repliement. Donc j'ai un tableau de 2048 cases que je réduirai car je ne peux afficher que 30 lignes sur le téléphone.

Merci pour ton aide :)

Edited by Ice

Share this post


Link to post
Share on other sites

Salut Ice,

Je regarde moi-même les applis Android pour m'en faire une cet été si je me fais chier mais je suis plus que débutant, ton programme a l'air bien rempli de différentes fonctions d'Android est-ce que tu pourrais me l'envoyer (si tu es pour le "logiciel libre"...?), cela m'aide généralement bien plus qu'un livre!!

Merci!

Share this post


Link to post
Share on other sites

Pour tes barre de son, j'utiliserais un thread avec une view, cela te permet de faire du realtime sans ralentir l'appli.

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