diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 608d0ed7b62fe1985ea86e33915895828e2944ed..bfeb52ff89a23339edb0862ab1ebe80f5dc9c8bb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,6 +2,9 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     package="com.example.myhabitat" >
+    <uses-feature
+            android:name="android.hardware.camera"
+            android:required="true"/>
 
     <application
         android:allowBackup="true"
diff --git a/app/src/main/java/com/example/myhabitat/PiecesActivity.java b/app/src/main/java/com/example/myhabitat/PiecesActivity.java
index e0837e4a99b38a29a4ecaf9482c2d0d912fb55c0..7909a34f0ef73a0e5a0878d1f41d4c1ddda7cb74 100644
--- a/app/src/main/java/com/example/myhabitat/PiecesActivity.java
+++ b/app/src/main/java/com/example/myhabitat/PiecesActivity.java
@@ -1,13 +1,18 @@
 package com.example.myhabitat;
 
 import android.content.Intent;
+import android.graphics.Bitmap;
+import android.provider.MediaStore;
 import android.text.Editable;
 import android.text.TextWatcher;
+import android.util.Log;
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.TextView;
+import android.widget.*;
+import androidx.activity.result.ActivityResult;
+import androidx.activity.result.ActivityResultCallback;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.appcompat.app.AppCompatActivity;
 import android.os.Bundle;
 import habitat.*;
@@ -15,14 +20,19 @@ import habitat.*;
 public class PiecesActivity extends AppCompatActivity {
     private Habitat habitat;
     private TextView textView;
-    private GestionnaireEditPiece gestionnaire;
+    private GestionnaireEditHabitat gestionnaire;
+    private ActivityResultLauncher<Intent> launcher;
+    private ImageButton photoEnCours;
+
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_pieces);
 
-        gestionnaire = new GestionnaireEditPiece();
+        gestionnaire = new GestionnaireEditHabitat();
+
+        photoEnCours = null;
 
         //On récupère Habitat
         Intent intent = getIntent();
@@ -32,13 +42,50 @@ public class PiecesActivity extends AppCompatActivity {
                 this.habitat = habitat;
                 this.habitat.setCorrectly();
                 affichePieces();
-                /*
-                textView = findViewById(R.id.textViewPieces);
-                textView.setText(habitat.toString());
-
-                 */
             }
         }
+
+        launcher = registerForActivityResult(
+                // Contrat qui détermine le type de l'interaction
+                new ActivityResultContracts.StartActivityForResult(),
+                // Callback appelé lorsque le résultat sera disponible
+                new ActivityResultCallback<ActivityResult>() {
+                    @Override
+                    public void onActivityResult(ActivityResult result) {
+                        //On récupère les données de habitat
+                        Intent intent = result.getData();
+                        if(intent != null) {
+                            Bundle extras = intent.getExtras();
+                            Bitmap photoBitmap = (Bitmap) extras.get("data");
+
+                            //On vérifie que la photo a bien été prise
+                            //Toast.makeText(PiecesActivity.this, "hauteur de l'image : " + photoBitmap.getHeight(), Toast.LENGTH_SHORT);
+                            Log.i("testPhotoBitmap", "hauteur de l'image : " + photoBitmap.getHeight());
+
+                            gestionnaire.getMur(photoEnCours).setPhoto(photoBitmap);
+                            affichePieces();
+
+                            /*
+                            //On enregistre la photo
+                            FileOutputStream fos = null;
+                            try {
+                                fos = openFileOutput("image.data", MODE_PRIVATE);
+                                photoBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
+                                fos.flush();
+                                Log.i("MainActivity", "La photo a bien été enregistrée");
+                            } catch (FileNotFoundException e) {
+                                throw new RuntimeException(e);
+                            } catch (IOException e) {
+                                throw new RuntimeException(e);
+                            }
+
+                             */
+
+                        }
+
+                    }
+                }
+        );
     }
 
     private void affichePieces() {
@@ -50,7 +97,7 @@ public class PiecesActivity extends AppCompatActivity {
             editText.setText(piece.getNom());
             editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
             editText.setSingleLine();
-            gestionnaire.add(editText, piece);
+            gestionnaire.addEditText(editText, piece);
 
             editText.addTextChangedListener(new TextWatcher() {
                 @Override
@@ -72,7 +119,28 @@ public class PiecesActivity extends AppCompatActivity {
             TextView textView1 = new TextView(this);
             textView1.setText(piece.getMurs().toString());
             ll.addView(editText);
-            ll.addView(textView1);
+            //ll.addView(textView1);
+            for(Mur mur : piece.getMurs()){
+                LinearLayout llMur = new LinearLayout(this);
+                llMur.setOrientation(LinearLayout.HORIZONTAL);
+                ImageButton imageButton = new ImageButton(this);
+                imageButton.setMaxHeight(50);
+                imageButton.setMaxWidth(50);
+                imageButton.setImageBitmap(mur.getPhoto());
+                gestionnaire.addEditMur(imageButton, mur);
+                imageButton.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        photoEnCours = imageButton;
+                        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+                        if (intent.resolveActivity(getPackageManager()) != null){
+                            launcher.launch(intent);
+                        }
+                    }
+                });
+                llMur.addView(imageButton);
+                ll.addView(llMur);
+            }
         }
     }
 
diff --git a/app/src/main/java/habitat/GestionnaireEditHabitat.java b/app/src/main/java/habitat/GestionnaireEditHabitat.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc7483f82546d53ecf5c98cf541abf69215ef168
--- /dev/null
+++ b/app/src/main/java/habitat/GestionnaireEditHabitat.java
@@ -0,0 +1,41 @@
+package habitat;
+
+import android.widget.EditText;
+import android.widget.ImageButton;
+
+import java.util.HashMap;
+
+public class GestionnaireEditHabitat {
+
+    private HashMap<EditText, Piece> hmapEditText;
+    private HashMap<ImageButton, Mur> hmapEditMur;
+
+    public GestionnaireEditHabitat() {
+        hmapEditText = new HashMap<EditText, Piece>();
+        hmapEditMur = new HashMap<ImageButton, Mur>();
+    }
+
+    public void addEditText(EditText editText, Piece piece){
+        hmapEditText.put(editText, piece);
+    }
+
+    public Piece getPiece(EditText editText){
+        return hmapEditText.get(editText);
+    }
+
+    public void addEditMur(ImageButton imageButton, Mur mur){
+        hmapEditMur.put(imageButton, mur);
+    }
+
+    public Mur getMur(ImageButton imageButton){
+        return hmapEditMur.get(imageButton);
+    }
+
+
+
+    public void reset(){
+        hmapEditText.clear();
+        hmapEditMur.clear();
+    }
+
+}
diff --git a/app/src/main/java/habitat/GestionnaireEditPiece.java b/app/src/main/java/habitat/GestionnaireEditPiece.java
deleted file mode 100644
index 7d5b67cdb1dc7aa926b2fbd2966695b51932bea3..0000000000000000000000000000000000000000
--- a/app/src/main/java/habitat/GestionnaireEditPiece.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package habitat;
-
-import android.widget.EditText;
-
-import java.util.HashMap;
-
-public class GestionnaireEditPiece {
-
-    private HashMap<EditText, Piece> hmap;
-
-    public GestionnaireEditPiece() {
-        hmap = new HashMap<EditText, Piece>();
-    }
-
-    public void add(EditText editText, Piece piece){
-        hmap.put(editText, piece);
-    }
-
-    public Piece getPiece(EditText editText){
-        return hmap.get(editText);
-    }
-
-    public void reset(){
-        hmap.clear();
-    }
-
-}
diff --git a/app/src/main/java/habitat/Habitat.java b/app/src/main/java/habitat/Habitat.java
index 53c43556bbe9860e2a011363dbcb07cae0a7d5fd..9512983c96534f97a18fd53bb2125517653a2eb1 100644
--- a/app/src/main/java/habitat/Habitat.java
+++ b/app/src/main/java/habitat/Habitat.java
@@ -40,13 +40,6 @@ public class Habitat implements Parcelable {
         Mur murO = new Mur(piece1, Orientation.OUEST, this);
         piece1.setMurs(murS, murO, murN, murE);
         pieces.add(piece1);
-        Piece piece2 = new Piece("p2", this);
-        murN = new Mur(piece1, Orientation.NORD, this);
-        murE = new Mur(piece1, Orientation.EST, this);
-        murS = new Mur(piece1, Orientation.SUD, this);
-        murO = new Mur(piece1, Orientation.OUEST, this);
-        piece2.setMurs(murS, murO, murN, murE);
-        pieces.add(piece2);
     }
 
     public Habitat(Piece... pieces) {
diff --git a/app/src/main/java/habitat/Mur.java b/app/src/main/java/habitat/Mur.java
index 27203cca86c20526d1db17107b1e63a820ca00fa..1fc29a792ddfe4d2e827b743a70750f45913e62b 100644
--- a/app/src/main/java/habitat/Mur.java
+++ b/app/src/main/java/habitat/Mur.java
@@ -1,5 +1,6 @@
 package habitat;
 
+import android.graphics.Bitmap;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -8,11 +9,21 @@ public class Mur implements Parcelable {
     private Habitat habitat;
     private Piece piece;
     private Orientation orientation;
+    private Bitmap photo;
+
+    public Bitmap getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(Bitmap photo) {
+        this.photo = photo;
+    }
 
     public Mur(Piece piece, Habitat habitat) {
         this.habitat = habitat;
         this.piece = piece;
         this.orientation = Orientation.SUD;  //Par défaut
+        photo = null;
     }
 
     public Mur(Piece piece, Orientation orientation, Habitat habitat) {
@@ -23,6 +34,7 @@ public class Mur implements Parcelable {
 
     protected Mur(Parcel in) {
         orientation = (Orientation) in.readSerializable();
+        photo = in.readParcelable(Bitmap.class.getClassLoader());
     }
 
     public static final Creator<Mur> CREATOR = new Creator<Mur>() {
@@ -88,5 +100,6 @@ public class Mur implements Parcelable {
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeSerializable(orientation);
+        dest.writeParcelable(photo, flags);
     }
 }