a ia esta a dar eero

This commit is contained in:
2026-04-21 17:09:05 +01:00
parent 97cb615f69
commit d3e2af3a66
45 changed files with 716 additions and 801 deletions

View File

@@ -60,11 +60,10 @@ dependencies {
// Location
implementation 'com.google.android.gms:play-services-location:21.0.1'
// Biblioteca oficial do Google AI para Java/Android (versão 0.11.0 - Última Estável)
implementation 'com.google.ai.client.generativeai:generativeai:0.11.0'
// Biblioteca oficial do Google AI para Java/Android (versão 0.9.0 - Estável para Java)
implementation 'com.google.ai.client.generativeai:generativeai:0.9.0'
// Necessário para lidar com operações assíncronas (Guava)
implementation 'com.google.common.util.concurrent.ListenableFuture:9999.0-empty-to-avoid-conflict-with-guava'
implementation 'com.google.guava:guava:31.1-android'
// Para chamadas de rede e JSON

View File

@@ -1,4 +1,4 @@
#Tue Apr 21 16:18:45 WEST 2026
#Tue Apr 21 17:07:01 WEST 2026
com.example.cuida.app-main-56\:/drawable-v26/ic_launcher_final.xml=/Users/230405/Desktop/papcuida/app/build/intermediates/merged_res/debug/mergeDebugResources/drawable-v26_ic_launcher_final.xml.flat
com.example.cuida.app-main-56\:/drawable/bg_search_results.xml=/Users/230405/Desktop/papcuida/app/build/intermediates/merged_res/debug/mergeDebugResources/drawable_bg_search_results.xml.flat
com.example.cuida.app-main-56\:/drawable/btn_outline_error.xml=/Users/230405/Desktop/papcuida/app/build/intermediates/merged_res/debug/mergeDebugResources/drawable_btn_outline_error.xml.flat

View File

@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="16dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp"
android:gravity="center_vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@android:drawable/ic_menu_agenda"
app:tint="@color/secondary_color"
android:layout_marginEnd="16dp"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<TextView
android:id="@+id/text_med_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nome Medicamento"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/primary_color"/>
<TextView
android:id="@+id/text_med_dosage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dosagem"
android:layout_marginTop="4dp"/>
<TextView
android:id="@+id/text_med_notes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Observações"
android:textStyle="italic"
android:textSize="12sp"
android:layout_marginTop="2dp"/>
<TextView
android:id="@+id/text_med_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HH:mm"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="@color/black"
android:layout_marginTop="6dp"/>
</LinearLayout>
<CheckBox
android:id="@+id/checkbox_taken"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:buttonTint="@color/primary_color"/>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>

View File

@@ -1,4 +1,4 @@
#Tue Apr 21 16:42:34 WEST 2026
#Tue Apr 21 17:07:50 WEST 2026
base.0=/Users/230405/Desktop/papcuida/app/build/intermediates/dex/debug/mergeExtDexDebug/classes.dex
base.1=/Users/230405/Desktop/papcuida/app/build/intermediates/dex/debug/mergeProjectDexDebug/0/classes.dex
base.10=/Users/230405/Desktop/papcuida/app/build/intermediates/global_synthetics_dex/debug/generateDebugGlobalSynthetics/classes.dex

File diff suppressed because one or more lines are too long

View File

@@ -7,14 +7,14 @@
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_dialog_add_medication.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/dialog_add_medication.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_item_medication.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/item_medication.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_activity_forgot_password.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/activity_forgot_password.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_item_medication.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/item_medication.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/menu_bottom_nav_menu.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/menu/bottom_nav_menu.xml"
@@ -27,10 +27,6 @@
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_item_comprimido_search.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/item_comprimido_search.xml"
},
{
"merged": "com.example.cuida.app-debug-54:/layout_item_medication.xml.flat",
"source": "com.example.cuida.app-main-56:/layout/item_medication.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_fragment_home.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/fragment_home.xml"
@@ -43,6 +39,10 @@
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/drawable_ic_launcher_round.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/drawable/ic_launcher_round.xml"
},
{
"merged": "com.example.cuida.app-debug-54:/drawable_btn_outline_error.xml.flat",
"source": "com.example.cuida.app-main-56:/drawable/btn_outline_error.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/drawable_ic_logo.png.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/drawable/ic_logo.png"
@@ -71,6 +71,10 @@
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_item_time_slot.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/item_time_slot.xml"
},
{
"merged": "com.example.cuida.app-debug-54:/drawable_btn_outline_primary.xml.flat",
"source": "com.example.cuida.app-main-56:/drawable/btn_outline_primary.xml"
},
{
"merged": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-debug-54:/layout_activity_reset_password.xml.flat",
"source": "/Users/230405/.gradle/daemon/9.4.1/com.example.cuida.app-main-56:/layout/activity_reset_password.xml"

View File

@@ -1,23 +1,16 @@
package com.example.cuida.services;
// Imports básicos do SDK do Google AI
import com.google.ai.client.generativeai.GenerativeModel;
import com.google.ai.client.generativeai.java.GenerativeModelFutures;
// Imports de tipos e configurações
import com.google.ai.client.generativeai.type.BlockThreshold;
import com.google.ai.client.generativeai.type.Content;
import com.google.ai.client.generativeai.type.GenerateContentResponse;
import com.google.ai.client.generativeai.type.GenerationConfig;
import com.google.ai.client.generativeai.type.HarmCategory;
import com.google.ai.client.generativeai.type.SafetySetting;
// Imports do Guava para processamento assíncrono
import com.google.ai.client.generativeai.type.BlockThreshold;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
// Imports standard de Java
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Executor;
@@ -27,7 +20,7 @@ public class Gemini {
private final GenerativeModelFutures modelo;
public Gemini() {
// 1. Configurar Segurança
// 1. Configurar Segurança (Padrão para evitar bloqueio de termos médicos)
List<SafetySetting> safetySettings = Arrays.asList(
new SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.NONE),
new SafetySetting(HarmCategory.HATE_SPEECH, BlockThreshold.NONE),
@@ -35,16 +28,11 @@ public class Gemini {
new SafetySetting(HarmCategory.DANGEROUS_CONTENT, BlockThreshold.NONE)
);
// 2. Configuração de Geração
GenerationConfig config = new GenerationConfig.Builder()
.setTemperature(0.7f)
.build();
// 3. Inicialização do Modelo (Gemini 1.5 Flash)
// 2. Modelo (Simplificado ao máximo para garantir compilação)
GenerativeModel generativeModel = new GenerativeModel(
"gemini-1.5-flash",
"AIzaSyBmLgn-SHaTDvAeDWsw2iTZRR9gahhOu7k",
config,
null, // Usamos o GenerationConfig padrão para evitar erro de setTemperature
safetySettings
);
@@ -70,7 +58,7 @@ public class Gemini {
if (resultado != null && resultado.getText() != null) {
callback.onSuccess(resultado.getText());
} else {
callback.onError(new Exception("IA não devolveu texto."));
callback.onError(new Exception("Resposta vazia da IA"));
}
}

View File

@@ -47,7 +47,7 @@ public class MedicationViewModel extends AndroidViewModel {
if (value != null) {
for (QueryDocumentSnapshot doc : value) {
Medication med = doc.toObject(Medication.class);
med.id = doc.getId(); // Ensure ID is set
med.setId(doc.getId()); // Ensure ID is set
meds.add(med);
}
}
@@ -92,25 +92,25 @@ public class MedicationViewModel extends AndroidViewModel {
}
public void update(Medication medication) {
if (auth.getCurrentUser() == null || medication.id == null)
if (auth.getCurrentUser() == null || medication.getId() == null)
return;
String userId = auth.getCurrentUser().getUid();
medication.userId = userId;
db.collection("medicamentos")
.document(medication.id)
.document(medication.getId())
.set(medication)
.addOnSuccessListener(aVoid -> Log.d("MedicationViewModel", "Medication updated"))
.addOnFailureListener(e -> Log.w("MedicationViewModel", "Error updating medication", e));
}
public void delete(Medication medication) {
if (auth.getCurrentUser() == null || medication.id == null)
if (auth.getCurrentUser() == null || medication.getId() == null)
return;
db.collection("medicamentos")
.document(medication.id)
.document(medication.getId())
.delete()
.addOnSuccessListener(aVoid -> Log.d("MedicationViewModel", "Medication deleted"))
.addOnFailureListener(e -> Log.w("MedicationViewModel", "Error deleting medication", e));

File diff suppressed because one or more lines are too long