Aller au contenu

Afficher une image dynamiquement


dadou75

Recommended Posts

Posté(e)

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

Archivé

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

×
×
  • Créer...