From bcd9bcc4f2943d68a217cbcc23eba92a94bfc30c Mon Sep 17 00:00:00 2001 From: 230415 <230415@epvc.pt> Date: Mon, 4 May 2026 14:23:43 +0100 Subject: [PATCH] design --- app/src/main/AndroidManifest.xml | 10 ++++++ .../example/lifegrid/DefinicoesActivity.java | 33 +++++++++++++++++-- app/src/main/res/xml/file_paths.xml | 5 +++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/xml/file_paths.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f09a15c..1d05aab 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,6 +34,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java b/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java index 7a77fa9..2860e2b 100644 --- a/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java +++ b/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java @@ -10,6 +10,10 @@ import android.widget.Switch; import android.widget.TextView; import android.widget.Toast; +import androidx.appcompat.app.AlertDialog; +import androidx.core.content.FileProvider; +import java.io.File; + import androidx.activity.EdgeToEdge; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; @@ -39,6 +43,8 @@ public class DefinicoesActivity extends AppCompatActivity { private Uri selectedImageUri; private ActivityResultLauncher pickImageLauncher; + private ActivityResultLauncher takePictureLauncher; + private Uri photoUri; @Override protected void onCreate(Bundle savedInstanceState) { @@ -69,8 +75,16 @@ public class DefinicoesActivity extends AppCompatActivity { } }); - tvChangePhoto.setOnClickListener(v -> pickImageLauncher.launch("image/*")); - ivProfilePicture.setOnClickListener(v -> pickImageLauncher.launch("image/*")); + takePictureLauncher = registerForActivityResult(new ActivityResultContracts.TakePicture(), + success -> { + if (success) { + selectedImageUri = photoUri; + ivProfilePicture.setImageURI(selectedImageUri); + } + }); + + tvChangePhoto.setOnClickListener(v -> showPhotoOptionsDialog()); + ivProfilePicture.setOnClickListener(v -> showPhotoOptionsDialog()); SharedPreferences prefs = getSharedPreferences("LifeGridPrefs", Context.MODE_PRIVATE); String savedName = prefs.getString("username", ""); @@ -123,4 +137,19 @@ public class DefinicoesActivity extends AppCompatActivity { finish(); }); } + private void showPhotoOptionsDialog() { + String[] options = {"Tirar fotografia", "Escolher da galeria de fotos"}; + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("Alterar fotografia de perfil"); + builder.setItems(options, (dialog, which) -> { + if (which == 0) { + File photoFile = new File(getCacheDir(), "profile_photo.jpg"); + photoUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", photoFile); + takePictureLauncher.launch(photoUri); + } else if (which == 1) { + pickImageLauncher.launch("image/*"); + } + }); + builder.show(); + } } diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..1338e6c --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,5 @@ + + + + +