Aplicativo para Gerenciamento de Energia
Aplicativo para Gerenciamento de Energia
ETEC COTIA
CURSO TÉCNICO EM DESENVOLVIMENTO DE SISTEMAS
COTIA
2024
ARTHUR PERES CREPALDI
KAROLAYNE LOPES DOS SANTOS
KAROLYNE LOPES DOS SANTOS
MANUELLA DOS REIS BAPTISTA
MARIA CLARA FERREIRA NUNES
COTIA
2024
ARTHUR PERES CREPALDI
KAROLAYNE LOPES DOS SANTOS
KAROLYNE LOPES DOS SANTOS
MANUELLA DOS REIS BAPTISTA
MARIA CLARA FERREIRA NUNES
Conceito: ______________________________
Banca de Validação:
Orientador
___________________________________
Professor ............................................................
____________________________________
Professor ............................................................
COTIA
2024
DEDICATÓRIA
Gráficos
Figura 1 - Consumo de energia elétrica no Brasil.............................................8
Diagramas
Figura 5 - Diagrama de Ishikawa....................................................................13
Fluxogramas
Figura 17 - Fluxograma completo...................................................................32
Capturas de tela
Figura 20 - Tela de Splash............................................................................217
Elaborada de acordo com a ordem apresentada no texto. Cada item deve ser
designado por seu nome específico, título e respectivo número da folha ou página
LISTAS DE ABREVIATUAS E SIGLAS
1. INTRODUÇÃO..............................................................................................................
2. FUNDAMENTAÇÃO TEÓRICA....................................................................................
1.1.1 Tema geral.......................................................................................................................
2.1.1 Tema específico...............................................................................................................
3. METODOLOGIA...........................................................................................................
4. DISCUSSÃO DOS RESULTADOS...............................................................................
Detalhes dos Instrumentos.........................................................................................................
Análise dos Dados......................................................................................................................
5. DOCUMENTAÇÃO DO SOFTWARE...........................................................................
3.1.1 Regras de Negócio...........................................................................................................
4.1.1 Requisitos Funcionais......................................................................................................
5.1.1 Requisitos Não Funcionais...............................................................................................
6.1.1 Requisitos Minimos..........................................................................................................
7.1.1 Fluxograma.......................................................................................................................
8.1.1 Algoritmo e/ou scripts comentado....................................................................................
9.1.1 Capturas de Telas..........................................................................................................
10.1.1 Diagrama de Caso de Uso..........................................................................................
11.1.1 Diagrama UML............................................................................................................
12.1.1 Modelo Lógico do Banco de Dados............................................................................
13.1.1 Modelo Conceitual do Banco de Dados......................................................................
14.1.1 Modelo Físico do Banco de Dados.............................................................................
15.1.1 Manuais do Programa.................................................................................................
16.1.1 Ciclo de Vida do Programa.........................................................................................
6. CONSIDERAÇÕES FINAIS........................................................................................
REFERÊNCIAS........................................................................................................................
GLOSSÁRIO............................................................................................................................
APÊNDICE(S)..........................................................................................................................
ANEXO(S)................................................................................................................................
8
1. INTRODUÇÃO
Fonte: EIA
Atualmente, o Brasil enfrenta grandes desafios no setor energético, com
destaque no alto consumo e desperdício de energia. O consumo inconsciente de
energia é uma preocupação devido à crescente demanda por eletricidade e à
necessidade de proteger o meio ambiente. A energia elétrica é um dos insumos
mais caros da indústria e a alta demanda, devido ao desperdício, a torna ainda mais
cara. Em um levantamento da Associação Brasileira de Empresas de Conservação
de Energia (ABESCO), é indicado que entre 2015 e 2017 o Brasil sofreu perdas
energéticas de aproximadamente 61,7 bilhões de reais, valor que seria suficiente
para construir 240 hospitais.
Fonte: GOV
Fonte: ABRACE
Fonte:
FIESC & Consórcio
Norte Energia
Considerando o
cenário de desafios
enfrentados pelo
Sistema Interligado
Nacional (SIN), como
a dependência de
hidrelétricas e a
vulnerabilidade a
crises de
abastecimento, é
essencial adotar medidas que previnam crises e sobrecargas energéticas. É
importante que as pessoas entendam que o consumo elevado exige impostos mais
elevados, pode provocar sobrecargas na matriz energética brasileira e deixar o país
propício a uma crise. O desenvolvimento de um aplicativo que ajude o usuário a
monitorar o consumo de energia elétrica de forma sustentável e organizada
simplifica a administração e permite escolhas mais seguras, reduzindo a demanda
excessiva, os riscos de colapso do sistema em períodos críticos e contribuindo para
a preservação dos recursos naturais.
12
2. FUNDAMENTAÇÃO TEÓRICA
Eficiência significa fazer mais (ou, pelo menos, a mesma coisa) com menos,
mantendo o conforto e a qualidade. Quando se discute energia e eficiência
energética, trata-se de gerar a mesma quantidade de energia com menos recursos
naturais ou obter o mesmo serviço com menos energia. O objetivo central é utilizar a
energia elétrica de maneira eficaz, reduzindo desperdícios e otimizando o consumo.
Design de Interfaces
1. Relevância:
As fontes utilizadas, são altamente relevantes, pois fornecem uma base sólida
para compreender a eficiência energética e o comportamento do consumidor.
2. Credibilidade:
As fontes acadêmicas e estudos revisados foram selecionados para garantir a
credibilidade. Foram priorizados artigos e sites confiáveis para garantir a qualidade
da informação.
Identificação de Lacunas
3. METODOLOGIA
Materias utilizados
Equipamentos Empregados
Método de Amostragem
Dados Coletados
Procedimento de Coleta
Gráficos
Figura 7: gráfico 1
23
Figura 8: gráfico 2
Figura 9: gráfico 3
5. DOCUMENTAÇÃO DO SOFTWARE
Minimo 3
Minimo 5
Minimo 10
7.1.1 Fluxograma
Figura 17: fluxograma completo
34
Adicionando_dispositivos.java:
package [Link];
import [Link];
37
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
38
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
private static final double TARIFA = 0.636240; // Tarifa de custo por unidade
@Override
[Link](savedInstanceState);
setContentView([Link].activity_adicionando_dispositivos);
auth = [Link]();
firestore = [Link]();
nomeEditText = findViewById([Link]);
40
potenciaEditText = findViewById([Link]);
tempoEditText = findViewById([Link]);
custoEditText = findViewById([Link]);
tempoUsoSpinner = findViewById([Link]);
nomeSpinner = findViewById([Link]);
quantidadeEditText = findViewById([Link]);
gastoKWhEditText = findViewById([Link]);
custoDiarioEditText = findViewById([Link]);
gastoDiarioKWhEditText = findViewById([Link]);
ArrayAdapter<CharSequence> adapter =
[Link](this,
[Link].tempo_uso_opcoes, [Link].simple_spinner_item);
[Link]([Link].simple_spinner_dr
opdown_item);
[Link](adapter);
[Link](new
[Link]() {
@Override
@Override
});
[Link](this::showPopupMenu);
[Link](new DeviceInfoTextWatcher());
[Link](new
DeviceInfoTextWatcher());
[Link](new DeviceInfoTextWatcher());
[Link](new
DeviceInfoTextWatcher());
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
43
[Link]([Link]);
}, 100);
[Link]("dispositivos").get().addOnCompleteListener(task -> {
if ([Link]()) {
if (imagemObj != null) {
} else {
}
44
[Link]().clear();
[Link]().add(0, i, 0, [Link](i).getName());
[Link](item -> {
[Link]([Link]);
[Link]([Link]);
[Link]([Link]());
[Link]([Link]([Link]
()));
45
return true;
} else {
return false;
});
[Link](menu -> {
[Link]([Link]);
[Link]([Link]);
});
// Exibe o menu
[Link]();
} else {
[Link]([Link]);
[Link]([Link]);
});
[Link](dialogView);
[Link]("OK", null);
[Link]();
@Override
@Override
validateAndCalculateCost();
@Override
if ([Link]() || [Link]() ||
[Link]()) {
[Link]("R$ 00,00");
[Link]("0 KWh");
[Link]("R$ 00,00");
[Link]("0 KWh");
return;
double potencia;
double tempo;
int quantidade;
try {
potencia = [Link](potenciaString);
} catch (NumberFormatException e) {
return;
try {
49
tempo = [Link](tempoString);
} catch (NumberFormatException e) {
return;
try {
quantidade = [Link](quantidadeString);
} catch (NumberFormatException e) {
return;
if ([Link]("minutos/dia")) {
return;
} else if ([Link]("horas/dia")) {
return;
} else {
return;
if (isSaving) {
return;
isSaving = true;
[Link](false);
52
if (tag != null) {
imagemUrl = [Link]();
isSaving = false;
[Link](true);
return;
}
53
double potencia;
double tempo;
int quantidade;
try {
potencia = [Link](potenciaString);
} catch (NumberFormatException e) {
isSaving = false;
[Link](true);
return;
try {
tempo = [Link](tempoString);
} catch (NumberFormatException e) {
isSaving = false;
[Link](true);
return;
54
try {
quantidade = [Link](quantidadeString);
} catch (NumberFormatException e) {
isSaving = false;
[Link](true);
return;
if ([Link]("horas/dia")) {
isSaving = false;
[Link](true);
return;
} else if ([Link]("minutos/dia")) {
isSaving = false;
[Link](true);
return;
} else {
isSaving = false;
[Link](true);
return;
[Link]("Nome", nome);
[Link]("Potência", potencia);
[Link]("Tempo", tempo);
[Link]("Quantidade", quantidade);
[Link]("CustoDiario", custoDiario);
[Link]("GastoDiarioKwh", gastoDiarioKWhInt);
[Link]("CustoMensal", custoMensal);
[Link]("GastoMensalKwh", gastoMensalKWhInt);
[Link]("ImagemUrl", imagemUrl);
[Link]("UnidadeTempo", unidadeTempo);
DocumentReference dispositivoRef =
[Link]("usuarios").document(userId)
.collection("dispositivos").document(mesAno)
.collection("dispositivos").document();
[Link](deviceData).addOnSuccessListener(aVoid -> {
}).addOnFailureListener(e -> {
}).addOnCompleteListener(task -> {
isSaving = false;
[Link](true);
});
DocumentReference monthRef =
[Link]("usuarios").document(userId)
58
.collection("dados_mensais").document(mesAno);
[Link]().addOnCompleteListener(task -> {
if ([Link]()) {
double totalTempo = 0;
int totalQuantidade = 0;
if ([Link]().exists()) {
if (data != null) {
if ([Link]("Tempo")) {
if ([Link]("Quantidade")) {
totalQuantidade = ((Number)
[Link]("Quantidade")).intValue();
totalTempo += tempo;
totalQuantidade += quantidade;
59
[Link]("Tempo", totalTempo);
[Link]("Quantidade", totalQuantidade);
[Link](monthlyData,
[Link]()).addOnCompleteListener(task1 -> {
if ([Link]()) {
} else {
});
} else {
});
DocumentReference totalRef =
[Link]("usuarios").document(userId)
.collection("gastos").document(mesAno);
[Link]().addOnCompleteListener(task -> {
if ([Link]()) {
double total = 0;
if ([Link]().exists()) {
total += custoMensal;
[Link]("Total", total);
[Link](totalData,
[Link]()).addOnCompleteListener(totalTask -> {
if ([Link]()) {
} else {
});
} else {
});
try {
[Link](this)
[Link](imageUrl);
} catch (Exception e) {
[Link]();
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
}, 3000);
Alterando_email.java:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
65
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
mAuth = [Link]();
firestore = [Link]();
[Link](findViewById([Link]),
(v, insets) -> {
Insets systemBars =
[Link]([Link]());
return insets;
});
editTextEmail = findViewById([Link]);
editTextPassword = findViewById([Link].editTextTextPassword2);
buttonConfirmar = findViewById([Link].button3);
progressBar = findViewById([Link]);
textViewEmailAtual = findViewById([Link].textView6);
textViewVerificar = findViewById([Link].textView5);
loadingOverlay = findViewById([Link]);
configurarEmailAtual();
67
if (user != null) {
} else {
if ([Link](senha)) {
return;
[Link]([Link]); // Mostra a
sobreposição de carregamento
if (user != null) {
AuthCredential credential =
[Link]([Link](), senha);
[Link]([Link]); // Oculta a
sobreposição de carregamento
69
if ([Link]()) {
} else {
}).addOnFailureListener(e -> {
[Link]([Link]); // Oculta a
sobreposição de carregamento
});
} else {
[Link]([Link]); // Oculta a
sobreposição de carregamento
if () {
[Link](novoEmail).addOnCompleteListener(task -> {
if ([Link]()) {
[Link]().addOnCompleteListener(verificati
onTask -> {
if ([Link]()) {
atualizarEmailNoFirestore([Link](), novoEmail); //
Atualiza o e-mail no Firestore
71
} else {
});
} else {
}).addOnFailureListener(e -> {
});
} else {
} else {
[Link]("users").document(userId).update("email", novoEmail)
.addOnCompleteListener(task -> {
if ([Link]()) {
} else {
}).addOnFailureListener(e -> {
});
Alterando_senha,java:
package [Link];
import [Link];
73
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
[Link](findViewById([Link]),
(v, insets) -> {
Insets systemBars =
[Link]([Link]());
return insets;
});
editTextSenhaAtual = findViewById([Link]);
editTextNovaSenha = findViewById([Link]);
editTextConfirmarNovaSenha =
findViewById([Link]);
String confirmarNovaSenha =
[Link]().toString().trim();
if ([Link](senhaAtual) || [Link](novaSenha) ||
[Link](confirmarNovaSenha)) {
return;
if () {
return;
if (user != null) {
[Link]([Link]([Link](),
senhaAtual))
.addOnSuccessListener(aVoid -> {
[Link](novaSenha)
.addOnSuccessListener(aVoid1 -> {
finish();
})
.addOnFailureListener(e -> {
});
})
77
.addOnFailureListener(e ->
[Link](Alterando_senha.this, "Senha atual incorreta: " + [Link](),
Toast.LENGTH_SHORT).show());
.getMessage(), Toast.LENGTH_SHORT).show());
Atualizar_dispositivo.java:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
78
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
setContentView([Link].activity_atualizando_dispositivos);
80
auth = [Link]();
firestore = [Link]();
if (currentUser == null) {
finish();
return;
nomeEditText = findViewById([Link]);
potenciaEditText = findViewById([Link]);
tempoEditText = findViewById([Link]);
custoDiarioEditText = findViewById([Link]);
gastoDiarioEditText = findViewById([Link]);
custoMensalEditText = findViewById([Link]);
gastoMensalEditText = findViewById([Link]);
81
tempoUsoSpinner = findViewById([Link]);
quantidadeEditText = findViewById([Link]);
return;
try {
[Link]([Link]([Link](), "%.2f",
0.0));
[Link]([Link]([Link](), "%.2f",
0.0));
[Link]([Link]([Link](), "%.2f",
0.0));
[Link]([Link]([Link](), "%.2f",
0.0));
} catch (Exception e) {
82
dispositivoId = [Link]("ID");
double custoMensalKWh =
[Link]("CUSTO_MENSAL_KWh", 0.0);
[Link](2);
[Link](2);
[Link](custoDiarioFormatado);
[Link](custoMensalFormatado);
String gastoDiarioKWhFormatado =
[Link](custoDiarioKWh) + " KWh";
String gastoKWhFormatado =
[Link](custoMensalKWh) + " KWh";
[Link]([Link]([Link](), "%d",
quantidadeInt));
[Link](gastoDiarioKWhFormatado);
[Link](gastoKWhFormatado);
ArrayAdapter<CharSequence> tempoAdapter =
[Link](this,
[Link].tempo_uso_opcoes, [Link].simple_spinner_item);
[Link]([Link].simple_spinner
_dropdown_item);
[Link](tempoAdapter);
if (unidadeTempo != null) {
[Link](spinnerPosition);
}
85
[Link](new
[Link]() {
@Override
validateAndCalculateCost();
@Override
});
[Link](new DeviceInfoTextWatcher());
[Link](new DeviceInfoTextWatcher());
[Link](new DeviceInfoTextWatcher());
[Link](new
DeviceInfoTextWatcher());
findViewById([Link]).setOnClickListener(v -> {
86
} else {
});
[Link](dialogView);
[Link]("OK", null);
[Link]();
@Override
@Override
validateAndCalculateCost();
@Override
return;
if ([Link]() || [Link]() ||
[Link]()) {
[Link]("R$ 00,00");
[Link]("0 KWh");
[Link]("R$ 00,00");
[Link]("0 KWh");
return;
double potencia;
double tempo;
int quantidade;
try {
90
potencia = [Link](potenciaString);
tempo = [Link](tempoString);
quantidade = [Link](quantidadeString);
} catch (NumberFormatException e) {
[Link]("R$ 00,00");
[Link]("0 KWh");
[Link]("R$ 00,00");
[Link]("0 KWh");
return;
if ([Link]("minutos/dia")) {
[Link]("R$ 00,00");
[Link]("0 KWh");
[Link]("R$ 00,00");
[Link]("0 KWh");
return;
} else if ([Link]("horas/dia")) {
[Link]("R$ 00,00");
[Link]("0 KWh");
[Link]("R$ 00,00");
[Link]("0 KWh");
return;
} else {
[Link]("R$ 00,00");
[Link]("0 KWh");
[Link]("R$ 00,00");
[Link]("0 KWh");
return;
return;
double potenciaValue;
double tempoValue;
double quantidadeValue;
try {
potenciaValue = [Link](potencia);
tempoValue = [Link](tempo);
quantidadeValue = [Link](quantidade);
94
} catch (NumberFormatException e) {
return;
DocumentReference dispositivoRef =
[Link]("usuarios").document(userId)
.collection("dispositivos").document(mesAno).collection("dispositivos").
document(dispositivoId);
[Link]().addOnCompleteListener(task -> {
if ([Link]()) {
if ([Link]().exists()) {
[Link]("Nome", nome);
[Link]("Potência", potenciaValue);
[Link]("Tempo", tempoValue);
[Link]("Quantidade", quantidadeValue);
[Link]("CustoMensal", custoMensalValue);
[Link]("CustoDiario", custoDiarioValue);
[Link]("GastoMensalKwh", gastoMensalValue);
[Link]("GastoDiarioKwh", gastoDiarioValue);
[Link]("UnidadeTempo", unidadeTempo);
96
[Link](dispositivoUpdates)
.addOnSuccessListener(aVoid -> {
[Link](Atualizar_dispositivo.this, "Dispositivo
atualizado com sucesso!", Toast.LENGTH_SHORT).show();
startActivity(intent);
finish();
})
.addOnFailureListener(e -> {
});
} else {
} else {
});
}
98
if (imageView == null) {
try {
} else {
[Link](this)
[Link](imageUrl);
} catch (Exception e) {
[Link]();
[Link]:
package [Link];
100
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
101
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
102
setContentView([Link].activity_cadastro);
mAuth = [Link]();
db = [Link]();
[Link](findViewById([Link]), (v,
insets) -> {
Insets systemBars =
[Link]([Link]());
return insets;
});
nameEditText = findViewById([Link]);
emailEditText = findViewById([Link]);
103
passwordEditText = findViewById([Link].editTextTextPassword2);
confirmPasswordEditText = findViewById([Link].editTextTextPassword3);
TextView();
[Link](v -> {
if (areFieldsValid()) {
showLoadingOverlay();
[Link](email, senha)
104
.addOnCompleteListener(task -> {
hideLoadingOverlay();
if ([Link]()) {
if (user != null) {
[Link]()
.addOnCompleteListener(task1 -> {
if ([Link]()) {
[Link]([Link], "Cadastro
realizado e e-mail de confirmação enviado.", Toast.LENGTH_LONG).show();
} else {
startActivity(intent);
finish();
});
salvarDadosUsuario([Link](), nomeEmCaixaAlta);
} else {
// Se o cadastro falhar
hideLoadingOverlay();
if ([Link]() instanceof
FirebaseAuthUserCollisionException) {
mostrarAlertaEmailJaCadastrado();
} else {
});
});
if (start >= 0) {
// Aplica negrito
[Link](new
ForegroundColorSpan([Link]("#228B22")), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
[Link](new ClickableSpan() {
@Override
[Link](spannableString);
[Link]([Link]()
);
return false;
}
109
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
return false;
if ([Link]() < 8) {
return false;
if () {
return false;
return true;
}
110
[Link]("nome", nome);
[Link]("usuarios").document(userId)
.set(user)
.addOnSuccessListener(aVoid -> {
})
.addOnFailureListener(e -> {
});
[Link]("E-mail já cadastrado")
startActivity(intent);
finish();
111
})
[Link]();
})
.setCancelable(false)
.show();
if (loadingOverlay != null) {
[Link]([Link]);
setUserInteractionEnabled(false);
if (loadingOverlay != null) {
[Link]([Link]);
setUserInteractionEnabled(true);
112
if (mainContent != null) {
[Link](!enabled);
[Link](!enabled);
[Link](!enabled);
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
113
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
[Link](this);
setContentView([Link].activity_dados);
mAuth = [Link]();
db = [Link]();
if ([Link]() == null) {
finish();
return;
[Link](findViewById([Link]), (v,
insets) -> {
Insets systemBars =
[Link]([Link]());
return insets;
});
editTextNome = findViewById([Link]);
editTextEmail = findViewById([Link]);
editTextSenha = findViewById([Link]);
profileImageView = findViewById([Link]);
ImageButtonLapisN = findViewById([Link]);
ImageButtonLapisE = findViewById([Link]);
ImageButtonLapisS = findViewById([Link]);
disableEditTexts();
[Link](view ->
toggleEditMode(editTextNome));
[Link](view -> {
startActivity(intent);
});
[Link](view -> {
startActivity(intent);
});
117
logoutTextView = findViewById([Link].textView5);
[Link](view -> {
if (isEditing) {
salvarAlteracoes();
} else {
showExitConfirmationDialog();
});
fetchUserData();
[Link]("Foto").document("FotoPerfil").get()
.addOnCompleteListener(task -> {
[Link]("usuarios").document(userId).get()
.addOnCompleteListener(userTask -> {
DocumentSnapshot userDocument =
[Link]();
String fotoPerfilUrl =
[Link]("fotoPerfil");
[Link]([Link])
.load(fotoPerfilUrl)
.placeholder([Link])
.error([Link])
.into(profileImageView);
[Link]([Link])
.load(defaultPhotoUrl)
.placeholder([Link])
.error([Link])
.into(profileImageView);
} else {
[Link]([Link].v
azio); // Define uma imagem padrão caso não haja URL
} else {
[Link]([Link]
io); // Define uma imagem padrão em caso de erro
});
} else {
[Link]([Link]); //
Define uma imagem padrão em caso de erro ao buscar foto padrão
});
[Link]();
String nomeAtualizado =
[Link]().toString().toUpperCase(); // Obtém o nome atualizado e
converte para maiúsculas
[Link]("usuarios").document(userId)
.update("nome", nomeAtualizado)
.addOnSuccessListener(aVoid -> {
})
if () {
AuthCredential credential =
[Link]([Link](), senhaAtual); // Cria as credenciais
de autenticação
[Link](credential)
.addOnSuccessListener(aVoid -> {
[Link](novoEmail)
.addOnSuccessListener(aVoid1 -> {
})
})
} else {
124
[Link]("Sair");
disableEditTexts();
new [Link](this)
.setTitle("Confirmar Saída")
@Override
125
})
.show();
[Link]()
[Link]:
package [Link];
// Propriedades do dispositivo
126
[Link] = nome;
[Link] = potencia;
[Link] = tempo;
[Link] = quantidade;
[Link] = custoMensal;
[Link] = imagemUrl;
[Link] = mesAno;
[Link] = unidadeTempo;
127
;}
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
130
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
131
[Link](savedInstanceState);
setContentView([Link].activity_dispositivo);
db = [Link]();
if (user != null) {
userId = [Link]();
} else {
finish();
return;
swipeRefreshLayout = findViewById([Link]);
[Link](this::onRefresh);
loadingOverlay = findViewById([Link]);
spinnerTempoUso = findViewById([Link]);
132
calendar = [Link]();
EditText gastoDiarioKWhTextView =
findViewById([Link]);
ImageView dispositivoImageView =
findViewById([Link]);
NumberFormat currencyFormat =
[Link](new Locale("pt", "BR"));
[Link](2);
[Link](2);
[Link](custoDiarioFormatado);
[Link](custoMensalFormatado);
String gastoDiarioKWhFormatado =
[Link](custoDiarioKWh) + " KWh";
[Link](gastoDiarioKWhFormatado);
[Link](gastoKWhFormatado);
[Link]((quantidade != null ?
formatAsInteger(quantidade) : "Não disponível"));
showLoadingOverlay();
loadImage(imagemUrl);
setupSpinner(unidadeTempo);
[Link](v -> {
[Link]("ID", dispositivoId);
[Link]("NOME", nome);
135
[Link]("POTENCIA", potencia);
[Link]("TEMPO", tempo);
[Link]("GASTO", custoMensal);
[Link]("IMAGEM", imagemUrl);
[Link]("UNIDADE_TEMPO", unidadeTempo);
[Link]("QUANTIDADE", quantidade);
[Link]("CUSTO_DIARIO", custoDiario);
[Link]("CUSTO_DIARIO_KWh", custoDiarioKWh);
[Link]("CUSTO_MENSAL", custoMensal);
[Link]("CUSTO_MENSAL_KWh", custoMensalKWh);
startActivity(editarIntent);
});
[Link](v -> {
if (dispositivoId != null) {
showDeleteConfirmationDialog(dispositivoId);
} else {
});
showLoadingOverlay();
hideLoadingOverlay();
[Link](false);
}, 1000);
ArrayAdapter<CharSequence> adapter =
[Link](this, [Link].tempo_uso_opcoes,
[Link].simple_spinner_item);
[Link]([Link].simple_spinner_dr
opdown_item);
[Link](adapter);
if (unidadeTempo != null) {
if (position >= 0) {
[Link](position);
[Link](false);
showLoadingOverlay();
if (imageView == null) {
return;
imageUrl = "https:[Link]/default_image.png";
}
138
[Link](this)
.load(imageUrl)
.placeholder([Link])
.error([Link])
.into(imageView);
hideLoadingOverlay();
if (loadingOverlay != null) {
[Link]([Link]);
if (loadingOverlay != null) {
[Link]([Link]);
}
139
try {
return [Link]().format(number);
} catch (NumberFormatException e) {
[Link]("Excluir Dispositivo");
[Link]("Não", null);
[Link]();
}
140
[Link]("dispositivos").document(userId).collection("meusdispositivo
s").document(dispositivoId)
.delete()
.addOnCompleteListener(task -> {
if ([Link]()) {
finish();
} else {
});
});
}
141
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
142
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
143
setContentView([Link].activity_gastos);
mAuth = [Link]();
db = [Link]();
linearLayoutDevices = findViewById([Link]);
textViewLista = findViewById([Link]);
textViewTotal = findViewById([Link]);
monthTextView = findViewById([Link]);
swipeRefreshLayout = findViewById([Link]);
[Link](',');
[Link]('.');
calendar = [Link]();
updateMonthTextView();
144
[Link](() -> {
fetchDevicesAndTotalCost();
});
fetchDevicesAndTotalCost();
}
145
[Link](currentMonth);
[Link]([Link], offset);
if ([Link]([Link]())) {
return;
}
146
[Link]([Link], offset);
updateMonthTextView();
fetchDevicesAndTotalCost();
[Link]([Link], selectedYear);
[Link]([Link], selectedMonth);
if ([Link]([Link]())) {
return;
[Link]([Link], selectedYear);
[Link]([Link], selectedMonth);
updateMonthTextView();
fetchDevicesAndTotalCost();
View daySpinner =
[Link]().findViewById(daySpinnerId);
if (daySpinner != null) {
[Link]([Link]);
// Exibe o DatePickerDialog
[Link]();
}
148
showLoadingOverlay();
[Link]("usuarios").document(userId).collection("dispositivos").docu
ment(mesAno)
.collection("dispositivos")
.get()
.addOnCompleteListener(task -> {
[Link]();
if ([Link]().isEmpty()) {
[Link](new
[Link](
[Link].MATCH_PARENT,
[Link].WRAP_CONTENT
));
[Link]([Link]);
[Link](textViewLista);
} else {
Double custoMensal =
[Link]("CustoMensal");
View deviceView =
[Link](this).inflate([Link].device_item, linearLayoutDevices, false);
TextView deviceName =
[Link]([Link]);
TextView deviceCost =
[Link]([Link]);
[Link](custoMensalString);
151
[Link](v -> {
[Link]("ID", [Link]());
[Link]("POTENCIA", potencia);
[Link]("TEMPO", tempo);
[Link]("GASTO", custoMensalString);
[Link]("QUANTIDADE",
[Link]("Quantidade"));
[Link]("CUSTO_DIARIO",
[Link]("CustoDiario"));
[Link]("CUSTO_DIARIO_KWh",
[Link]("GastoDiarioKwh"));
[Link]("CUSTO_MENSAL",
[Link]("CustoMensal"));
[Link]("CUSTO_MENSAL_KWh",
[Link]("GastoMensalKwh"));
startActivity(intent);
});
[Link](deviceView);
if (custoMensal != null) {
totalCost += custoMensal;
displayTotalCost(totalCost);
} else {
hideLoadingOverlay();
[Link](false);
});
showLoadingOverlay();
[Link]("usuarios").document(userId).collection("gastos").document(
selectedMonth)
.get()
.addOnCompleteListener(task -> {
if ([Link]()) {
154
if ([Link]()) {
double totalCost = 0;
try {
} catch (NumberFormatException e) {
} else {
} else {
hideLoadingOverlay();
});
if (loadingOverlay != null) {
[Link]([Link]);
setUserInteractionEnabled(false);
if (loadingOverlay != null) {
[Link]([Link]);
setUserInteractionEnabled(true);
}
157
findViewById([Link]).setEnabled(enabled);
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
158
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
159
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
[Link](this);
if (!isInternetAvailable()) {
showNoInternetDialog();
} else {
setContentView([Link].activity_inicio);
161
mAuth = [Link]();
db = [Link]();
if ([Link]() == null) {
finish();
return;
textViewName = findViewById([Link].textView4);
cardsLayout = findViewById([Link]);
swipeRefreshLayout = findViewById([Link]);
viewFlipper = findViewById([Link]);
indicatorLayout = findViewById([Link]);
fetchUserData();
setupDrawer();
setupCards();
162
setupViewFlipper();
[Link](this::setupCards);
[Link](findViewById([Link]
n), (v, insets) -> {
Insets systemBars =
[Link]([Link]());
return insets;
});
[Link](',');
[Link]('.');
setupCards();
[Link](this::setupCards);
// Configuração do ViewFlipper
[Link]("dicas")
.addSnapshotListener((snapshots, e) -> {
if (e != null) {
return;
164
// Se há mudanças na coleção
if (snapshots != null) {
SharedPreferences prefs =
getSharedPreferences("dicas_prefs", MODE_PRIVATE);
String lastNotifiedDicaId =
[Link]("last_notified_dica_id", null);
TextView dicaTextView =
[Link]([Link]);
if (dicaTextView != null) {
[Link]([Link]().toString(), view);
if ([Link]() == [Link]) {
newLastDicaId = dicaId;
newLastDicaTexto = dicaTexto;
newLastDicaLink = dicaLink;
if ( && !
[Link](dicaTexto)) {
View cardView =
getLayoutInflater().inflate([Link].card_dica, null);
166
TextView dicaTextView =
[Link]([Link]);
[Link](dicaTexto);
[Link](v -> {
startActivity(intent);
} else {
});
[Link](cardView);
[Link]([Link].indicator_in
active);
[Link](8, 8, 8, 8);
[Link](indicator);
newDicaAdded = true;
167
sendNotification(newLastDicaTexto, newLastDicaId);
[Link](newLastDicaId);
[Link]("notified_dicas", notifiedDicas);
[Link]("last_notified_dica_id", newLastDicaId);
[Link]();
if (newDicaAdded) {
updateIndicators([Link]());
startAutoFlip();
}
168
[Link](v -> {
[Link]();
updateIndicators([Link]());
resetAutoFlip();
});
[Link](v -> {
[Link]();
updateIndicators([Link]());
resetAutoFlip();
});
[Link](new
OnSwipeTouchListener(this) {
@Override
[Link]();
169
updateIndicators([Link]());
resetAutoFlip();
@Override
[Link]();
updateIndicators([Link]());
resetAutoFlip();
});
} else {
});
[Link](channel);
[Link](Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_SINGLE_TOP); // Configura flags para evitar múltiplas
instâncias
this,
171
intent,
PendingIntent.FLAG_UPDATE_CURRENT |
PendingIntent.FLAG_MUTABLE // Permite atualizar o PendingIntent e torna-o
mutável
);
.setPriority(NotificationCompat.PRIORITY_HIGH) // Define a
prioridade da notificação como alta
// Exibe a notificação
[Link]([Link](), [Link]());
172
@Override
updateIndicators([Link]()); // Atualiza os
indicadores para a dica exibida
[Link](this, AUTO_FLIP_INTERVAL); //
Reagenda o Runnable para ser executado novamente após o intervalo
};
[Link](autoFlipRunnable,
AUTO_FLIP_INTERVAL);
[Link](autoFlipRunnable);
// Reinicia o auto-flip
173
startAutoFlip();
@Override
switch ([Link]()) {
case MotionEvent.ACTION_DOWN:
startX = [Link]();
startY = [Link]();
isSwiping = false;
break;
case MotionEvent.ACTION_MOVE:
isSwiping = true;
break;
case MotionEvent.ACTION_UP:
if (isSwiping) {
[Link](event);
break;
return true;
@Override
@Override
if (diffX > 0) {
} else {
return true;
}
176
return false;
if (i == position) {
[Link]([Link].indicator_active);
177
} else {
[Link]([Link].indicator_inactive);
[Link]("usuarios").document(userId).get()
.addOnCompleteListener(task -> {
if ([Link]()) {
if ([Link]()) {
178
if (nome != null) {
MenuItem logoutItem =
[Link]().findItem([Link]);
} else {
[Link]("Olá!");
MenuItem logoutItem =
[Link]().findItem([Link]);
[Link]("Logout");
} else {
[Link]("Olá!");
MenuItem logoutItem =
[Link]().findItem([Link]);
[Link]("Logout");
} else {
179
[Link]("Olá!");
MenuItem logoutItem =
[Link]().findItem([Link]);
[Link]("Logout");
});
drawerLayout = findViewById([Link].drawer_layout);
navigationView = findViewById([Link].nav_view);
[Link](item -> {
int id = [Link]();
if (id == [Link].nav_item_one) {
startActivity(intent);
startActivity(intent);
[Link]();
[Link] editor =
getSharedPreferences("PrefsFile", MODE_PRIVATE).edit();
[Link]("isLoggedIn", false);
[Link]();
[Link]([Link]);
return true;
});
FirebaseFirestore db = [Link]();
[Link]("usuarios").document(userId).collection("gastos").document(
selectedMonth)
182
.get()
.addOnCompleteListener(task -> {
if ([Link]()) {
if ([Link]()) {
double monthlyCost = 0;
try {
monthlyCost = [Link]((String)
totalCostObj);
} catch (NumberFormatException e) {
}
183
String formattedValue =
[Link](monthlyCost);
runOnUiThread(() -> {
TextView totalValueTextView =
findViewById([Link].textView5);
if (totalValueTextView != null) {
[Link](formattedValue);
} else {
});
} else {
runOnUiThread(() -> {
TextView totalValueTextView =
findViewById([Link].textView5);
if (totalValueTextView != null) {
[Link]("R$ 00,00");
});
} else {
runOnUiThread(() -> {
});
});
showLoadingOverlay();
[Link]("usuarios").document(userId)
.collection("dispositivos").document(mesAnoAtual)
.collection("dispositivos").get()
.addOnCompleteListener(task -> {
hideLoadingOverlay();
if ([Link]()) {
[Link]();
186
double totalCost = 0;
int cardCount = 0;
[Link]([Link]);
[Link].MATCH_PARENT,
[Link].WRAP_CONTENT);
[Link](layoutParams);
[Link](rowLayout);
187
if (nome == null) {
if (imagemUrl == null) {
imagemUrl = "";
[Link](nome);
[Link](formattedValue);
totalCost += custoValue;
[Link]([Link])
.load(imagemUrl)
.placeholder([Link])
.into(cardImage);
189
tempoString = [Link](((Number)
tempoObj).intValue());
tempoString = [Link]();
} else {
// Obtém o ID do dispositivo
[Link](v -> {
[Link]("ID", dispositivoId);
[Link]("NOME", finalNome);
[Link]("POTENCIA", potenciaString);
[Link]("TEMPO", tempoString);
[Link]("IMAGEM", finalImagemUrl);
[Link]("UNIDADE_TEMPO",
[Link]("UnidadeTempo"));
[Link]("QUANTIDADE", quantidade);
[Link]("CUSTO_DIARIO",
[Link]("CustoDiario"));
[Link]("CUSTO_DIARIO_KWh",
[Link]("GastoDiariwh"));
[Link]("CUSTO_MENSAL",
[Link]("CustoMensal"));
[Link]("CUSTO_MENSAL_KWh",
[Link]("GastoMensalKwh"));
191
startActivity(intent);
});
[Link](card);
cardCount++;
if (cardCount % 2 == 0) {
[Link]([Link]);
[Link](layoutParams);
[Link](rowLayout);
ImageButton addButtonImage =
[Link]([Link]);
[Link]([Link]);
[Link](v -> {
192
if (isInternetAvailable()) {
startActivity(intent);
} else {
});
[Link](addButton);
updateMonthlyCost(userId, totalCost);
fetchTotalCost();
fetchMonthlyCost();
if ([Link]().isEmpty()) {
} else {
[Link](false);
});
FirebaseFirestore db = [Link]();
[Link]("usuarios").document(userId).collection("gastos").document(
mesAno)
.get()
.addOnCompleteListener(task -> {
if ([Link]()) {
if ([Link]()) {
if (monthlyCost == null) {
monthlyCost = 0.0;
String formattedValue =
[Link](monthlyCost);
runOnUiThread(() -> {
195
TextView totalValueTextView =
findViewById([Link].textView5);
if (totalValueTextView != null) {
[Link](formattedValue);
} else {
});
} else {
runOnUiThread(() -> {
TextView totalValueTextView =
findViewById([Link].textView5);
if (totalValueTextView != null) {
[Link]("R$ 00,00");
});
} else {
runOnUiThread(() -> {
});
});
[Link](mesAno, monthlyCost);
FirebaseFirestore db = [Link]();
[Link]("usuarios").document(userId).collection("gastos").document(
mesAno)
.set(updates, [Link]())
.addOnFailureListener(e -> {
});
[Link]("ID", dispositivoId);
// Inicia a atividade
startActivity(intent);
// Inicia a atividade
startActivity(intent);
[Link]("UPDATE_CARDS", true);
// Inicia a atividade
startActivity(intent);
// Obtém a referência para o view principal que pode ser usada para
bloquear interação do usuário
if (mainContent != null) {
[Link](!enabled);
[Link](!enabled);
199
[Link](!enabled);
if (loadingOverlay != null) {
[Link]([Link]);
if (loadingOverlay != null) {
// Oculta o overlay
[Link]([Link]);
ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
new [Link](this)
.setCancelable(false)
@Override
recreate();
})
@Override
201
// Encerra a atividade
finish();
})
.show();
[Link]([Link]);
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
202
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
setContentView([Link].activity_login);
if ([Link](this,
[Link].POST_NOTIFICATIONS)
!= PackageManager.PERMISSION_GRANTED) {
REQUEST_CODE_NOTIFICATION_PERMISSION);
} else {
mAuth = [Link]();
sharedPreferences = getSharedPreferences(PREFS_NAME,
MODE_PRIVATE);
if ([Link]() != null) {
finish();
emailEditText = findViewById([Link]);
passwordEditText = findViewById([Link].editTextTextPassword2);
205
togglePasswordVisibilityButton =
findViewById([Link]);
[Link](v -> {
if (isPasswordVisible) {
[Link](InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
[Link]([Link]
aver);
} else {
[Link](InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
[Link]([Link]
aocultar);
[Link]([Link]().length());
isPasswordVisible = !isPasswordVisible;
});
findViewById([Link].button3).setOnClickListener(v -> {
206
if (isConnectedToInternet()) {
showLoadingOverlay();
[Link](email, senha)
.addOnCompleteListener(task -> {
hideLoadingOverlay();
if ([Link]()) {
[Link] editor =
[Link]();
[Link]("isLoggedIn", true);
[Link]();
finish();
207
} else {
});
} else {
} else {
});
setupCadastroTextView();
setupEsqueceuSenhaTextView();
[Link](v -> {
if (![Link]()) {
[Link](email)
.addOnCompleteListener(task -> {
if ([Link]()) {
} else {
});
} else {
}
209
});
@Override
[Link](requestCode, permissions,
grantResults);
if (requestCode == REQUEST_CODE_NOTIFICATION_PERMISSION) {
} else {
if (start >= 0) {
[Link](new
ForegroundColorSpan([Link]("#228B22")), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
[Link](new ClickableSpan() {
@Override
[Link](spannableString);
[Link]([Link]
nce());
if (start >= 0) {
[Link](new
ForegroundColorSpan([Link]("#228B22")), start, end,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
[Link](new ClickableSpan() {
213
@Override
if (![Link]()) {
[Link](email)
.addOnCompleteListener(task -> {
if ([Link]()) {
} else {
});
} else {
[Link](spannableString);
[Link]([Link]
ce());
[Link]([Link]);
@Override
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
moveTaskToBack(true);
return true; // Indica que o evento foi tratado e não deve ser propagado
para outras partes do sistema.
}
215
[Link]();
[Link]();
if (loadingOverlay != null) {
[Link]([Link]);
216
setUserInteractionEnabled(false);
if (loadingOverlay != null) {
[Link]([Link]);
setUserInteractionEnabled(true);
if (mainContent != null) {
[Link](!enabled);
[Link](!enabled);
[Link](!enabled);
ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
}
218
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
[Link](this);
219
setContentView([Link].activity_splash);
[Link](findViewById([Link]),
(v, insets) -> {
Insets systemBars =
[Link]([Link]());
return insets;
});
startActivity(intent);
// Finaliza a Activity Splash para que não possa ser retornada com o
botão de voltar
finish();
[Link]:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
221
import [Link];
import [Link];
@Override
[Link](savedInstanceState);
[Link](this);
setContentView([Link].activity_termos);
[Link](findViewById([Link]),
(v, insets) -> {
Insets systemBars =
[Link]([Link]());
222
return insets;
});
[Link](new [Link]() {
@Override
finish();
});
activity_adicionando_dispositivos.xml:
223
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_marginEnd="0dp"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="24dp"
app:layout_constraintTop_toTopOf="parent">
<!-- Container horizontal que alinha seu conteúdo ao centro
verticalmente.
Tem margem padrão de 0dp nas laterais e fundo transparente.
Contém um botão de imagem e um texto, com padding de 24dp.
224
<ImageButton
android:id="@+id/imageButtonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:background="@android:color/transparent"
android:src="@drawable/voltar" />
<!-- Botão de imagem para voltar, sem fundo (transparente) e com
margem à direita.
Mostra o ícone definido em "voltar". -->
<TextView
android:id="@+id/textViewBack"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:text="Adicione um dispositivo"
android:textColor="@color/main"
android:textSize="30sp" />
<!-- Texto ao lado do botão, ocupando o espaço restante.
Fonte personalizada, tamanho de 30sp e cor definida em "main".
Texto: "Adicione um dispositivo". -->
</LinearLayout> <!---->
<[Link]
android:id="@+id/cardView1"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginHorizontal="24dp"
225
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/topContainer">
<!-- CardView que serve como contêiner para um layout.
Dimensões fixas (150x150dp), margem horizontal e superior de
24dp.
Cor de fundo cinza, cantos arredondados de 15dp.
Posicionado centralizado horizontalmente abaixo de
"topContainer". -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<!-- Layout interno do CardView, com orientação vertical e
centralização do conteúdo. -->
<ImageView
android:id="@+id/imageViewDispositivo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:src="@drawable/vazio" />
<!-- Imagem centralizada dentro do LinearLayout, ajustada com
"centerCrop".
Mostra o drawable "vazio". -->
</LinearLayout>
226
</[Link]> <!---->
<LinearLayout
android:id="@+id/LinearDisp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView1">
<!-- LinearLayout para entrada de texto, horizontal e centrado
verticalmente.
Tem margens laterais e superior de 24dp. Posicionado abaixo do
CardView. -->
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Nome do dispositivo">
<!-- Contêiner para campo de entrada de texto, preenchendo o
espaço disponível.
Exibe o texto "Nome do dispositivo" como dica. -->
<EditText
android:id="@+id/editTextNome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:fontFamily="@font/archivo_semibold"
227
android:gravity="center"
android:maxLength="25"
android:textSize="35sp" />
<!-- Campo de texto para o nome do dispositivo, sem fundo, fonte
personalizada.
Texto centralizado, limite de 25 caracteres e tamanho de texto
35sp. -->
</[Link]>
<ImageButton
android:id="@+id/imageButtonNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="-33dp"
android:background="?attr/selectableItemBackground"
android:contentDescription="Escolher nome"
android:src="@drawable/dropdown" />
<!-- Botão de imagem para abrir opções de nome, com fundo interativo
padrão.
Ícone de "dropdown" e descrição de conteúdo para acessibilidade.
Tem margem negativa para ajustar o posicionamento ao lado do
EditText. -->
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="gone" />
<!-- Barra de progresso que aparece durante alguma operação (por
exemplo, carregamento).
Oculta por padrão com visibility "gone". -->
228
</LinearLayout> <!---->
<[Link]
android:id="@+id/cardView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/LinearDisp">
<!-- CardView que serve como contêiner para os elementos internos.
Largura máxima e altura ajustável, com margens laterais de 24dp e
superior de 24dp.
Cor de fundo cinza e bordas arredondadas (15dp). -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical">
<!-- LinearLayout vertical que alinha os elementos ao centro
verticalmente. -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingEnd="24dp">
229
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Insira aqui a potência em WATTS">
<!-- Layout de entrada para potência, ocupando espaço flexível
(layout_weight). -->
<EditText
android:id="@+id/editTextPotencia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="15sp" />
<!-- Campo de entrada para potência, com fonte personalizada
e tipo numérico decimal. -->
</[Link]>
<ImageButton
android:id="@+id/helpButton"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:background="@android:color/transparent"
android:contentDescription="Help"
android:src="@drawable/question" />
<!-- Botão de imagem para ajuda, com ícone de pergunta, sem
fundo visível. -->
230
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- Outra LinearLayout horizontal para os próximos campos de
entrada. -->
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Ex: 8">
<!-- Layout de entrada para tempo, com espaço flexível. -->
<[Link]
android:id="@+id/editTextTempo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="15sp" />
<!-- Campo de entrada para tempo, com fonte personalizada e
tipo numérico decimal. -->
</[Link]>
<Spinner
android:id="@+id/spinnerTempoUso"
231
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:contentDescription="Escolher tempo de uso"
android:src="@android:drawable/arrow_down_float"
android:textAlignment="viewEnd" />
<!-- Spinner para selecionar a unidade de tempo de uso, com
fundo selecionável. -->
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<!-- LinearLayout horizontal para a quantidade. -->
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Quantidade">
<!-- Layout de entrada para quantidade, ocupando espaço
flexível. -->
<EditText
android:id="@+id/editTextQuantidade"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/archivo_semibold"
232
android:hint="Insira um número"
android:inputType="number"
android:text="1"
android:textSize="15sp" />
<!-- Campo de entrada para quantidade, com número como
inputType e texto padrão de "1". -->
</[Link]>
</LinearLayout> <!---->
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="16dp"
android:background="@android:color/darker_gray" />
<!-- Linha horizontal separadora, com altura de 1dp e margem
vertical. -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingEnd="24dp">
<!-- LinearLayout horizontal para os campos de custo diário. -->
<[Link]
android:id="@+id/textInputLayoutCustoDiario"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
233
android:hint="Custo diário">
<!-- Layout de entrada para custo diário, ocupando espaço
flexível. -->
<[Link]
android:id="@+id/editTextCustoDiario"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="17sp" />
<!-- Campo de entrada para custo diário, desabilitado, com
fundo transparente. -->
</[Link]>
<[Link]
android:id="@+id/textInputLayoutCustoDiarioTWh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:hint="Consumo diário">
<!-- Layout de entrada para consumo diário, ocupando espaço
flexível. -->
<[Link]
android:id="@+id/editTextCustoDiarioTWh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
234
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="15sp" />
<!-- Campo de entrada para consumo diário, desabilitado, com
fundo transparente. -->
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingEnd="24dp"
android:paddingBottom="20dp">
<!-- LinearLayout horizontal para os campos de custo mensal. -->
<[Link]
android:id="@+id/textInputLayoutCusto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:hint="Custo mensal">
<!-- Layout de entrada para custo mensal, ocupando espaço
flexível. -->
<[Link]
android:id="@+id/editTextCusto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
235
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="17sp" />
<!-- Campo de entrada para custo mensal, desabilitado, com
fundo transparente. -->
</[Link]>
<[Link]
android:id="@+id/textInputLayoutCustoTWh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:hint="Consumo mensal">
<!-- Layout de entrada para consumo mensal, ocupando
espaço flexível. -->
<[Link]
android:id="@+id/editTextCustoTWh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="15sp" />
<!-- Campo de entrada para consumo mensal, desabilitado,
com fundo transparente. -->
</[Link]>
</LinearLayout>
236
</LinearLayout>
</[Link]> <!---->
<TextView
android:id="@+id/textViewSalvar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:fontFamily="@font/archivo_semibold"
android:text="SALVAR"
android:textColor="@color/main"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView2" />
<!-- Botão de salvar, configurado com texto, cor e tamanho específicos. --
>
</[Link]>
</ScrollView>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
android:gravity="center"
android:visibility="gone">
<!-- Layout relativo que ocupa toda a tela (largura e altura).
Tem um fundo semitransparente branco (CCFFFFFF).
Os elementos dentro dele serão centralizados.
Inicialmente invisível (gone), usado para exibir um carregamento. -->
</RelativeLayout>
237
</[Link]>
activity_alteracao_email.xml:
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="-27dp"
tools:layout_editor_absoluteY="136dp">
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="24dp"
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="0dp"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
238
android:gravity="center_vertical">
<ImageButton
android:id="@+id/imageButtonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/voltar"
android:background="@android:color/transparent"
android:layout_marginEnd="16dp" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:text="Confirme sua senha antes de alterar o e-mail"
android:textColor="@color/main"
android:textSize="30sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/linearTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginHorizontal="24dp"
app:layout_constraintTop_toBottomOf="@id/textView5">
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:text="Seu e-mail atual é .... qual será o novo endereço?"
239
android:textSize="18dp"
android:textColor="@color/main"/>
</LinearLayout>
<[Link]
android:id="@+id/cardView2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="30dp"
android:layout_marginHorizontal="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/topContainer">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextTextPassword2"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="16dp"
android:background="@android:color/transparent"
android:hint="Digite sua senha"
android:inputType="textPassword"
android:textColor="#000000"
android:textColorHint="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
240
</[Link]>
</[Link]>
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="VERIFICAR"
android:fontFamily="@font/archivo_semibold"
android:textColor="@color/main"
android:textSize="20sp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@id/cardView2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<[Link]
android:id="@+id/cardView1"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="10dp"
android:layout_marginHorizontal="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/linearTextView">
<EditText
android:id="@+id/editTextTextEmailAddress"
style="@style/[Link]"
android:layout_width="match_parent"
241
android:layout_height="60dp"
android:layout_marginHorizontal="16dp"
android:background="@android:color/transparent"
android:hint="Digite seu e-mail"
android:inputType="textEmailAddress"
android:textColor="#000000"
android:textColorHint="#000000"
android:enabled="false"/>
</[Link]>
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
android:background="@drawable/button_background"
android:text="Confirmar"
android:textColor="@color/main"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView1" />
</[Link]>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
android:visibility="gone"
android:gravity="center">
<ProgressBar
android:id="@+id/progressBar"
242
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone"
android:indeterminateTint="@android:color/white"
android:indeterminate="true" />
</RelativeLayout>
</[Link]>
activity_alteracao_senha.xml:
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="24dp"
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="0dp"
android:layout_marginStart="0dp"
243
android:layout_marginEnd="0dp"
android:gravity="center_vertical">
<ImageButton
android:id="@+id/imageButtonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/voltar"
android:background="@android:color/transparent"
android:layout_marginEnd="16dp" />
<TextView
android:id="@+id/textViewBack"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Confirme e mude sua senha"
android:fontFamily="@font/archivo_semibold"
android:textColor="@color/main"
android:textSize="30sp"/>
</LinearLayout>
<[Link]
android:id="@+id/cardView1"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
244
app:layout_constraintTop_toBottomOf="@id/topContainer">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextSenhaAtual"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="16dp"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Senha atual"
android:inputType="textPassword"
android:textColor="#000000"
android:textColorHint="#000000"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</[Link]>
</[Link]>
<[Link]
android:id="@+id/cardView2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="40dp"
android:layout_marginHorizontal="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
245
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView1">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextNovaSenha"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="16dp"
android:textColor="#000000"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Nova senha"
android:inputType="textPassword"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</[Link]>
</[Link]>
<[Link]
android:id="@+id/cardView3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="20dp"
android:layout_marginHorizontal="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
246
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView2">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextConfirmarNovaSenha"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="16dp"
android:textColor="#000000"
android:textColorHint="#000000"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Confirme senha"
android:inputType="textPassword"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
</[Link]>
</[Link]>>
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
android:background="@drawable/button_background"
247
android:text="Confirmar"
android:textColor="@color/main"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView3" />
</[Link]>
activity_atualizando_dispositivos.xml:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="24dp"
248
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="0dp"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:gravity="center_vertical">
<ImageButton
android:id="@+id/imageButtonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/voltar"
android:background="@android:color/transparent"
android:layout_marginEnd="16dp" />
<TextView
android:id="@+id/textViewBack"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Atualizando dispositivo"
android:fontFamily="@font/archivo_semibold"
android:textColor="@color/main"
android:textSize="30sp"/>
</LinearLayout>
<[Link]
android:id="@+id/cardView1"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
249
app:layout_constraintTop_toBottomOf="@+id/topContainer"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:id="@+id/imageViewDispositivo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/vazio"
android:scaleType="centerCrop" />
</LinearLayout>
</[Link]>
<LinearLayout
android:id="@+id/LinearDisp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView1">
250
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Nome do dispositivo">
<EditText
android:id="@+id/editTextNome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:fontFamily="@font/archivo_semibold"
android:gravity="center"
android:maxLength="25"
android:textSize="25sp" />
</[Link]>
</LinearLayout>
<[Link]
android:id="@+id/cardView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintTop_toBottomOf="@+id/LinearDisp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
251
android:gravity="center_vertical"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingEnd="24dp">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Potência em WATTS">
<EditText
android:id="@+id/editTextPotencia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:fontFamily="@font/archivo_semibold"
android:textSize="15sp" />
</[Link]>
<ImageButton
android:id="@+id/helpButton"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="8dp"
android:background="@android:color/transparent"
android:contentDescription="Help"
252
android:src="@drawable/question" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Tempo de uso">
<[Link]
android:id="@+id/editTextTempo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:backgroundTint="@color/main"
android:fontFamily="@font/archivo_semibold"
android:textSize="15sp" />
</[Link]>
<Spinner
android:id="@+id/spinnerTempoUso"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:background="?attr/selectableItemBackground"
253
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Quantidade">
<EditText
android:id="@+id/editTextQuantidade"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:fontFamily="@font/archivo_semibold"
android:hint="Insira um número"
android:inputType="number"
android:text="1"
android:textSize="15sp" />
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
254
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingEnd="24dp">
<[Link]
android:id="@+id/textInputLayoutCustoDiario"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:hint="Custo diário">
<[Link]
android:id="@+id/editTextCustoDiario"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:background="@android:color/transparent"
android:fontFamily="@font/archivo_semibold"
android:textSize="15sp"
android:enabled="false"/>
</[Link]>
<[Link]
android:id="@+id/textInputLayoutCustoDiarioTWh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:hint="Gasto diário">
<[Link]
255
android:id="@+id/editTextGastoDiarioTWh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:background="@android:color/transparent"
android:fontFamily="@font/archivo_semibold"
android:textSize="15sp"
android:enabled="false"/>
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:paddingEnd="24dp">
<[Link]
android:id="@+id/textInputLayoutCusto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginRight="5dp"
android:hint="Custo mensal">
<[Link]
android:id="@+id/editTextCusto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
256
android:inputType="numberDecimal"
android:fontFamily="@font/archivo_semibold"
android:textSize="15sp"
android:enabled="false"/>
</[Link]>
<[Link]
android:id="@+id/textInputLayoutCustoTWh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:hint="Gasto mensal">
<[Link]
android:id="@+id/editTextCustoTWh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:background="@android:color/transparent"
android:fontFamily="@font/archivo_semibold"
android:textSize="15sp"
android:enabled="false"/>
</[Link]>
</LinearLayout>
</LinearLayout>
</[Link]>
<TextView
android:id="@+id/textViewSalvar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SALVAR"
android:fontFamily="@font/archivo_semibold"
257
android:textColor="@color/main"
android:textSize="20sp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@+id/cardView2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</[Link]>
</ScrollView>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
android:visibility="gone"
android:gravity="center">
</RelativeLayout>
</[Link]>
activity_cadastro.xml:
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="0dp">
<TextView
android:id="@+id/textView"
android:layout_width="368dp"
android:layout_height="110dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:fontFamily="@font/archivo_semibold"
android:text="Criando uma conta"
android:textColor="@color/main"
android:textSize="48sp"
app:layout_constraintBottom_toTopOf="@+id/cardView1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<[Link]
android:id="@+id/cardView1"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
259
app:layout_constraintTop_toBottomOf="@id/textView">
<EditText
android:id="@+id/editTextText"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:background="@android:color/transparent"
android:backgroundTint="#000000"
android:ems="10"
android:hint="Digite seu nome"
android:hyphenationFrequency="normal"
android:inputType="textEmailAddress"
android:textColor="#000000"
android:textColorHint="#000000" />
</[Link]>
<[Link]
android:id="@+id/cardView2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView1">
<EditText
android:id="@+id/editTextTextEmailAddress"
style="@style/[Link]"
android:layout_width="match_parent"
260
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:background="@android:color/transparent"
android:backgroundTint="#000000"
android:ems="10"
android:hint="Digite seu e-mail"
android:hyphenationFrequency="normal"
android:inputType="textEmailAddress"
android:textColor="#000000"
android:textColorHint="#000000" />
</[Link]>
<[Link]
android:id="@+id/cardView3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView2">
<EditText
android:id="@+id/editTextTextPassword2"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:background="@android:color/transparent"
android:backgroundTint="#000000"
android:ems="10"
android:hint="Digite sua senha"
261
android:inputType="textPassword"
android:textColor="#000000"
android:textColorHint="#000000" />
</[Link]>
<[Link]
android:id="@+id/cardView4"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView3">
<EditText
android:id="@+id/editTextTextPassword3"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="16dp"
android:background="@android:color/transparent"
android:backgroundTint="#000000"
android:ems="10"
android:hint="Confirme sua senha"
android:inputType="textPassword"
android:textColor="#000000"
android:textColorHint="#000000" />
</[Link]>
<Button
android:id="@+id/button3"
262
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
android:background="@drawable/button_background"
android:text="Cadastrar"
android:textColor="@color/main"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView4" />
<TextView
android:id="@+id/textView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="4dp"
android:text="Ao criar a conta, você concorda com nossos Termos de
Uso."
android:textAlignment="center"
android:textColor="@color/main"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button3" />
</[Link]>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
263
android:visibility="gone"
android:gravity="center">
</RelativeLayout>
</[Link]>
activity_dados.xml:
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="24dp"
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="0dp"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:gravity="center_vertical">
<ImageButton
android:id="@+id/imageButtonBack"
264
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/voltar"
android:background="@android:color/transparent"
android:layout_marginEnd="16dp" />
<TextView
android:id="@+id/textViewBack"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Seus dados"
android:fontFamily="@font/archivo_semibold"
android:textColor="@color/main"
android:textSize="30sp"/>
</LinearLayout>
<[Link]
android:id="@+id/profileImageView"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="32dp"
android:src="@drawable/controleenergialogo"
android:contentDescription="Icone"
app:layout_constraintTop_toBottomOf="@id/topContainer"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:background="@drawable/circle_border" />
<[Link]
android:id="@+id/cardView1"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="0dp"
265
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/profileImageView">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextNome"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="24dp"
android:background="@android:color/transparent"
android:ems="10"
android:enabled="false"
android:hint="Carregando..."
android:inputType="text"
android:textColor="#000000"
android:textColorHint="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/ImageButtonLapisN"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="24dp"
android:background="?attr/selectableItemBackgroundBorderless"
266
android:src="@drawable/lapis"
android:contentDescription="Toggle password visibility"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</[Link]>
</[Link]>
<[Link]
android:id="@+id/cardView2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="10dp"
android:layout_marginHorizontal="0dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView1">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextEmail"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="16dp"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Carregando..."
android:inputType="textEmailAddress"
267
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:enabled="false"/>
<ImageButton
android:id="@+id/ImageButtonLapisE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/lapis"
android:contentDescription="Toggle password visibility"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</[Link]>
</[Link]>
<[Link]
android:id="@+id/cardView3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="0dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView2">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
268
<EditText
android:id="@+id/editTextSenha"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_margin="16dp"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Carregando..."
android:inputType="textPassword"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:enabled="false"/>
<ImageButton
android:id="@+id/ImageButtonLapisS"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/lapis"
android:contentDescription="Toggle password visibility"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</[Link]>
</[Link]>>
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
269
android:text="SAIR"
android:fontFamily="@font/archivo_semibold"
android:textColor="@color/main"
android:textSize="20sp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:layout_constraintTop_toBottomOf="@+id/cardView3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</[Link]>
activity_dispositivo.xml:
<[Link]
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ScrollView
android:layout_width="match_parent"
270
android:layout_height="match_parent">
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_marginEnd="0dp"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="24dp"
app:layout_constraintTop_toTopOf="parent">
<ImageButton
android:id="@+id/imageButtonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:background="@android:color/transparent"
android:src="@drawable/voltar" />
<TextView
android:id="@+id/textViewBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:text="Seu dispositivo"
android:textColor="@color/main"
android:textSize="30sp" />
271
</LinearLayout>
<[Link]
android:id="@+id/cardView1"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/topContainer">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imageViewDispositivo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:src="@drawable/vazio" />
</LinearLayout>
</[Link]>
<LinearLayout
android:id="@+id/LinearDisp"
272
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView1">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Nome do dispositivo">
<EditText
android:id="@+id/editTextNome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:gravity="center"
android:textColor="@color/main"
android:maxLength="25"
android:textSize="35sp" />
</[Link]>
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
273
android:indeterminate="true"
android:visibility="gone" />
</LinearLayout>
<[Link]
android:id="@+id/cardView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/LinearDisp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingEnd="24dp">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
274
android:layout_weight="1"
android:hint="Potência">
<EditText
android:id="@+id/editTextPotencia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/main"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textColor="@color/main"
android:background="@android:color/transparent"
android:textSize="15sp" />
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Tempo de uso">
<[Link]
android:id="@+id/editTextTempo"
275
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/main"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textColor="@color/main"
android:background="@android:color/transparent"
android:textSize="15sp" />
</[Link]>
<Spinner
android:id="@+id/spinnerTempoUso"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:background="?attr/selectableItemBackground"
android:contentDescription="Escolher tempo de uso"
android:src="@android:drawable/arrow_down_float" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<[Link]
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:hint="Quantidade">
276
<EditText
android:id="@+id/editTextQuantidade"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:backgroundTint="@color/main"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:hint="Insira um número"
android:inputType="number"
android:text="1"
android:background="@android:color/transparent"
android:textColor="@color/main"
android:textSize="15sp" />
</[Link]>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginVertical="16dp"
android:background="@android:color/darker_gray" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingEnd="24dp">
<[Link]
android:id="@+id/textInputLayoutCustoDiario"
277
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:hint="Custo diário ">
<[Link]
android:id="@+id/editTextCustoDiario"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="17sp" />
</[Link]>
<[Link]
android:id="@+id/textInputLayoutCustoDiarioKWh"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:hint="Consumo diário">
<[Link]
android:id="@+id/editTextGastoDiarioKWh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="15sp" />
278
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="24dp"
android:paddingTop="20dp"
android:paddingEnd="24dp"
android:paddingBottom="20dp">
<[Link]
android:id="@+id/textInputLayoutCusto"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:hint="Custo mensal">
<[Link]
android:id="@+id/editTextCusto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="17sp" />
</[Link]>
<[Link]
android:id="@+id/textInputLayoutCustoKWh"
279
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:hint="Consumo mensal">
<[Link]
android:id="@+id/editTextGastoKWh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:enabled="false"
android:fontFamily="@font/archivo_semibold"
android:inputType="numberDecimal"
android:textSize="15sp" />
</[Link]>
</LinearLayout>
</LinearLayout>
</[Link]>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:padding="24dp"
app:layout_constraintTop_toBottomOf="@id/cardView2">
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
280
android:layout_marginEnd="10dp"
android:fontFamily="@font/archivo_semibold"
android:text="ATUALIZAR"
android:textColor="@color/main"
android:textSize="20sp" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:fontFamily="@font/archivo_semibold"
android:text="EXCLUIR"
android:textColor="@color/main"
android:textSize="20sp" />
</LinearLayout>
</[Link]>
</ScrollView>
</[Link]>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
android:gravity="center"
android:visibility="gone" />
</[Link]>
activity_gastos.xml:
<[Link]
xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Gastos">
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/topContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="24dp"
android:background="@android:color/transparent"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="0dp"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:gravity="center_vertical">
<ImageButton
android:id="@+id/imageButtonBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/voltar"
android:background="@android:color/transparent"
282
android:layout_marginEnd="16dp" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/archivo_semibold"
android:text="Seus gastos"
android:textColor="@color/main"
android:textSize="48sp"/>
</LinearLayout>
<TextView
android:id="@+id/textView6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/archivo_semibold"
android:text="Esse é o histórico de seus gastos mensais. Compare e
procure economizar :)"
android:textSize="18dp"
android:textColor="@color/main"
app:layout_constraintTop_toBottomOf="@id/topContainer"
app:layout_constraintVertical_bias="0.0"/>
<LinearLayout
android:id="@+id/monthSelectorLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="15dp"
android:gravity="center_vertical"
app:layout_constraintTop_toBottomOf="@id/textView6"
app:layout_constraintStart_toStartOf="parent"
283
app:layout_constraintEnd_toEndOf="parent"
android:padding="16dp">
<ImageButton
android:id="@+id/mesAnterior"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:background="@android:color/transparent"
android:src="@drawable/setaesquerda"
android:contentDescription="Mês Anterior" />
<TextView
android:id="@+id/monthTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mês atual"
android:textSize="24sp"
android:fontFamily="@font/archivo_semibold"
android:textColor="@color/main"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:gravity="center" />
<ImageView
android:id="@+id/monthPickerIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_month"
android:contentDescription="Selecione o mês"
android:layout_marginEnd="8dp"
android:padding="4dp" />
284
<ImageButton
android:id="@+id/mesSeguinte"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:background="@android:color/transparent"
android:src="@drawable/setadireita"
android:contentDescription="Mês Seguinte" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="-30dp"
android:layout_marginBottom="30dp"
android:orientation="vertical"
app:layout_constraintTop_toBottomOf="@id/monthSelectorLayout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:padding="16dp">
<[Link]
android:id="@+id/cardView1"
android:layout_width="match_parent"
android:layout_height="350dp"
android:layout_marginBottom="-8dp"
android:layout_marginHorizontal="24dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="30dp">
<[Link]
xmlns:android="[Link]
285
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayoutDevices"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/textViewLista"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:text="Carregando..."
android:textSize="18dp"
android:fontFamily="@font/archivo_semibold"/>
</LinearLayout>
</ScrollView>
</[Link]>
</[Link]>
<[Link]
android:id="@+id/cardView2"
android:layout_width="match_parent"
android:layout_height="150dp"
286
android:layout_marginHorizontal="24dp"
app:cardBackgroundColor="@color/main"
app:cardCornerRadius="30dp">
<TextView
android:id="@+id/textViewTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="R$ 00,00 "
android:textSize="30sp"
android:fontFamily="@font/archivo_black"
android:textColor="@android:color/white"/>
</[Link]>
</LinearLayout>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
android:visibility="gone"
android:gravity="center">
</RelativeLayout>
</[Link]>
</[Link]>
activity_inicio.xml:
<[Link]
xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme"
tools:context=".Inicio">
<[Link]
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageButton
android:id="@+id/hamburger_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="Menu"
android:onClick="openDrawer"
android:src="@drawable/menu"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
288
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="20dp"
android:fontFamily="@font/archivo_semibold"
android:text="Olá!"
android:textColor="@color/main"
android:textSize="25dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/hamburger_menu" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="67dp"
android:layout_marginStart="24dp"
android:layout_marginTop="5dp"
android:background="@drawable/marcatexto"
android:clickable="true"
android:focusable="true"
android:fontFamily="@font/archivo_black"
android:onClick="openGastosActivity"
android:text="R$ 0,00"
android:textColor="@color/main"
android:textSize="49dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView4" />
<TextView
android:id="@+id/textView6"
289
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="5dp"
android:fontFamily="@font/archivo_semibold"
android:text="Veja os aparelhos que você já adicionou:"
android:textColor="@color/main"
android:textSize="18dp"
app:layout_constraintBottom_toTopOf="@id/swipeRefreshLayout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView5" />
<[Link]
android:id="@+id/swipeRefreshLayout"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@id/viewFlipperContainer"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView6">
<ScrollView
android:id="@+id/scroll_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginBottom="28dp"
android:foregroundGravity="center_horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView6">
<LinearLayout
290
android:id="@+id/cardsScrollContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginHorizontal="25dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="10dp"
android:scrollbars="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="24dp"
android:orientation="horizontal">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
291
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
292
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
293
</LinearLayout>
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="24dp"
android:orientation="horizontal">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card3"
android:layout_width="wrap_content"
294
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
295
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="24dp"
296
android:orientation="horizontal">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
"
297
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card8"
android:layout_width="wrap_content"
298
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
</LinearLayout>
</[Link]>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginHorizontal="24dp">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
299
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
300
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
301
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginHorizontal="24dp">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
302
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
303
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
304
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginHorizontal="24dp">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card13"
305
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
306
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
307
android:orientation="horizontal"
android:layout_marginHorizontal="24dp">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
308
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card16"
309
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_marginHorizontal="24dp">
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
310
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card17"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
311
</LinearLayout>
</[Link]>
<[Link]
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_marginHorizontal="20dp"
android:layout_marginVertical="10dp"
android:layout_marginEnd="25dp"
android:clickable="true"
android:focusable="true"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/card18"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/vazio" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
312
app:cardBackgroundColor="@color/loading"/>
"
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
app:cardCornerRadius="60dp"
app:cardBackgroundColor="@color/loading"/>
</LinearLayout>
</[Link]>
</LinearLayout>
</LinearLayout>
</ScrollView>
</[Link]>
<[Link]
android:id="@+id/viewFlipperContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="30dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageButton
android:id="@+id/prevButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
313
android:layout_marginRight="12dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="Previous"
android:src="@drawable/setaesquerda"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ViewFlipper
android:id="@+id/viewFlipper"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inAnimation="@android:anim/fade_in"
android:outAnimation="@android:anim/fade_out"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/nextButton"
app:layout_constraintStart_toEndOf="@id/prevButton">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
android:orientation="vertical">
314
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginBottom="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
<[Link]
android:layout_width="match_parent"
android:layout_height="10dp"
android:layout_marginBottom="10dp"
app:cardBackgroundColor="@color/loading"
app:cardCornerRadius="60dp" />
</LinearLayout>
</[Link]>
</ViewFlipper>
<ImageButton
android:id="@+id/nextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
315
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="Next"
android:src="@drawable/setadireita"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</[Link]>
<LinearLayout
android:id="@+id/indicatorLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/viewFlipperContainer" /
>
</[Link]>
<[Link]
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/white"
app:menu="@menu/drawer_menu">
</[Link]>
</[Link]>
316
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/loading1"
android:gravity="center"
android:visibility="gone"></RelativeLayout>
</[Link]>
<[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout_editor_absoluteX="-27dp"
tools:layout_editor_absoluteY="136dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="200dp"
android:layout_height="170dp"
android:layout_marginStart="-30dp"
android:layout_marginTop="50dp"
android:layout_marginBottom="16dp"
317
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/controleenergialogo" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="0dp"
android:fontFamily="@font/archivo_semibold"
android:text="Bem-vindo a"
android:textColor="@color/main"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.085"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-8dp"
android:fontFamily="@font/anonymous_pro"
android:text="ControleEnergia"
android:textColor="@color/main"
android:textSize="34sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.175"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
318
<[Link]
android:id="@+id/cardView1"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView2">
<EditText
android:id="@+id/editTextTextEmailAddress"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Digite seu e-mail"
android:hyphenationFrequency="normal"
android:inputType="textEmailAddress"
android:textColor="#000000"
android:textColorHint="#000000" />
</[Link]>
<[Link]
android:id="@+id/cardView2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
319
app:cardBackgroundColor="@color/gray"
app:cardCornerRadius="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/cardView1">
<[Link]
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editTextTextPassword2"
style="@style/[Link]"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Digite sua senha"
android:inputType="textPassword"
android:textColor="#000000"
android:textColorHint="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btnTogglePasswordVisibility
"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/btnTogglePasswordVisibility"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:layout_margin="16dp"
android:background="?attr/selectableItemBackgroundBorderless"
320
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="30dp"
android:background="@drawable/button_background"
android:onClick="onLoginButtonClick"
android:text="Entrar"
android:textColor="@color/main"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.666"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/cardView2" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="-20dp"
android:layout_marginBottom="16dp"
android:clickable="true"
android:focusable="true"
android:text="Esqueceu a senha?"
321
android:textColor="#000000"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button3"
app:layout_constraintVertical_bias="0.123" />
</[Link]>
<[Link]
android:id="@+id/viewFlipperContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="30dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:clickable="true"
android:focusable="true"
android:text="Não tem conta? Crie uma!"
android:textColor="#000000"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
322
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="0.123" />
</[Link]>
<RelativeLayout
android:id="@+id/loadingOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCFFFFFF"
android:visibility="gone"
android:gravity="center">
</RelativeLayout>
</[Link]>
activity_splash.xml:
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
323
app:srcCompat="@drawable/splash1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</[Link]>
activity_termos.xml:
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:layout_marginBottom="24dp"
android:layout_marginHorizontal="24dp"
android:fontFamily="@font/archivo_semibold"
android:text="Termos de uso"
android:textColor="@color/main"
android:textSize="48sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
324
<ScrollView
android:id="@+id/scrollView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintBottom_toBottomOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/terms_text"
android:textAlignment="viewStart"
android:justificationMode="inter_word"
android:textColor="@color/main"
android:textSize="20sp" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="59dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="30dp"
android:background="@drawable/button_background"
325
android:text="CONCORDAR E CONTINUAR"
android:textColor="@color/main" />
</LinearLayout>
</ScrollView>
</[Link]>
CustoMensal NUMERIC(10),
GastoDiarioKWh DECIMAL(10),
GastoMensalKWh DECIMAL(10)
)
Funcionalidades Principais
2. Aparelhos Pré-definidos:
Caso o usuário não saiba os detalhes do aparelho, o aplicativo oferece uma
lista de aparelhos pré-definidos com as informações de potência já configuradas. O
usuário precisa apenas informar o tempo de uso e a quantidade. Isso facilita o uso
para aqueles que não possuem conhecimentos sobre os aparelhos.
5. Atualização de Custos:
À medida que o usuário adiciona mais aparelhos, o valor total é atualizado
automaticamente, permitindo uma visualização em tempo real do consumo total em
reais. Essa funcionalidade ajuda o usuário a entender como os diferentes aparelhos
contribuem para o gasto total
6. Histórico de Consumo:
O aplicativo armazena o histórico de consumo por mês, oferecendo uma visão
detalhada dos gastos ao longo do tempo. O usuário pode consultar:
- O custo mensal
- O custo diário
- O gasto mensal
- O gasto diário
- Comparações entre os meses para verificar quando houve maior ou menor
consumo de energia.
Instruções de Uso:
1. Acesso ao aplicativo: Abra o aplicativo e crie uma conta ou faça login.
2. Inserir aparelho: Na tela inicial, clique no + para adicionar o aparelho.
3. Preencher dados: Informe os dados solicitados (potência, tempo de uso,
quantidade) ou selecione um aparelho pré-definido.
4. Verificar gastos: O aplicativo calculará automaticamente o custo em reais,
tanto diário quanto mensal.
5. Salvar: Aperte no botão salvar.
6. Adicionar mais aparelhos: Repita o processo para quantos aparelhos forem
necessários. O valor total será atualizado em tempo real.
357
Este aplicativo foi desenvolvido para ser uma ferramenta prática e eficiente
para controle de gastos energéticos, proporcionando ao usuário uma visão clara e
objetiva sobre o impacto do uso de seus aparelhos eletrônicos no consumo mensal
de energia. Além disso, permite um acompanhamento constante e comparações
mensais, contribuindo para uma gestão mais consciente e econômica dos recursos
energéticos.
6. CONSIDERAÇÕES FINAIS
REFERÊNCIAS
GLOSSÁRIO
APÊNDICE(S)
Inserir o cronograma
Inserir o orçamento
Exemplo:
ANEXO(S)