diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index a6f427e..f3e3b37 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -1,5 +1,6 @@
plugins {
alias(libs.plugins.android.application)
+ alias(libs.plugins.google.gms.google.services)
}
android {
@@ -44,6 +45,13 @@ dependencies {
implementation(libs.navigation.fragment)
implementation(libs.navigation.ui)
implementation(libs.activity)
+ implementation(libs.firebase.ai)
+ implementation(libs.camera.camera2.pipe)
+ implementation(libs.firebase.auth)
+ implementation(libs.credentials)
+ implementation(libs.credentials.play.services.auth)
+ implementation(libs.googleid)
+ implementation(libs.mediarouter)
testImplementation(libs.junit)
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5803284..aef0ca7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,10 +12,16 @@
android:supportsRtl="true"
android:theme="@style/Theme.Cuida" >
+
+
diff --git a/app/src/main/java/com/example/cuida/ui/iniciar_sessao.java b/app/src/main/java/com/example/cuida/ui/Inicial/Criar_conta.java
similarity index 83%
rename from app/src/main/java/com/example/cuida/ui/iniciar_sessao.java
rename to app/src/main/java/com/example/cuida/ui/Inicial/Criar_conta.java
index 7ce7e97..36ed63b 100644
--- a/app/src/main/java/com/example/cuida/ui/iniciar_sessao.java
+++ b/app/src/main/java/com/example/cuida/ui/Inicial/Criar_conta.java
@@ -1,4 +1,4 @@
-package com.example.cuida.ui;
+package com.example.cuida.ui.Inicial;
import android.os.Bundle;
@@ -10,13 +10,13 @@ import androidx.core.view.WindowInsetsCompat;
import com.example.cuida.R;
-public class iniciar_sessao extends AppCompatActivity {
+public class Criar_conta extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
- setContentView(R.layout.activity_iniciar_sessao);
+ setContentView(R.layout.activity_criar_conta);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
diff --git a/app/src/main/java/com/example/cuida/ui/Inicial/Esqueci_a_palavra_passe.java b/app/src/main/java/com/example/cuida/ui/Inicial/Esqueci_a_palavra_passe.java
new file mode 100644
index 0000000..d3b757a
--- /dev/null
+++ b/app/src/main/java/com/example/cuida/ui/Inicial/Esqueci_a_palavra_passe.java
@@ -0,0 +1,26 @@
+package com.example.cuida.ui.Inicial;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+import com.example.cuida.R;
+
+public class Esqueci_a_palavra_passe extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_esqueci_apalavra_passe);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/cuida/ui/Inicial/iniciar_sessao.java b/app/src/main/java/com/example/cuida/ui/Inicial/iniciar_sessao.java
new file mode 100644
index 0000000..1e3ebf1
--- /dev/null
+++ b/app/src/main/java/com/example/cuida/ui/Inicial/iniciar_sessao.java
@@ -0,0 +1,125 @@
+package com.example.cuida.ui.Inicial;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.activity.EdgeToEdge;
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+import com.example.cuida.R;
+import com.example.cuida.ui.MainActivity;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
+import com.google.firebase.auth.AuthResult;
+import com.google.firebase.auth.FirebaseAuth;
+
+public class iniciar_sessao extends AppCompatActivity {
+ private ImageView imageView;
+ private EditText emailEditText;
+ private EditText palavraPasseEditText;
+ private Button entrarButton;
+ private Button criarContaButton;
+ private TextView bemVindoTextView;
+ private Button esqueciAPalavraPasseButton;
+
+ private FirebaseAuth mAuth;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_iniciar_sessao);
+
+ // Inicializar Firebase Auth
+ mAuth = FirebaseAuth.getInstance();
+
+ // Configuração do layout para Edge-to-Edge
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+
+ // Associar as Views
+ imageView = findViewById(R.id.imageView);
+ emailEditText = findViewById(R.id.emailEditText);
+ palavraPasseEditText = findViewById(R.id.palavraPasseEditText);
+ entrarButton = findViewById(R.id.entarButton);
+ criarContaButton = findViewById(R.id.criarContaButton);
+ bemVindoTextView = findViewById(R.id.bemVindoTextView);
+
+ // Definir o listener para o botão de criar conta
+ criarContaButton.setOnClickListener(v -> {
+ // Chama o método para criar a conta
+ criarConta();
+ });
+ }
+
+ /**
+ * Método para criar uma nova conta de utilizador.
+ */
+ private void criarConta() {
+ String email = emailEditText.getText().toString().trim();
+ String password = palavraPasseEditText.getText().toString().trim();
+
+ // 1. Validar as entradas do utilizador
+ if (email.isEmpty()) {
+ emailEditText.setError("O e-mail é obrigatório");
+ emailEditText.requestFocus();
+ return;
+ }
+
+ if (password.isEmpty()) {
+ palavraPasseEditText.setError("A palavra-passe é obrigatória");
+ palavraPasseEditText.requestFocus();
+ return;
+ }
+
+ if (password.length() < 6) {
+ palavraPasseEditText.setError("A palavra-passe deve ter no mínimo 6 caracteres");
+ palavraPasseEditText.requestFocus();
+ return;
+ }
+
+ // 2. Criar o utilizador no Firebase
+ mAuth.createUserWithEmailAndPassword(email, password)
+ .addOnCompleteListener(this, task -> {
+ if (task.isSuccessful()) {
+ // Se o registo for bem-sucedido
+ Log.d("FIREBASE_AUTH", "createUserWithEmail:success");
+ Toast.makeText(iniciar_sessao.this, "Conta criada com sucesso.", Toast.LENGTH_SHORT).show();
+
+ // Navega para a MainActivity
+ navegarParaMainActivity();
+
+ } else {
+ // Se o registo falhar
+ Log.w("FIREBASE_AUTH", "createUserWithEmail:failure", task.getException());
+ // Mostra uma mensagem de erro mais específica
+ String errorMessage = task.getException() != null ? task.getException().getMessage() : "Erro desconhecido.";
+ Toast.makeText(iniciar_sessao.this, "Falha na autenticação: " + errorMessage, Toast.LENGTH_LONG).show();
+ }
+ });
+ }
+
+ /**
+ * Navega para a MainActivity e limpa a pilha de atividades.
+ */
+ private void navegarParaMainActivity() {
+ Intent intent = new Intent(iniciar_sessao.this, MainActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivity(intent);
+ finish(); // Finaliza a atividade atual
+ }
+}
diff --git a/app/src/main/java/com/example/cuida/MainActivity.java b/app/src/main/java/com/example/cuida/ui/MainActivity.java
similarity index 89%
rename from app/src/main/java/com/example/cuida/MainActivity.java
rename to app/src/main/java/com/example/cuida/ui/MainActivity.java
index d32294d..15b8795 100644
--- a/app/src/main/java/com/example/cuida/MainActivity.java
+++ b/app/src/main/java/com/example/cuida/ui/MainActivity.java
@@ -1,7 +1,8 @@
-package com.example.cuida;
+package com.example.cuida.ui;
import android.os.Bundle;
+import com.example.cuida.R;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.appcompat.app.AppCompatActivity;
@@ -27,7 +28,7 @@ public class MainActivity extends AppCompatActivity {
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
- R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
+ R.id.navigation_inicio, R.id.navigation_dashboard, R.id.navigation_notifications)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
diff --git a/app/src/main/res/layout/activity_criar_conta.xml b/app/src/main/res/layout/activity_criar_conta.xml
new file mode 100644
index 0000000..01e6cda
--- /dev/null
+++ b/app/src/main/res/layout/activity_criar_conta.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_esqueci_apalavra_passe.xml b/app/src/main/res/layout/activity_esqueci_apalavra_passe.xml
new file mode 100644
index 0000000..aaff33d
--- /dev/null
+++ b/app/src/main/res/layout/activity_esqueci_apalavra_passe.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_iniciar_sessao.xml b/app/src/main/res/layout/activity_iniciar_sessao.xml
index fad58ee..69a7cfd 100644
--- a/app/src/main/res/layout/activity_iniciar_sessao.xml
+++ b/app/src/main/res/layout/activity_iniciar_sessao.xml
@@ -5,6 +5,103 @@
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".ui.iniciar_sessao">
+ tools:context=".ui.Inicial.iniciar_sessao">
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 3825f7e..b5d9cad 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -30,4 +30,5 @@
app:layout_constraintTop_toTopOf="parent"
app:navGraph="@navigation/mobile_navigation" />
-
\ No newline at end of file
+
+
diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml
index fb6d040..a058270 100644
--- a/app/src/main/res/menu/bottom_nav_menu.xml
+++ b/app/src/main/res/menu/bottom_nav_menu.xml
@@ -1,11 +1,17 @@
-