diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 45d35d5..436c1da 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,6 +19,9 @@ + diff --git a/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java b/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java index 6497fc9..edf3a30 100644 --- a/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java +++ b/app/src/main/java/com/example/lifegrid/DefinicoesActivity.java @@ -116,6 +116,24 @@ public class DefinicoesActivity extends AppCompatActivity { }); } + TextView tvTerms = findViewById(R.id.tvTerms); + if (tvTerms != null) { + tvTerms.setOnClickListener(v -> { + Intent intent = new Intent(DefinicoesActivity.this, TermosPoliticasActivity.class); + intent.putExtra("tipo_documento", "terms"); + startActivity(intent); + }); + } + + TextView tvPrivacy = findViewById(R.id.tvPrivacy); + if (tvPrivacy != null) { + tvPrivacy.setOnClickListener(v -> { + Intent intent = new Intent(DefinicoesActivity.this, TermosPoliticasActivity.class); + intent.putExtra("tipo_documento", "privacy"); + startActivity(intent); + }); + } + btnBack.setOnClickListener(v -> { finish(); }); diff --git a/app/src/main/java/com/example/lifegrid/TermosPoliticasActivity.java b/app/src/main/java/com/example/lifegrid/TermosPoliticasActivity.java new file mode 100644 index 0000000..21fd3fa --- /dev/null +++ b/app/src/main/java/com/example/lifegrid/TermosPoliticasActivity.java @@ -0,0 +1,50 @@ +package com.example.lifegrid; + +import android.os.Bundle; +import android.widget.ImageView; +import android.widget.TextView; +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.text.HtmlCompat; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +public class TermosPoliticasActivity extends AppCompatActivity { + + private ImageView btnBack; + private TextView tvTitle; + private TextView tvContent; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_termos_politicas); + + 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; + }); + + btnBack = findViewById(R.id.btnBack); + tvTitle = findViewById(R.id.tvTitle); + tvContent = findViewById(R.id.tvContent); + + btnBack.setOnClickListener(v -> finish()); + + String tipoDocumento = getIntent().getStringExtra("tipo_documento"); + if (tipoDocumento != null) { + if (tipoDocumento.equals("terms")) { + tvTitle.setText(R.string.terms_title); + String htmlText = getString(R.string.terms_content); + tvContent.setText(HtmlCompat.fromHtml(htmlText, HtmlCompat.FROM_HTML_MODE_LEGACY)); + } else if (tipoDocumento.equals("privacy")) { + tvTitle.setText(R.string.privacy_title); + String htmlText = getString(R.string.privacy_content); + tvContent.setText(HtmlCompat.fromHtml(htmlText, HtmlCompat.FROM_HTML_MODE_LEGACY)); + } + } + } +} diff --git a/app/src/main/res/layout/activity_termos_politicas.xml b/app/src/main/res/layout/activity_termos_politicas.xml new file mode 100644 index 0000000..7282083 --- /dev/null +++ b/app/src/main/res/layout/activity_termos_politicas.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c930fd4..9bddbb1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -43,4 +43,52 @@ USD ($) BRL (R$) + Termos e Condições + 1. Introdução +

Bem-vindo ao LifeGrid. Ao descarregar, instalar ou utilizar a nossa aplicação, o utilizador concorda e aceita cumprir integralmente os presentes Termos e Condições de Serviço.

+ +

2. Descrição do Serviço

+

O LifeGrid é uma aplicação de gestão de finanças pessoais concebida para ajudar os utilizadores a registar e categorizar transações financeiras, gerir e monitorizar ativos, estabelecer metas financeiras e guardar faturas ou outros documentos comprovativos associados às suas finanças.

+ +

3. Registo e Segurança da Conta

+

Para usufruir de todas as funcionalidades da aplicação, é necessária a criação de uma conta de utilizador através de um endereço de correio eletrónico válido e uma palavra-passe. O utilizador é o único responsável por manter a confidencialidade das suas credenciais de acesso, bem como por qualquer atividade realizada sob a sua conta.

+ +

4. Propriedade Intelectual

+

Todo o design, código-fonte, elementos gráficos, logótipos e conteúdos da aplicação LifeGrid são propriedade exclusiva da equipa de desenvolvimento e protegidos por leis de direitos de autor nacionais e internacionais.

+ +

5. Uso Aceitável e Proibições

+

O utilizador compromete-se a não utilizar o LifeGrid para qualquer fim ilegal, fraudulento ou não autorizado. É estritamente proibido interferir com a segurança dos servidores e bases de dados da infraestrutura (Firebase), ou tentar contornar quaisquer mecanismos de segurança da aplicação.

+ +

6. Limitação de Responsabilidade

+

O LifeGrid é fornecido "tal como está" e "conforme disponível". Não garantimos que a aplicação funcione de forma ininterrupta ou isenta de erros. As decisões financeiras tomadas com base nas informações apresentadas na aplicação são da inteira e exclusiva responsabilidade do utilizador. O LifeGrid não constitui ou substitui qualquer aconselhamento financeiro profissional.

+ +

7. Alterações aos Termos

+

Reservamo-nos o direito de alterar ou atualizar estes Termos e Condições a qualquer momento. Quaisquer atualizações serão publicadas nesta secção e o uso continuado da aplicação constitui a aceitação tácita das novas condições.

+ ]]>
+ Política de Privacidade + 1. Informações que Recolhemos +

Recolhemos os dados que nos faculta ativamente ao registar-se e utilizar a aplicação. Estes incluem:

+
    +
  • Dados de Registo: Nome de utilizador e endereço de correio eletrónico.
  • +
  • Dados Financeiros: Transações registadas, montantes, categorias, ativos introduzidos e metas estabelecidas.
  • +
  • Documentos: Faturas e outros comprovativos fotográficos que decida associar às suas transações.
  • +
+ +

2. Finalidade do Tratamento de Dados

+

Os dados recolhidos destinam-se única e exclusivamente a permitir o funcionamento adequado da aplicação LifeGrid, permitindo-lhe gerir a sua carteira, analisar gráficos de despesas/receitas, acompanhar o progresso de metas e guardar comprovativos digitais.

+ +

3. Armazenamento e Segurança dos Dados

+

Para garantir o armazenamento seguro dos seus dados, o LifeGrid utiliza a plataforma cloud Google Firebase (incluindo Firebase Authentication para gestão de identidade, Firebase Realtime Database para sincronização de dados e Firebase Storage para armazenamento de imagens). Implementamos práticas de segurança adequadas para prevenir o acesso não autorizado, alteração ou eliminação dos seus dados.

+ +

4. Partilha de Dados com Terceiros

+

O LifeGrid não partilha, vende, aluga ou comercializa os seus dados pessoais com terceiros para quaisquer fins comerciais ou de marketing. Os dados são transferidos apenas para os servidores do Firebase para efeitos estritos de alojamento e sincronização.

+ +

5. Direitos do Utilizador

+

O utilizador tem controlo total sobre os seus dados, podendo adicionar, editar ou apagar as suas transações, faturas e detalhes de conta a qualquer momento. Se desejar eliminar permanentemente a sua conta e todos os dados associados dos nossos servidores, pode fazê-lo contactando-nos ou solicitando a eliminação.

+ +

6. Alterações a esta Política

+

Podemos atualizar esta Política de Privacidade periodicamente para refletir mudanças nas nossas práticas ou por razões operacionais/legais. Recomendamos a consulta regular desta secção para se manter informado.

+ ]]>
\ No newline at end of file diff --git a/fluxograma_aplicacao.md b/fluxograma_aplicacao.md new file mode 100644 index 0000000..d45c491 --- /dev/null +++ b/fluxograma_aplicacao.md @@ -0,0 +1,37 @@ +# Sistemas e Aplicações da LifeGrid (Super Simplificado) + +Este diagrama mostra apenas as aplicações, serviços e bases de dados externas utilizadas no funcionamento do **LifeGrid** e como a informação passa entre elas. + +## Fluxo de Informação entre Serviços (Mermaid) + +```mermaid +flowchart LR + %% Aplicação Central + App[Aplicação Android
LifeGrid] + + %% Serviços de Autenticação + App <-->|1. Autenticação e Sessão| Auth[Firebase Authentication] + + %% Inteligência Artificial + App -->|2. Imagem da Fatura| Gemini[Gemini API
Google AI SDK] + Gemini -->|Dados Extraídos| App + + %% Alojamento de Imagens + App -->|3. Ficheiro de Fatura| Storage[Firebase Storage] + Storage -->|URL do Ficheiro| App + + %% Base de Dados + App <-->|4. Transações, Ativos e Metas| Database[Firebase Realtime Database] + + %% Estilos simples com fundo branco + classDef whiteBackground fill:#FFFFFF,stroke:#000000,stroke-width:1.5dp,color:#000000; + class App,Auth,Gemini,Storage,Database whiteBackground; +``` + +--- + +### Como a informação passa: +1. **Firebase Authentication**: Controla o acesso à aplicação (Login/Registo). +2. **Gemini API (Google AI)**: Recebe a imagem da fatura enviada pela app e devolve os dados estruturados (valor, data, descrição). +3. **Firebase Storage**: Recebe e armazena os ficheiros de imagem das faturas digitalizadas. +4. **Firebase Realtime Database**: Guarda e sincroniza em tempo real todos os dados financeiros (saldos, metas, ativos e referências dos documentos).