juil
25
2010

[Tutoriel Android] Partie 8 – Chargement des images et données

Récupérer un flux de données ou une image

Bonjour à tous, aujourd’hui nous allons voir comment récupérer des données provenant d’une page ou d’un flux de données à distance, ou encore une image et l’afficher.

Commençons par créer un tout nouveau projet, contenant une activité et un layout principal.

Modifions notre layout “main.xml” de cette façon :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<ImageView

android:id="@+id/ivImage"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<ScrollView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:scrollbars="vertical">

<TextView

android:id="@+id/tvContent"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

/>

</ScrollView>

</LinearLayout>

On retrouvera une ImageView pour afficher notre image, ansi qu’un TextView qui contiendra la page que nous avons chargée, dans une ScrollView permettant de faire défiler celui-ci.

Nous allons utiliser nos premiers flux et les classes de connexions HTTP pour aller les chercher et les stocker.

Tout d’abord, créons une instance de notre ImageView et TextView pour les utiliser au sein de notre code.

public class MonActivite extends Activity {

ImageView image;

TextView page;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

image = (ImageView)findViewById(R.id.ivImage);

page = (TextView)findViewById(R.id.tvContent);

}

}

Nous allons créer une méthode downloadImage(), qui sera chargée de télécharger l’image distante et l’afficher dans notre ImageView.

Nous déclarerons un type Bitmap qui contiendra les informations de l’image. Puis par le biais de la classe URL, nous allons ouvrir une connexion vers celle-ci. Et enfin, avec la classe HttpURLConnection, nous allons récupérer le flux et pour finir la classe BitmapFactory servira à décoder notre flux.

private void downloadImage() {

Bitmap bitmap = null;

try {

URL urlImage = new URL("http://www.google.fr/intl/en_com/images/srpr/logo1w.png");

HttpURLConnection connection = (HttpURLConnection) urlImage.openConnection();

InputStream inputStream = connection.getInputStream();

bitmap = BitmapFactory.decodeStream(inputStream);

image.setImageBitmap(bitmap);

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

Nous allons utiliser la même technique pour lire une page web à la différence que nous n’allons pas la stocker dans une image, mais stocker les données dans un BufferReader, stocker chaque ligne de données dans un StringBuffer et pour finir l’afficher dans le TextView.

private void downloadPage() {

try {

URL urlPage = new URL("http://www.google.fr");

HttpURLConnection connection = (HttpURLConnection) urlPage.openConnection();

InputStream inputStream = connection.getInputStream();

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

StringBuffer stringBuffer = new StringBuffer();

String ligne;

while((ligne = bufferedReader.readLine()) != null) {

stringBuffer.append(ligne);

// Android 2.3 et supérieur
if(!bufferedReader.ready()) {
break;
}

}

page.setText(stringBuffer.toString());

connection.disconnect();

bufferedReader.close();

inputStream.close();

} catch (MalformedURLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

N’oubliez pas de fermer la connection ainsi que le buffer et l’inputstream, ce qui libéra de la mémoire.

Lancez le programme et voyez par vous même.

Programme final

Et voilà, le tutoriel est terminé maintenant vous savez charger une image à distance et les données d’une page.

N’oubliez pas d’ajouter la permission : android.permission.INTERNET

A plus tard pour le prochain tutoriel !

Voici les sources complètes : FormationImage

Download PDF
  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Bonjour,

    java.net.UnknownHostException: http://www.google.com

    Ton application n’arrive pas à contacter cette adresse.
    Dans le navigateur internet de l’émulateur arrive tu as accéder à cette adresse ?
    Si oui un petit http:// pourrais régler le soucis, sinon à tu bien mis la permission d’accès à internet dans ton application ?

  • hary

    svp ,pour les deux méthodes que vous avez crée y a pas d’appel dans l’activité principale ????

  • http://www.ace-art.fr/wordpress/ Pierre-Emmanuel Mercier

    Hary, rajoute les appels après

    page = (TextView)findViewById(R.id.tvContent);

  • http://www.facebook.com/people/Rezgui-Marwen/100000607339818 Rezgui Marwen

    Est ce que je peut avec cette  maniéré récupéré  des donnée de mon base de donnée.
    ( les donnée sont des images ,des texte,des vidéo ). 

  • http://www.ace-art.fr/wordpress Acesyde

    Base de données distantes ?

Switch to mobile version