Aller au contenu

Afficher une image dynamiquement


dadou75

Recommended Posts

Bonjour,

Je réalise actuellement un lecteur d'image mais lors de l'exécution un écran noir apparait, le LogCat m'indique "decoder->decode returned false"

Mes codes :

package andro.com;

import android.app.Activity;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.os.Bundle;

public class Lecteur extends Activity implements View.OnTouchListener{
String url;
Media media=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
	Log.i("dadou", "je suis dans le Lecteur.onCreatavan");
	super.onCreate(savedInstanceState);
	Log.i("dadou", "je suis dans le Lecteur.onCreatapre");
	Bundle extras = this.getIntent().getExtras();
	if (extras != null) {

		// On récupere l'addresse du media
		url = (String) extras.get("address");
		media=ContainerData.getMedia(url);//création du média à partir de l'adresse

		//to DO test sur le media pour mettre en place le layout(navigation dans le média)
		Log.i("dadou", "recuperation du media par le lecteur "+media.toString());
	}
}


@Override
protected void onStart() {
	Log.i("dadou", "recuperation du media par le lecteur.onStart "+media.toString());

	media.actuReader().affichage(this, this);//la méthode actureader() retourne un String indiquant le chemin du fichier à lire ("/sdacard/image/01.jpg") 
	Log.i("dadou","adreese de la premier vignette dans le lecteur"+	media.toString());
	super.onStart();
}


@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
	Log.i("dadou", "recuperation du media par le lecteur.onTouch "+media.toString());
	media.suite().affichage(this, this);
	return false;
}


}

la classe appelée pour l'affichage est :

 package andro.com;

import java.io.FileInputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.widget.ImageView;

public class Image implements TypeMedia{
String address;
Context con;
Activity acti;

public Image(String address){
	this.address=address;
}


public void affichage(Context cont,Activity acti) {
	Bitmap[] imv =new Bitmap[3];
	try {
		imv[0] = BitmapFactory.decodeStream(new FileInputStream(address));

	} catch (IOException e) {
		System.out.println("pb d'E/S  "+"__"+address+"__");
		e.printStackTrace();
	}
	Log.i("dadou", "passage d'adresse réussie "+cont.toString());
	ImageView im=new ImageView(cont);        
	im.setImageBitmap(imv[0]);
	acti.setContentView(im);	

}


public String getAddress(){return address;}
}

ps: le lecteur est lui même exécuter après avoir trouver le fichier xml contenant l'adresse de l'image et le parsage de celui-ci.

code du lecteur de base

 package andro.com;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Main extends Activity {
TextView tv;
Button bt;
/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	tv = (TextView)findViewById(R.id.textView1);



	bt=(Button)findViewById(R.id.button1);
	bt.setOnClickListener(new OnClickListener() {


		@Override
		public void onClick(View arg0) {
			Intent intent = new Intent(getBaseContext(),FileDialog.class);
			intent.putExtra(FileDialog.START_PATH, "/sdcard");

			int REQUEST_SAVE =0;
			startActivityForResult(intent, REQUEST_SAVE);
		}

	});

}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
	// Récupération des parametres
	Bundle extras = data.getExtras();
	if (extras != null) {

		// On récupere notre parametre String
		String myParam = (String) extras.get(FileDialog.RESULT_PATH);


		//    data=intent.getStringExtra(FileDialog.RESULT_PATH,"oh non");

		tv.setText("coucou c'est  "+myParam);

		//	media=ContainerData.getMedia(myParam);//création du média à partir de l'adresse: obsolete
		Intent lecture=new Intent(this, Lecteur.class); //ouverture de la class Lecture
		lecture.putExtra("address", myParam);            //avec transmission de l'adresse du media pourai se faire avec contenu de la base de donnée
		startActivity(lecture);


	}else{		    	tv.setText("coucou c'est un pb de recup!!!...");
	}
}
} 

Quelqu'un aurait il une idée de la provenance de cette erreur?

Merci d'avance pour votre aide!!!!

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...