Você está na página 1de 159

UNIVERSIDADE DE SO PAULO

ESCOLA DE ENGENHARIA DE SO CARLOS


DEPARTAMENTO DE ENGENHARIA ELTRICA
Sistema Autnomo de Vigilncia Baseado em Dados
Biolgicos com Registro de Dados na Nuvem
via Smartphone
Autores: Enzo Bertini Vieira e Lara Bertini Vieira
Orientador: Prof. Dr. Evandro L. L. Rodrigues
So Carlos
2014
ENZO BERTINI VIEIRA e LARA BERTINI VIEIRA
Sistema Autnomo de Vigilncia Baseado
em Dados Biolgicos com Registro de
Dados na Nuvem via Smartphone
Trabalho de Concluso de Curso apresentado
Escola de Engenharia de So Carlos, da
Universidade de So Paulo
Curso de Engenharia Eltrica
ORIENTADOR: Prof. Dr. Evandro L. L. Rodrigues
So Carlos
2014
AUTORIZO A REPRODUO E DIVULGAO TOTAL OU PARCIAL DESTE
TRABALHO, POR QUALQUER MEIO CONVENCIONAL OU ELETRNICO,
PARA FINS DE ESTUDO E PESQUISA, DESDE QUE CITADA A FONTE.
Vieira, Enzo Bertini
V658s Sistema autnomo de vigilncia baseado em dados
biolgicos com registro de dados na nuvem via Smartphone
/ Enzo Bertini Vieira, Lara Bertini Vieira; orientador
Evandro L.L.Rodrigues. - So Carlos, 2014.
Monografia (Graduao em Engenharia Eltrica) --
Escola de Engenharia de So Carlos da Universidade de
So Paulo, 2014.
1. Biometria. 2. Autonomia. 3. Bluetooth. 4. Banco
de dados. 5. Computao na nuvem. 6. Android. I. Titulo.
II. Vieira, Lara Bertini.
Dedicatria
Mais do que este trabalho, dedico todo meu empenho dirio, desde a formao bsica at
o ttulo de engenheiro, a minha famlia, em especial aos meus pais, irm, tia, av e namorada.
Atravs do cuidado, do apoio, do amor, do carinho, das crticas e dos conselhos que vocs
me proporcionam, sempre tenho foras para traar e atingir minhas metas e objetivos.
Enzo Bertini Vieira
Dedico este TCC e todo esforo depositado em seu desenvolvimento aos integrantes de
minha famlia, que sempre disponibilizaram-se a apoiar-me e amar-me mesmo discordando
de certas decises.
Lara Bertini Vieira
Agradecimentos
Agradeo a minha irm e parceira de TCC, Lara, por ter sido a pessoa que mais convi-
veu comigo durante minha vida acadmica, sempre se disponibilizando a ajudar no que fosse
necessrio; a minha tia Isabel e av Olga, por sempre estarem preocupadas com meu bem
estar, acompanhando de perto todo meu crescimento pessoal e acadmico; a minha namo-
rada Roberta, por estar sempre presente ao meu lado, apoiando, equilibrando, amando e me
completando de modo a me tornar um ser humano melhor e mais feliz; aos meus colegas
de curso, professores e funcionrios por ajudar com as diculdades intrnsecas de um curso
de engenharia, auxiliando na resoluo de problemas e entendimento das matrias; por m,
agradeo em especial aos meus pais, ngela e Givaldo, por nunca terem economizado es-
foros em proporcionar uma forte base de ensino, educao e conana, possibilitando-me
ingressar numa universidade de qualidade, ensinando-me a tomar minhas prprias decises e
a aprender com suas consequncias.
Enzo Bertini Vieira
Sou muito grata a meus pais e familiares, cuja educao, crticas e conversas francas
resultaram na construo consciente de meu carter e mentalidade como pessoa. Sou grata
aos professores, funcionrios e amigos que durante meus anos na USP me aconselharam
e me trataram bem. Sou grata especialmente aos professores Digenes Gonzaga, Evandro
Rodrigues e Rodrigo Ramos.
Lara Bertini Vieira
"Dont only practice your art, but force your way into its secrets,
for it and knowledge can raise men to the divine"
(Ludwig van Beethoven)
Resumo
Este projeto visa uma nova abordagem para um sistema de vigilncia mvel autnomo.
Uma pulseira biomtrica coleta dados sobre o batimento cardaco do usurio e os envia, via
bluetooth, para o mdulo de processamento, um smartphone com sistema operacional An-
droid, que faz a anlise destes batimentos cardacos e dene se o usurio est passando por
alguma situao de risco de morte, ou extremo estresse. O smartphone escreve, periodi-
camente, informaes em tempo imediato sobre o usurio, como localizao geogrca e
batimentos cardacos, num banco de dados na nuvem que, por sua vez, j contm informa-
es pessoais do usurio, como o tipo sanguneo, telefone para contato emergencial, alergias,
entre outros. A premissa que esses dados na nuvem sejam acessveis a todo o momento por
um servidor externo para servirem de base para um socorro mdico emergencial, ou seja, o
sistema visa prover auxlio imediato de uma maneira proativa e autnoma, de modo a pre-
servar vidas, sendo tambm de baixo custo e alcanvel a grande parte da populao. Foram
realizados diversos testes e simulaes demonstrando a adequabilidade do sistema proposto
para as situaes-problema apresentadas.
Palavras-Chave: biometria, autonomia, bluetooth, banco de dados, computao na nuvem,
Android.
Abstract
This project seeks a new approach to an autonomous and mobile surveillance system. A
biometric wristband collects data about the users heartbeat and sends them via bluetooth
to the processing module, a smartphone with Android operational system, which analyzes
the heart rate and determines whether the user is undergoing some death risk, or extreme
stress. The smartphone writes information, periodically and in immediate-time, about the
user, such as geographical location and heartbeat, in a cloud database service, which in turn,
already contain personal user information such as blood type, contact phone emergency, al-
lergies, among others. The premise is that data in the cloud are constantly accessible by an
external server as a basis for emergency medical help, in other words, the system aims to
provide immediate assistance in a proactive and autonomous way, in order to preserve life,
being low-cost and accessible to the majority of the population. Several tests and simulations
demonstrate the suitability of the proposed system to solve the problems presented.
Keywords: biometrics, autonomy, bluetooth, database, cloud computing, Android.
Lista de Figuras
2.1 Esquema de Funcionamento do Sistema . . . . . . . . . . . . . . . . . . . . 33
2.2 Fluxograma de Operao da PB . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3 Fluxograma de Operao do MP . . . . . . . . . . . . . . . . . . . . . . . . 34
4.1 Esquema de Funcionamento do Sistema Completo . . . . . . . . . . . . . . . 41
4.2 Transdutor Pulse Sensor Amped . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Resposta do Sensor Operando a 3v . . . . . . . . . . . . . . . . . . . . . . . 43
4.4 Arquitetura do Circuito Comparador de Tenso . . . . . . . . . . . . . . . . 44
4.5 Detalhe da Forma de Onda Originada pelo Pulse Sensor, quando em operao 45
4.6 Resultado da Simulao do Circuito Comparador de Tenso . . . . . . . . . 46
4.7 Comportamento do Circuito Comparador de Tenso Aps Montado . . . . . 46
4.8 Circuito Montado (Destaque em vermelho para a parte do Compardor de Ten-
so) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.9 Microprocessador PIC 18F2550 da Microchip . . . . . . . . . . . . . . . . . 48
4.10 Diagrama de Pinos do Microprocessador PIC 18F2550 . . . . . . . . . . . . 48
4.11 Arquitetura do Circuito de entorno ao Microprocessador . . . . . . . . . . . 49
4.12 Circuito Montado (Destaque em vermelho para a parte do Microprocessador) 49
4.13 Mdulo Bluetooth HC-05 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.14 Identicao dos Pinos do Mdulo Bluetooth HC-05 . . . . . . . . . . . . . 51
4.15 Diagrama de Classe UML da Classe MainActivity . . . . . . . . . . . . . . . 52
4.16 Diagrama de Classe UML da Classe ConnectedThread . . . . . . . . . . . . 53
4.17 Diagrama de Classe UML da Classe MyTimerTask . . . . . . . . . . . . . . 53
4.18 Diagrama de Classe UML da Classe GPSTracker . . . . . . . . . . . . . . . 54
4.19 Fluxo do Programa Desenvolvido . . . . . . . . . . . . . . . . . . . . . . . 55
4.20 Interface do Banco de Dados Utilizado . . . . . . . . . . . . . . . . . . . . 56
4.21 Smartphone Samsung Galaxy S3 . . . . . . . . . . . . . . . . . . . . . . . . 57
4.22 Tela de login do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.23 Tela de Execuo do Sistema (aparece aps usurio realizar login) . . . . . . 58
5.1 Exemplo de simulao para Disparo do Alarme referente Aumento da Frequn-
cia Cardaca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.2 Exemplo de simulao para Disparo do Alarme referente Diminuio da
Frequncia Cardaca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
A.1 Principais Partes do Crebro Envolvidas na Reao de Medo . . . . . . . . . 78
A.2 Comparativo do Caminho Baixo e Caminho Alto . . . . . . . . . . . . . . . 79
A.3 Fluxograma de Exemplicao do Caminho Baixo . . . . . . . . . . . . . . 79
A.4 Fluxograma de Exemplicao do Caminho Alto . . . . . . . . . . . . . . . 80
A.5 Fluxograma de Ao do Hipotlamo . . . . . . . . . . . . . . . . . . . . . . 81
A.6 Fluxo de Adrenalina em uma Situao Normal . . . . . . . . . . . . . . . . . 83
A.7 Fluxo de Adrenalina em uma Situao Anormal de Estresse . . . . . . . . . . 83
B.1 Venda Unitria Mensal (em Milhes) por Produto nos ltimos Anos . . . . . 86
B.2 Nmero de Unidades (em Milhes) por Produto nos ltimos Anos . . . . . . 86
D.1 Janela do Ambiente de Programao . . . . . . . . . . . . . . . . . . . . . . 97
D.2 Janela do SDK Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
D.3 Distribuio das Verses do Android (Dados Coletados em Abril e Maio de
2014) [1] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
D.4 Interface do Emulador Android, emulando um Smartphone modelo Nexus 4 . 102
D.5 Janela Principal do AVD, Contendo umAVDCriado que Emular o Smartphone
modelo Nexus 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
D.6 Arquitetura do Sistema Operacional Android . . . . . . . . . . . . . . . . . 104
D.7 Estrutura Geral de um Projeto Android . . . . . . . . . . . . . . . . . . . . . 106
D.8 Ciclo de Vida de Uma Activity . . . . . . . . . . . . . . . . . . . . . . . . . 109
E.1 Representao da classe Automvel . . . . . . . . . . . . . . . . . . . . . . 113
E.2 Representao da Associao Simples . . . . . . . . . . . . . . . . . . . . . 114
E.3 Representao da Herana . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
E.4 Exemplo de Herana entre a superclasse Automvel e a subclasse Caminho . 114
E.5 Representao da Agregao . . . . . . . . . . . . . . . . . . . . . . . . . . 115
E.6 Representao da Composio . . . . . . . . . . . . . . . . . . . . . . . . . 115
G.1 Representao do Modelo Hierrquico . . . . . . . . . . . . . . . . . . . . . 122
G.2 Representao do Modelo em Rede . . . . . . . . . . . . . . . . . . . . . . 122
G.3 Representao do Modelo Relacional . . . . . . . . . . . . . . . . . . . . . 123
G.4 Representao do Modelo Orientado a Objetos . . . . . . . . . . . . . . . . 124
H.1 Resposta do Sensor Quando Alimentado com 3v . . . . . . . . . . . . . . . . 126
H.2 Resposta do Sensor Quando Alimentado com 3,5v . . . . . . . . . . . . . . . 126
H.3 Resposta do Sensor Quando Alimentado com 4v . . . . . . . . . . . . . . . . 127
H.4 Resposta do Sensor Quando Alimentado com 4,5v . . . . . . . . . . . . . . . 127
H.5 Resposta do Sensor Quando Alimentado com 5v . . . . . . . . . . . . . . . . 128
H.6 Resposta do Sensor Quando Alimentado com 2,95v . . . . . . . . . . . . . . 128
H.7 Resposta do Sensor Quando Alimentado com 2,5v . . . . . . . . . . . . . . . 129
H.8 Resposta do Sensor Quando Alimentado com 2,34v . . . . . . . . . . . . . . 129
H.9 Grco de Resposta do Sensor com Diferentes Tenses de Alimentao . . . 130
Lista de Tabelas
1.1 Custo dos Sistemas de Segurana [2] . . . . . . . . . . . . . . . . . . . . . 30
4.1 Comandos AT Mais Utilizados e Importantes . . . . . . . . . . . . . . . . . 51
5.1 Comparativo do valor de BPM determinado por diferentes maneiras . . . . . 61
5.2 Principais Custos do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . 63
G.1 Comparao: Base de Dados x Processamento Tradicional de Arquivos . . . 124
H.1 Resposta do Sensor com Diferentes Tenses de Alimentao . . . . . . . . . 130
Siglas
ABESE Associao Brasileira das Empresas de Sist. Eletrnicos de Segurana
AD Analog to Digital - Analgico para Digital
ADT Android Development Tools - Ferramentas para Desenvolv. Android
API Application Programming Interface - Interface Programao Aplicativos
app Application - Aplicativo
AVD Android Virtual Device - Dispositivo Virtual do Android
BD Banco de Dados
CPF Cadastro de Pessoa Fsica
DC Direct Current - Corrente Contnua
DPI Dots per Inch - Pontos por Polegada
DVM Dalvik Virtual Machine - Mquina Virtual Dalvik
GPRS General Packet Radio Service - Servio de Rdio de Pacote Geral
GPS Global Positioning System - Sistema de Posicionamento Global
ID Identication - Identicao
IDE Integrated Development Environment - Ambiente Integrado de Desenvolv.
I/O Input/Output - Entrada/Sada
JDK Java Development Kit - Kit de Desenvolvimento Java
JSON JavaScript Object Notation - Notao de Objeto JavaScript
JVM Java Virtual Machine - Mquina Virtual Java
MP Mdulo de Processamento de Dados e Envio de Alerta
ODGM Object Database Management Group - Grupo Gesto de BDs a Objetos
PB Pulseira biomtrica
PDA Personal Digital Assistant - Assistente Pessoal Digital
PC Personal Computer - Computador Pessoal
PIC Peripherical Interface Controller - Interface Controladora de Perifricos
POO Programao Orientada a Objetos
SGBD Sistemas Gerenciadores de Bancos de Dados
SQL Structured Query Language - Linguagem de Consulta Estruturada
SO Sistema Operacional
UI User Interface - Interface do Usurio
UML Unied Modeling Language - Linguagem de Modelagem Unicada
URL Uniform Resource Locator - Endereo de Recurso Disponvel na Rede
XML Extensible Markup Language - Linguagem de Marcao Extensvel
23
Sumrio
1 Introduo 29
1.1 Segurana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.2 Requisitos Do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.3 Mtodo de Acionamento do Alarme . . . . . . . . . . . . . . . . . . . . . . 31
1.4 Denio do Sistema em Alto Nvel . . . . . . . . . . . . . . . . . . . . . . 31
1.5 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2 Especicao do Projeto 33
2.1 Funcionamento do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2 Pulseira Biomtrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.3 Mdulo de Processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Situaes de Anomalia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3 Embasamento Terico 37
3.1 Fisiologia do Estresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Dispositivos Mveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3 Programao Orientada a Objetos . . . . . . . . . . . . . . . . . . . . . . . 38
3.4 Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.6 Computao Na Nuvem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.7 Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4 Mtodos 41
4.1 Coleta do Batimento Cardaco - Pulseira Biomtrica . . . . . . . . . . . . . . 42
4.1.1 Funcionamento do Sensor . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.2 Operao do Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . 43
24
4.2 Processamento do Sinal do Sensor - Pulseira Biomtrica . . . . . . . . . . . 43
4.2.1 Arquitetura do Circuito . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3 Microprocessador - Pulseira Biomtrica . . . . . . . . . . . . . . . . . . . . 47
4.3.1 Arquitetura do Circuito . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.2 Programa Desenvolvido . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4 Mdulo Bluetooth - Pulseira Biomtrica . . . . . . . . . . . . . . . . . . . . 50
4.4.1 Congurao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4.2 Programa Para Congurao . . . . . . . . . . . . . . . . . . . . . . 51
4.5 Descrio das Classes - Mdulo de Processamento . . . . . . . . . . . . . . 51
4.5.1 MainActivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.5.2 ConnectedThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.5.3 MyTimerTask . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.5.4 GPSTracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.6 Fluxo do Programa - Mdulo de Processamento . . . . . . . . . . . . . . . . 54
4.6.1 Processamento Inicial . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.6.2 Evento: Boto Login . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6.3 Evento: Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.6.4 Evento: Boto Sair . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.7 Cdigo do Programa - Mdulo de Processamento . . . . . . . . . . . . . . . 57
5 Resultados e Discusses 59
6 Concluso 65
6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Apndice A Fisiologia do Estresse 77
A.1 O Medo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
A.2 O Processo de Criao do Medo . . . . . . . . . . . . . . . . . . . . . . . . 79
A.3 Reao de Luta ou Fuga . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
A.3.1 Efeitos da Reao de Luta ou Fuga . . . . . . . . . . . . . . . . . . . 81
A.3.2 Adrenalina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Apndice B Dispositivos Mveis 85
B.1 Histrico e Evoluo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
B.2 Era ps-PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
25
Apndice C Programao Orientada a Objetos 89
C.1 Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
C.2 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
C.3 Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
C.4 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
C.5 Abstrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
C.6 Encapsulamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
C.7 Ligaes e Associaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
C.8 Generalizao e Herana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
C.9 Polimorsmo e Sobrecarga . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
C.10 Construtores e Destrutores . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Apndice D Android 95
D.1 Histrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
D.2 Ferramentas para Ambiente de Programao . . . . . . . . . . . . . . . . . . 96
D.3 Congurao do Ambiente de Programao . . . . . . . . . . . . . . . . . . 97
D.3.1 ADT Bundle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
D.3.2 Standalone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
D.4 Adicionando Plataformas e Pacotes . . . . . . . . . . . . . . . . . . . . . . . 99
D.5 Verses do Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
D.6 Emulador Android SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
D.7 Criando e Congurando um AVD . . . . . . . . . . . . . . . . . . . . . . . 102
D.8 Arquitetura do Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
D.8.1 Nvel Zero - Linux Kernel . . . . . . . . . . . . . . . . . . . . . . . 104
D.8.2 Nvel Um - Libraries e Android RunTime . . . . . . . . . . . . . . . 104
D.8.3 Nvel Dois - Application Framework . . . . . . . . . . . . . . . . . . 105
D.8.4 Nvel Trs - Applications . . . . . . . . . . . . . . . . . . . . . . . . 106
D.9 Estrutura de Um Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
D.9.1 Diretrio src . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
D.9.2 Diretrio gen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
D.9.3 Diretrio res . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
D.9.4 Arquivo AndroidManifest.xml . . . . . . . . . . . . . . . . . . . . . 108
D.10 Ciclo de Vida de Uma Activity . . . . . . . . . . . . . . . . . . . . . . . . . 108
26
D.11 Dinmica de um Aplicativo . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
D.11.1 Ciclo de vida dos processos em Android . . . . . . . . . . . . . . . . 111
D.11.2 Threads em Android . . . . . . . . . . . . . . . . . . . . . . . . . . 111
D.11.3 Threads Trabalhadoras . . . . . . . . . . . . . . . . . . . . . . . . . 111
D.11.4 Eventos e Programao Orientada a Eventos . . . . . . . . . . . . . 112
Apndice E UML - Unied Modeling Language 113
E.1 Diagramas de Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
E.1.1 Representao de uma Classe . . . . . . . . . . . . . . . . . . . . . 113
E.1.2 Associao Simples . . . . . . . . . . . . . . . . . . . . . . . . . . 114
E.1.3 Generalizao e Herana . . . . . . . . . . . . . . . . . . . . . . . . 114
E.1.4 Agregao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
E.1.5 Composio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
E.2 Diagrama de Caso de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
E.3 Diagrama de Atividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
E.4 Diagrama de Sequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Apndice F Computao Na Nuvem 117
F.1 Tipologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
F.2 Modelos de Implantao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
F.3 Vantagens e Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Apndice G Banco De Dados 121
G.1 Modelos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
G.1.1 Modelo Hierrquico . . . . . . . . . . . . . . . . . . . . . . . . . . 122
G.1.2 Modelo em Rede . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
G.1.3 Modelo Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
G.1.4 Modelo Orientado a Objetos . . . . . . . . . . . . . . . . . . . . . . 123
G.2 Base de Dados x Processamento Tradicional de Arquivos . . . . . . . . . . . 124
Apndice H Caracterizao do Pulse Sensor Amped 125
H.1 Resposta do Sensor com Diferentes Tenses de Alimentao . . . . . . . . . 125
H.2 Anlise dos Resultados Obtidos . . . . . . . . . . . . . . . . . . . . . . . . 129
Apndice I Cdigo do Microprocessador 131
27
Apndice J Cdigo de Congurao do Mdulo HC-05 133
Apndice K Cdigo do Aplicativo para Android 135
K.1 Cdigo da Main Activity . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
K.2 Cdigo da Classe ConnectedThread . . . . . . . . . . . . . . . . . . . . . . 145
K.3 Cdigo da Classe MyTimerTask . . . . . . . . . . . . . . . . . . . . . . . . 146
K.4 Cdigo da Classe GPSTracker . . . . . . . . . . . . . . . . . . . . . . . . . 148
K.5 Cdigo do Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
K.6 Cdigo do Manifest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
28
29
Captulo 1
Introduo
1.1 Segurana
De acordo com a ABESE, no Brasil, existem mais de 12 mil empresas atuando no segmento
de sistemas eletrnicos de segurana, contudo apenas 9% so fabricantes, os outros dividem-
se entre revendedores e instaladores, monitoradores, integradores e distribuidores [3].
Em 2010, esse setor movimentou US$ 1,680 bilhes, apresentando um crescimento de
12% em comparao ao ano anterior. Nos ltimos nove anos, esse mercado vem crescendo
com taxa mdia anual de 13%, gerando cerca de 125 mil empregos diretos e mais de 1,4
milho indiretos [3].
Contudo, apesar do aumento no oferecimento de servios e sistemas de segurana, nota-
se tambm grande crescimento na taxa de roubos, vandalismo, incndio, assaltos, furtos de
carga, extorso a prossionais e empresas, e estupros, sendo que pelo menos 80% da po-
pulao brasileira j foi vtima de violncia, direta ou indiretamente [4]. Esse paradigma
decorrente, em grande parte, inexistncia de um sistema realmente convel e autnomo.
Roubo de cargas nas rodovias brasileiras, por exemplo, uma realidade que cresce 7% ao
ano: somente em 2009 o Brasil teve um prejuzo aproximado de R$ 1 bilho de reais (cerca
de 13.500 ocorrncias)[5]. Da mesma forma, o aumento no ndice de roubos de cargas tem
prejudicado exportadores de caf da regio do Tringulo Mineiro. Nos ltimos meses foram,
pelo menos, 10 caminhes roubados, com estimativa de perda de 2,5 bilhes de reais. O
fato de que 60% das mercadorias que circulam no Brasil utilizam vias rodovirias torna o
problema ainda mais agravante [5].
Consequentemente, observa-se morte de motoristas e vigilantes, prejuzos psicolgicos,
nanceiros e grandes intranquilidades no ambiente de negcios de logstica em nosso pas.
30
Vale notar que no basta apenas a melhoria de infraestrutura do sistema de segurana, mas
imprescindvel uma integrao maior entre as polcias rodoviria, civil e militar, para que a
informao do roubo ua rapidamente e o auxlio seja efetivo [6].
A opinio pblica brasileira segue a tendncia do mercado. Em 1989, 15% da populao
preocupava-se com a segurana pblica. Em 2012 este valor cresceu para 42%, sendo que
51% da populao classicou a segurana pblica como ruim ou pssima [4] e [7].
Visando uma soluo para esses problemas de segurana, foi proposto a elaborao de
um sistema seguro, convel e, acima de tudo, autnomo, isentando assim o usurio da
responsabilidade de indicar a presena de uma situao de risco.
1.2 Requisitos Do Sistema
Baseado num estudo sobre as tecnologias existentes no que tange aos sistemas de segurana
pessoal e corporativo, vericou-se que, atualmente os sistemas de segurana no possuem
autonomia o suciente para garantir uma resposta emergencial independente do usurio. Tal
prtica no eciente, uma vez que o usurio pode estar impossibilitado de acionar o sistema,
ou pode at mesmo no conseguir faz-lo, seja por medo, ansiedade ou nervosismo.
Foi constatado tambm que os sistemas atuais apenas servem para "remediar"a situao,
no atuando sobre evitar a situao de risco, nem de preservar o usurio. Dentre esses sis-
temas, os mais comuns para segurana mvel so os "bloqueadores"(apenas para veculos),
que consistem num sistema que bloqueia a ignio dos veculos aps o mesmo ser dado como
roubado, os "localizadores"que, mediante solicitao, informa a posio geogrca do bem
furtado, e os "Rastreadores"que guardam um histrico de localizao do bem furtado. Desta
maneira, todos eles no garantem a segurana do indivduo, bem como necessitam de uma
interveno humana para que se identique uma situao como de risco, e seus custos so
muito altos, como pode ser visto na tabela 1.1 [2].
Tipo Custo Mdio de Instalao Custo Mdio de Manuteno Mensal
Bloqueador 1.000 reais 40 reais
Localizador 1.000 reais 60 reais
Rastreador 6.000 10.000 reais 250 reais
Tabela 1.1: Custo dos Sistemas de Segurana [2]
Desta maneira, mostrou-se necessrio o desenvolvimento de uma ferramenta que pudesse
integrar um hardware de alta qualidade com um software de alta conabilidade, de modo que
31
tanto a identicao das situaes de risco quanto sua correspondente ajuda devessem ser
realizadas automaticamente (sem que houvesse a necessidade do usurio acionar um boto
de emergncia, por exemplo), reduzindo tambm o tempo de resposta a tais situaes.
Contudo, um dos desaos baseava-se no fato de encontrar um mtodo para acionar o
sistema automaticamente, ou seja, seria necessrio pesquisar uma maneira convel de se
detectar uma situao de risco, e tal deteco deveria ocorrer no menor tempo possvel.
1.3 Mtodo de Acionamento do Alarme
Buscando a autonomia no acionamento do alarme, optou-se por coletar os batimentos carda-
cos do usurio do sistema de segurana, e, a partir do mesmo, vericar a existncia ou no
de uma situao de risco. Tal opo se mostrou vivel pois o corpo humano possui respostas
conhecidas quando exposto situaes de estresse.
Nos captulos posteriores, sero abordadas informaes mais detalhadas sobre o porque
deste mtodo de acionamento do alarme, bem como um melhor detalhamento da resposta
biolgica em situaes de estresse.
1.4 Denio do Sistema em Alto Nvel
Tendo em mente os problemas de segurana j abordados, bem como os requisitos de projeto,
pensou-se em solues prticas para o problema em questo. Desta maneira, aps diversos
estudos crticos, prope-se nesse trabalho um sistema composto por dois mdulos, sendo
eles o mdulo de aquisio dos batimentos cardacos, chamado neste trabalho de pulseira
biomtrica (PB), e o mdulo de processamento de dados e envio de alerta (MP).
A ttulo de comodidade, esttica e conforto de utilizao, decidiu-se por fazer a comu-
nicao entre os dois mdulos de maneira sem o, via bluetooth, uma vez que seria muito
incmodo a utilizao dos dois mdulos acoplados ao pulso do usurio.
Como deniu-se que o sistema de deteco de situao de perigo seria feito tomando-se
como base a variao dos batimentos cardacos, deniu-se a necessidade de um transdutor
adequado para a coleta desta propriedade. Com a aquisio do sinal realizada, o mesmo
deve ser processado e enviado para o MP que, por sua vez, deve vericar a existncia ou no
de uma situao de perigo para o usurio. Aps a vericao, as informaes relativas ao
usurio, como batimento cardaco, posio geogrca, entre outras devem ser escritas num
32
banco de dados na nuvem.
Como o batimento cardaco uma varivel individual, ou seja, cada pessoa possui um
batimento cardaco prprio, dependendo de seu estado de atividade corporal (repouso ou
exerccio), o algoritmo para avaliao dos batimentos cardacos e deteco de perigo deve ter
um comportamento de modo a reconhecer tais estados, para poder tomar decises corretas
sobre a presena ou no de uma situao de risco. Maiores detalhes sobre a arquitetura do
sistema e dos algoritmos sero apresentadas nos prximos captulos.
1.5 Objetivos
O objetivo consiste no desenvolvimento de um sistema de segurana autnomo, modular
e porttil, baseado na resposta cardaca do corpo humano em reaes de perigo. Tanto o
hardware como o software do sistema possui como principal pilar a conabilidade e rapidez
para uma comunicao em tempo imediato. O projeto foi voltado para a rea de segurana,
e tem como responsabilidade social a reduo de criminalidade, roubos e mortes por falha de
segurana.
33
Captulo 2
Especicao do Projeto
Este captulo visa esclarecer e descrever o funcionamento do sistema desenvolvido, incluindo
a interao entre a PB e o MP, transmitindo assim o escopo do projeto. Todo embasamento
terico, descrio dos materiais utilizados e os mtodos sero tema dos captulos seguintes.
2.1 Funcionamento do Sistema
Como j explicado de maneira genrica no captulo 1, o sistema contar com dois mdulos
(PB e MP), cuja comunicao feita sem o, identicando situaes de risco de maneira
autnoma, dada a resposta cardaca ao medo e ao estresse.
A interao entre estes dois mdulos se dar via bluetooth. Como o banco de dados
utilizado ser na nuvem, a comunicao entre o MP e o Banco de Dados se dar pela internet.
A gura 2.1 apresenta um ilustrativo para tal funcionamento.
Figura 2.1: Esquema de Funcionamento do Sistema
Ressalta-se que este trabalho de concluso de curso se limita a implementao at a etapa
de populao do Banco de Dados (conforme hachurado na gura 2.1). Optou-se por no
desenvolver a parte do servidor, visando manter o foco no dispositivo mvel e sua integrao
34
com um hardware externo.
2.2 Pulseira Biomtrica
Apulseira biomtrica contmumtransdutor que coletar informaes referentes ao batimento
cardaco do usurio. Este sensor, por sua vez, tem sua resposta enviada para um circuito para
processar o sinal o quanto necessrio de modo a torn-lo utilizvel por um microprocessador.
O microprocessador contabiliza os batimentos cardacos por minuto e estes so disponibili-
zados via bluetooth para o MP.
A gura 2.2 apresenta o uxograma de operao da PB
Figura 2.2: Fluxograma de Operao da PB
2.3 Mdulo de Processamento
Por denio de projeto, o banco de dados deve conter, alm do batimento cardaco do usu-
rio, sua localizao (latitude e longitude). Aps um estudo constatou-se que a melhor ma-
neira de implementar tal mdulo seria utilizando um smartphone com sistema operacional
Android, uma vez que o mesmo possui em sua estrutura circuitos de comunicao bluetooth,
de localizao geogrca e acesso internet mvel.
A gura 2.3 apresenta o uxograma de operao do MP.
Figura 2.3: Fluxograma de Operao do MP
35
2.4 Situaes de Anomalia
As situaes que sero identicadas como anormais esto dispostas a seguir:
Situao 1: Se a distncia entre a PB e o MP for grande o suciente para interromper
sua comunicao;
Situao 2: Se a PB for destruda ela cessar sua comunicao com o MP (anlogo
Situao 1);
Situao 3: Se o banco de dados cessar seu recebimento de informaes sem o usurio
ter desligado o sistema (por exemplo, destruio do MP);
Situao 4: Se uma situao de perigo for identicada pelo aumento dos batimentos
cardacos;
Situao 6: Se uma situao de perigo for identicada pela diminuio dos batimentos
cardacos. Neste caso um alarme sonoro local tambm ser acionado, pois isso pode
indicar situao de sonolncia.
Ressalta-se ainda que:
Optou-se por soar um alarme na diminuio da frequncia cardaca pois foi pensado
na possibilidade do usurio dormir enquanto dirige, desta maneira o sistema protege o
usurio tambm nestas situaes;
Ao ligar o sistema, o usurio dever colocar seu CPF e senha, isso evitar que pessoas
utilizem indevidamente o sistema;
O sistema contar com uma interface simples e enxuta, de modo a no reter a ateno
do usurio;
O intuito da central de segurana ser o de possuir um servidor que car vericando o
banco de dados por uma ag de anomalia.
36
37
Captulo 3
Embasamento Terico
Como j explanado anteriormente, este trabalho possui grande multidisciplinaridade e abran-
ge diversas reas da engenharia e de programao. Desta maneira, sero apresentados os
contedos tericos que formaram o embasamento dos alunos para o desenvolvimento do
trabalho.
Devido ao fato de alguns embasamentos tericos possurem contedo bastante extenso,
optou-se pela criao de seus respectivos apndices, aumentando assim a organizao, com-
preenso e uidez de leitura do trabalho.
3.1 Fisiologia do Estresse
O estresse pode ser resumido como um processo de respostas do organismo aos estmulos no-
civos. E que, como resultado, altera o metabolismo como um todo. Estresse est relacionado
com a ansiedade, ou seja, com o desejo de nalizar a sensao fsica e psquica do contato
com a realidade, acarretando assim em medo.
Por ser um assunto muito vasto e de grande complexidade, desenvolveu-se o Apndice A
para um melhor detalhamento do estudo realizado.
3.2 Dispositivos Mveis
Os dispositivos portteis como smartphones e tablets vem ganhando mercado graas sua
crescente capacidade de processamento e de armazenamento, bem como sua facilidade de
uso, leveza e portabilidade. Somado a essas caractersticas, a grande maioria dos aparelhos
possuem cmeras, sensores de distncia e luz, acelermetro, GPS, comandos de voz e telas
38
sensveis ao toque o que permite manipulao sem mouse e teclado.
Com tantas funcionalidades, os mesmos esto abrindo uma nova gama de oportunida-
des para sua aplicabilidade como novas e alternativas ferramentas de pesquisa e trabalho. O
Apndice B aborda algumas caractersticas de maneira mais aprofundada sobre tais apare-
lhos.
3.3 Programao Orientada a Objetos
Com o surgimento da Engenharia de Software vrias tcnicas de programao foram de-
senvolvidas visando aumentar a qualidade e produtividade dos softwares. Desta maneira,
vericou-se que a reutilizao de cdigos era o segredo para promover a melhoria buscada
pela Engenharia de Software. Desta maneira, foi vericado que as tcnicas de programao
estruturada no eram sucientes para alcanar satisfatoriamente o nvel de melhoria buscado,
assim sendo, na dcada de 60, surgiu a teoria de orientao a objetos [8].
De uma forma abstrata, o intuito bsico da POO(Programao Orientada a Objetos) o de
aproximar o mundo real do virtual por meio do uso de Objetos. Assim sendo, o programador
dever moldar tais objetos e denir como dever ser feita a interao entre os mesmos, de
forma que atinjam funcionalidades requeridas para um correto funcionamento do software.
Em suma, a ideia principal de programao orientada a objetos consiste na possibilidade
de aglomerar, em uma nica estrutura de dados (classe), seus atributos (caractersticas) e seus
mtodos (funes). Desta forma, uma varivel do tipo desta classe chamada objeto, e este
objeto conter seus prprios dados e funes. As funes que um objeto pode executar so
chamadas de mtodos. Tais mtodos, de modo geral, so o nico meio de acesso aos seus
campos de dados, chamados de variveis de instncia.
No Apndice C sero explicadas as denies especcas da POO, bem como as mesmas
sero caracterizadas de maneira mais profunda e clara.
3.4 Android
O Android um sistema operacional mvel que roda sobre o ncleo Linux. Foi inicialmente
desenvolvido pela Google e posteriormente pela Open Handset Alliance, sendo que a Google
a responsvel pela gerncia do produto e engenharia de processos. O Android permite
aos desenvolvedores escreverem software na linguagem de programao Java controlando
39
o dispositivo via bibliotecas desenvolvidas pela Google [9]. Maiores detalhes sobre este
assunto poder ser vericado no Apndice D.
3.5 UML
AUML, Unied Modeling Language, umpadro internacional, que permite a especicao,
construo e documentao de softwares que utilizemprogramao orientada a Objetos, desta
maneira, a UML independe da linguagem de programao utilizada.
No Apndice E deste trabalho sero descritos e exibidos os conceitos bsicos, sintaxes
e signicados de alguns diagramas para que, futuramente, os mesmos possam ser utilizados
para facilitar o entendimento e documentao, principalmente das classes, do software nal.
3.6 Computao Na Nuvem
O conceito de computao na nuvem consiste, em suma, na utilizao de recursos fsicos
remotos presentes na rede de computadores atravs da internet, permitindo, desta maneira,
que sejam executadas diversas tarefas, como o de armazenamento de dados, independente do
hardware utilizado, local fsico e sem a preocupao com a estrutura fsica de hardware.
Um melhor detalhamento sobre o conceito, bem como sua classicao e pontos positivos
e negativos sero descritos no Apndice F.
3.7 Banco de Dados
Por denio, um banco de dados uma coleo de dados logicamente coerente que possui
um signicado implcito cuja interpretao dada por uma determinada aplicao [10].
Um BD uma entidade na qual possvel armazenar dados de maneira estruturada e com
a menor redundncia possvel, com o intuito de alimentar programas e usurios diferentes.
Desta maneira, a noo bsica de dados est acoplada geralmente a uma rede, a m de poder
compor um acervo de informaes, da o nome banco [11].
Vale ressaltar que dados e informaes no so palavras sinnimas. Enquanto dados
so fatos brutos, em sua forma primria, que muitas vezes no fazem sentido sozinhos, as
informaes consistem no agrupamento de dados de forma organizada para fazer sentido e
gerar conhecimento.
40
Para maiores detalhamentos sobre os BDs foi elaborado o Anexo G, que contm informa-
es adicionais sobre estes.
41
Captulo 4
Mtodos
O sistema proposto pode ser facilmente encarado como a interao entre dois mdulos dis-
tintos, a PB e o MP, conforme apresentado no captulo "Especicao do Projeto". Assim
sendo, nesta seo sero apresentados os conceitos e mtodos empregados para a elaborao
das aplicaes descritas anteriormente, detalhando tambm os materiais utilizados e hardwa-
res/softwares desenvolvidos.
Para um melhor entendimento, as primeiras sees abordam o que foi desenvolvido para
a PB, seguido pelo entorno do MP.
A gura 4.1 serve apenas como um parmetro para facilitar o alinhamento entre as sees
desenvolvidas neste captulo com as partes do sistema proposto.
Figura 4.1: Esquema de Funcionamento do Sistema Completo
42
4.1 Coleta do Batimento Cardaco - Pulseira Biomtrica
Como o sistema baseia-se na identicao do perigo via comportamento da pulsao car-
daca, a escolha do sensor para aquisio de tal batimento torna-se fundamental para o traba-
lho.
Aps diversas pesquisas para denir o sensor mais apropriado, optou-se pelo "Pulse Sen-
sor Amped", que pode ser visto na gura 4.2.
Figura 4.2: Transdutor Pulse Sensor Amped
4.1.1 Funcionamento do Sensor
Este sensor foi projetado com intuito inicial de ser utilizado na plataforma Arduino e ser de
fcil aplicao. Possuindo apenas 3 pinos de conexo (alimentao, terra e sada do sinal),
foi projetado para que o usurio simplesmente ligue o mesmo na alimentao, coloque-o em
contato com, por exemplo, a ponta do dedo, e colete os dados referentes a resposta cardaca
[12].
Mesmo tendo sido projetado para Arduino, em termos funcionais, ele pode ser visto ape-
nas como um sensor analgico, podendo assim ser utilizado em qualquer outra plataforma.
Seu funcionamento relativamente simples: Na parte frontal do sensor (gura 4.2), pode
ser vericado um pequeno buraco no meio, que onde ca um LED na cor verde. Prximo
a esse LED, pode-se vericar um pequeno quadrado, que corresponde a um sensor de luz
ambiente (fotodiodo), exatamente como os encontrados emsmartphones e tablets para ajustar
automaticamente o brilho da tela e acordo com diferentes iluminaes ambientes [12].
Desta maneira, quando o sensor ligado, o LED ca constantemente aceso, iluminando
a ponta do dedo ou o lbulo da orelha (ou qualquer tecido que contenha vasos capilares em
43
seu entorno), enquanto o sensor de luz recebe a luz reetida. Tal luz reetida corresponde a
reetividade relativa do sangue nos tecidos capilares, uma vez que a hemoglobina anexada a
molculas de oxignio reete uma quantidade de luz diferente da hemoglobina no anexada.
Assim sendo, a resposta do sensor anloga ao de uma pletismograa, ou seja, ela consiste
na variao do volume dos vasos capilares, sendo tal variao identicada via diferentes
concentraes de hemoglobina anexada com molculas de oxignio [13].
4.1.2 Operao do Sensor
Em teoria, de acordo com o fabricante, o sensor opera na faixa de 3 a 5V, contudo, aps sua
caracterizao em laboratrio, optou-se por trabalhar com o mesmo o mais prximo possvel
de 3v, pois com uma alimentao nesse entorno que se consegue uma melhor resposta,
como pode ser vericado na gura 4.3. Quando o sensor est ligado, porm no est em
contato com tecidos capilares, sua resposta corresponde a um sinal DC de v/2 volts, sendo
v a tenso de alimentao. O Apndice H mostra os resultados obtidos da caracterizao do
mesmo.
Figura 4.3: Resposta do Sensor Operando a 3v
4.2 Processamento do Sinal do Sensor - Pulseira Biomtrica
Como j apresentado, o sensor possui uma resposta peridica (se o batimento cardaco for
constante) e contnua no tempo. Antes de enviar tal sinal para o microprocessador contar os
44
batimentos, foi necessrio desenvolver um estgio intermedirio para tratar tal sinal, de modo
que o microprocessador pudesse interpret-lo como um sinal digital.
Como neste projeto o intuito contar os batimentos, foi proposto desenvolver um circuito
para identicar a ocorrncia do batimento, dando como resposta um sinal lgico dependendo
da entrada provida pelo sensor cardaco.
Como a resposta do sensor cardaco sempre a mesma, alterando-se apenas sua frequn-
cia (e, dependendo do usurio, alterando um pouco a amplitude do sinal), pensou-se na utili-
zao de um circuito comparador de tenso.
4.2.1 Arquitetura do Circuito
O circuito comparador de tenso foi a arquitetura escolhida para processar o sinal do trans-
dutor. Seu funcionamento consiste em comparar o sinal de entrada vindo do sensor cardaco
(V
sensor
), com um sinal de tenso de referncia. Sempre que o sinal de entrada for maior que
o de referncia, o comparador de tenso altera seu nvel de tenso de sada, e quando o sinal
de entrada volta a ser menor que o de referncia, o comparador de tenso volta a ter como
sada seu valor de tenso original.
A arquitetura do circuito pode ser vista na gura 4.4.
Figura 4.4: Arquitetura do Circuito Comparador de Tenso
A parte destacada gura 4.4 a responsvel por gerar a tenso de referncia. Ela consiste
num simples divisor resistivo, que segue o seguinte equacionamento:
V
re f erencia
=
R
1
R
1
+R
2
.V
in
Onde V
in
corresponde tenso de entrada, no caso, 5v e V
re f erencia
a tenso de referncia.
45
Contudo, para denir-se o valor de V
re f erencia
, deve-se atentar para algumas variveis:
Sabe-se que o sensor, quando no est em contato com tecidos capilares, possui uma
sada de v/2, onde v a tenso de alimentao do sensor. Como deniu-se que o sensor
seria alimentado com 3v, em vazio, o mesmo caria com um sinal constante de 1, 5
volts. Assim sendo, V
re f erencia
deve ser sucientemente maior que 1, 5 v;
Quando em operao, o sensor possui uma forma de onda como mostrada na gura
4.5. Nesta gura est destacado o perodo da onda, no qual pode-se notar a existn-
cia dos picos referentes a sstole e a distole (contrao e relaxao dos ventrculos,
respectivamente). Desta maneira:
O valor de V
re f erencia
deve ser menor que o valor de amplitude do primeiro pico
(sstole), ou seja, 2,76v;
O valor de V
re f erencia
deve ser maior que o valor de amplitude do segundo pico
(distole), ou seja, 1,5v.
Figura 4.5: Detalhe da Forma de Onda Originada pelo Pulse Sensor, quando em operao
Assim sendo, admiti-se um valor de V
re f erencia
de 1,6v e desenvolveu-se os clculos:
V
re f erencia
=
R
1
R
1
+R
2
.V
in
1, 6 =
R
1
R
1
+R
2
.5 R
1
= 0, 32. (R
1
+R
2
)
R
2
= 2, 125.R
1
Assim sendo, optou-se por R
2
= 8, 2k e R
1
= 3, 9k (valores comerciais). Dessa ma-
neira, medidos os valores de resistores selecionados(R
2
= 8, 20k e R
1
= 3, 96k), pde-se
vericar o valor real de V
re f erencia
:
46
V
re f erencia
=
R
1
R
1
+R
2
.V
in
V
re f erencia
=
3, 96k
3, 96k+8, 20k
.5 V
re f erencia
=1, 63volts
Desta maneira, toda vez que o sinal do sensor for mais que 1,63v, o circuito comparador
de tenso mudar seu estado. Para vericar tais condies, foi feito a simulao do circuito
(gura 4.6 ), utilizando uma senoide com offset DC de 1,5v e amplitude 1v.
Figura 4.6: Resultado da Simulao do Circuito Comparador de Tenso
Aps vericar o funcionamento do circuito na ferramenta de simulao, o mesmo foi
montado e testado, obtendo o resultado da gura 4.7.
Figura 4.7: Comportamento do Circuito Comparador de Tenso Aps Montado
47
Figura 4.8: Circuito Montado (Destaque em vermelho para a parte do Compardor de Tenso)
4.3 Microprocessador - Pulseira Biomtrica
Como sinal vindo do sensor e tratado pelo circuito comparador de tenso, o microprocessador
ento responsvel por contabilizar os batimentos cardacos e envi-los ao mdulo bluetooth
via porta serial.
Para isto, foi escolhido o microprocessador 18F2550 da Microchip (gura4.9), que um
DIP28 (Dual Inline Package 28), ou seja, possui duas las de 14 pinos, totalizando 28 (gura
4.10). Sua escolha se deu baseado em diversos fatores:
Cada pino no tem uma nica funo. Dependendo das necessidades de cada aplicao,
pode-se utilizar cada uma das funes de certo grupo de pinos;
Possui 4 timers sendo 1 de 8 bits e o restante de 16 bits, 24 pinos de I/O, conversor AD
de 10 bits;
Tecnologia nanoWatt: Utilizando oscilao interna pode-se reduzir consumo de energia
em at 90%; o core da CPU pode ser desabilitado enquanto seus perifricos so manti-
dos ativos, reduzindo seu consumo em at 4% do original; e seus modos de economia
de energia podem ser chamados na prpria programao, permitindo a otimizao de
consumo via software;
48
Baixo custo (em torno de 17 reais) dado seu timo desempenho.
Assim sendo, ao mesmo tempo que esse PIC supre as necessidades do projeto, ele ainda
possui capacidade o suciente para futuras novas implementaes no sistema, almde possuir
baixo consumo quando oscilando internamente, caracterstica essa essencial para a PB, que
um dispositivo mvel e necessita da maior autonomia possvel.
Figura 4.9: Microprocessador PIC 18F2550 da Microchip
Figura 4.10: Diagrama de Pinos do Microprocessador PIC 18F2550
4.3.1 Arquitetura do Circuito
Como o microprocessador possui oscilador interno, a arquitetura do circuito de entorno do
microprocessador ca bastante simples, no necessitando de capacitores e cristais para gerar
a oscilao. A gura 4.11 mostra o circuito contendo dois LEDs para ajustes na programao
e teste de controle de uxo do programa, uma chave para reset, bem como o pino de entrada
para o sinal do sensor j passado pelo comparador de tenso, identicado por SENSOR e o
pino de envio de informaes para o mdulo bluetooth, identicado por DATA OUT.
49
Figura 4.11: Arquitetura do Circuito de entorno ao Microprocessador
Figura 4.12: Circuito Montado (Destaque em vermelho para a parte do Microprocessador)
4.3.2 Programa Desenvolvido
O sinal provindo do comparador de tenso binrio, ou seja, ele vale ou 0v ou 5v. Alm
disso, a ocorrncia de um batimento cardaco pode ser identicada como uma descida de
borda neste sinal, ou seja, para cada batida completa do corao, haver uma descida de
borda do sinal.
Baseado nisso, o programa desenvolvido utiliza o counter 0 do microprocessador para
contabilizar a quantidade de descidas de borda do sinal, numa janela de 15 segundos que
gerada a partir de um delay no programa. Ao nal deste delay, multiplica-se o valor do
50
contador por 4, simulando assim uma janela de aquisio de 1 minuto e tal valor enviado
ao mdulo bluetooth.
O envio do valor do batimento cardaco segue o padro *CDU (asterisco, centena, dezena
e unidade), sendo o asterisco um caractere de sincronismo. Assim, um envio completo de um
batimento consiste no envio separado do caractere de sincronismo, seguido pela centena do
valor do batimento, dezena e por m, unidade.
O cdigo desenvolvido pode ser vericado no Apndice I. Ressalta-se que este est com-
pletamente comentado, facilitando assim sua interpretao e provendo um maior detalha-
mento de seu uxo e aes.
4.4 Mdulo Bluetooth - Pulseira Biomtrica
O mdulo bluetooth utilizado foi o JY-MCU da fabricante Linvor, mais conhecido como HC-
05 (nome de seu rmware). De maneira simplicada, sua operao consiste na converso
de sinais recebidos via interface serial para interface bluetooth. Apesar de ser um mdulo
bastante verstil e fcil de usar, sua documentao um tanto quanto falha (contm alguns
erros) e escassa.
Figura 4.13: Mdulo Bluetooth HC-05
4.4.1 Congurao
Mediante o uso dos chamados "comandos AT", deve-se congurar o mdulo antes de iniciar
sua utilizao. Tais comandos permitem denir o nome no qual ele poder ser descoberto,
sua senha, baud rate, entre outros.
Para congur-lo, deve-se seguir alguns simples passos em sua inicializao:
Conecte os pinos GND, TXD e RXD, deixando os pinos VCC e KEY desconectados
(gura 4.14);
51
Coloque o pino KEY em nvel alto. Este pino o nico que opera em 3.3v, todos os
outros operam em 5v;
Conecte o pino VCC;
Feito isso o mdulo entrar no modo de congurao. Neste modo o mdulo ca aguar-
dando o recebimento de comandos AT via serial a um baud rate de 38400. A tabela 4.1
apresenta alguns dos comandos mais utilizados e importantes, sendo que os comandos po-
dem ser vericados facilmente no datasheet do componente [14].
Funo Comando Resposta Parmetro
Reset Dispositivo AT+RESET OK No h
Cong. Comunicao AT+UART=Param1,Param2,Param3 OK Param1: baud rate; Param2: Se 0 -> 1 stop
bit , se 1 -> 2 stop bits; Param3: bit paridade
Cong. Nome AT+NAME=Param OK Param: Nome desejado
Cong. Senha AT+PSWD=Param OK Param: Senha desejada
Tabela 4.1: Comandos AT Mais Utilizados e Importantes
Figura 4.14: Identicao dos Pinos do Mdulo Bluetooth HC-05
4.4.2 Programa Para Congurao
Utilizando os comandos AT necessrios, o mdulo foi congurado de acordo com o desejado.
O programa utilizado para a programao pode ser vericado no Apndice J. O cdigo foi
executado sobre o microprocessador PIC 18F2550, o mesmo descrito nas sees anteriores.
4.5 Descrio das Classes - Mdulo de Processamento
Para detalhar o funcionamento do MP, optou-se por primeiro descrever as classes criadas,
em seguida o uxo do programa, para ento apresentar o cdigo. Como o Android uma
linguagem orientada a eventos e a objetos, a apresentao proposta torna seu entendimento
mais claro.
52
4.5.1 MainActivity
Figura 4.15: Diagrama de Classe UML da Classe MainActivity
Essa a classe principal da aplicao inteira e tambm a nica classe que herda as caracte-
rsticas de uma atividade. Basicamente ao ligar a app, ocorre a congurao da interface com
53
o usurio e ento estabelecido um canal de comunicao com o dispositivo bluetooth.
O canal de comunicao supracitado trata-se de um socket especial para receber e enviar
dados bluetooth. Neste caso, como haver apenas a recepo de dados, criou-se apenas um
canal para recepo. Para garantir que a UI thread no que presa lendo os dados que chegam,
cria-se uma thread que far isso totalmente em paralelo.
4.5.2 ConnectedThread
Figura 4.16: Diagrama de Classe UML da Classe ConnectedThread
Essa classe faz a leitura dos dados que entram atravs do canal de comunicao estabelecido
entre o dispositivo mvel Android e o mdulo bluetooth. Os dados recebidos so ento
armazenados num buffer. Esses dados so ento enviados a um Handler cujo papel manter
um registro das ltimas 10 leituras de batimentos cardacos e fazer o processamento para
vericar a ocorrncia de anomalia.
Caso anomalia seja identicada e o usurio esteja logado, ser emitido um alerta sonoro.
Caso ele no estiver logado, nada acontecer.
4.5.3 MyTimerTask
Figura 4.17: Diagrama de Classe UML da Classe MyTimerTask
Esta classe usada para criar interrupes peridicas para que os ltimos registros referentes
localizao GPS, ocorrncia de anomalia, batimento cardaco e tempo sejam armazenados
no banco de dados.
54
4.5.4 GPSTracker
Figura 4.18: Diagrama de Classe UML da Classe GPSTracker
Classe construda com o nico propsito de tornar modular a obteno de informaes sobre
latitude e longitude do dispositivo mvel. Toda complicao "escondida"numa nica classe.
4.6 Fluxo do Programa - Mdulo de Processamento
Aplicaes para dispositivos Android no necessariamente seguem um nico uxo sequen-
cial. Alis, pelo contrrio, so em sua maioria regidas por interrupes, eventos ou threads
paralelas.
Tendo em vista esse panorama, so descritos os principais uxos da aplicao individu-
almente, para que o todo possa ser compreendido pelo entendimento de cada parte indivi-
dualmente. A gura 4.19 prov um uxograma de apoio para o entendimento do uxo de
operao.
55
Figura 4.19: Fluxo do Programa Desenvolvido
4.6.1 Processamento Inicial
Oprocessamento inicial refere-se thread principal, ou UI thread. Ao iniciar a aplicao todo
contedo grco necessrio para interao com o usurio inicializado. Logo em seguida,
para que a aplicao j possa iniciar o recebimento de dados bluetooth, cria-se um canal de
comunicao entre o celular e o mdulo bluetooth. Dispara-se ento uma thread que ser
responsvel por ler os dados vindouros do canal e trat-los.
Essa thread ser executada toda vez que o smartphone receber dados via bluetooth. Con-
forme especicado anteriormente, os dados so enviados caractere a caractere, seguindo o
formato *CDU (asterisco, centena, dezena e unidade), desta maneira, aps lido os quatro
caracteres referentes a informao sobre um batimento, esta informao inserida no vetor
dinmico de 10 posies, que sempre contm os 10 ltimos registros de batimentos cardacos
adicionados.
Ainda nesta thread ocorre a determinao de situao de risco devido o aumento ou dimi-
nuio dos batimentos cardacos. Pelas informaes contidas no vetor dinmico determina-se
a mdia dos batimentos cardacos. Esta media utilizada para o clculo do valor mximo que
o ltimo batimento cardaco recebido pode possuir. Para isto, utiliza-se a frmula:
BPM
Max
= 0.00384.media
2
0.357.media+128
56
Se o ltimo valor recebido superar tal valor mximo, levanta-se a ag anomalia que,
posteriormente escrita no banco.
Alm disso, se o ltimo batimento for menor que 50, novamente levanta-se a ag.
Para determinar tais valores limiares, partiu-se do fato que, em sonolncia, o batimento
pode chegar a 40 BPM, bem como, em estado acelerado,pode atingir at mesmo 200 BPM.
Contudo, a variao porcentual frente a uma situao de stress muito maior se o usurio
estiver em repouso do que se estiver se exercitando, surgindo assim a necessidade da frmula
de limite mximo ser quadrtica.
Por ltimo, nesta thread tambm coletado o horrio do sistema, para que, no evento ti-
mer esse horrio seja comparado com o horrio da escrita, vericando se houve destruimento
da PB (identicado pelo no recebimento de dados via bluetooth).
4.6.2 Evento: Boto Login
Aps o usurio ter digitado o CPF e senha, e ter apertado o boto de login, uma busca
feita pelos objetos armazenados no banco de dados, e verica-se a existncia do objeto es-
pecicado. Caso o login seja efetuado com sucesso, o timer das interrupes peridicas
inicializado, bem como indicado no banco que o usurio fez login.
Figura 4.20: Interface do Banco de Dados Utilizado
4.6.3 Evento: Timer
Quando uma interrupo peridica ocorre, dados GPS so adquiridos e salvos no banco de
dados, assim como dados referentes ocorrncia de anomalia, ltimo registro de batimento
cardaco, e horrio em que as informaes esto sendo salvas no banco. Aqui tambm
vericado o horrio do ltimo recebimento de um dado via bluetooth, de modo que, se tal
horrio for grande, enviado ao banco que ocorreu uma anomalia.
57
4.6.4 Evento: Boto Sair
Aps o usurio ter apertado o boto de encerramento do aplicativo, os recursos alocados pro-
gramaticamente so liberados, ocorre uma ltima escrita em banco e a aplicao nalmente
encerrada.
A ltima escrita no banco serve para identicar que o usurio fez logoff do sistema, isso
serve para que um servidor externo possa vericar se MP foi destrudo, ou seja, se usurio
constar como logado e no tiver enviando informaes, ocorreu uma anomalia.
4.7 Cdigo do Programa - Mdulo de Processamento
Ocdigo resultante do desenvolvimento da aplicao est presente no Apndice K. As classes
descritas acima, bem como o uxo de execuo podem ser vericados, sendo necessrio
apenas uma base inicial de programao orientada a objetos e java. Ressalta-se que o cdigo
foi completamente comentado a m de proporcionar um maior entendimento sobre o mesmo.
As guras 4.22 e 4.23 exibem a interface do programa desenvolvido, sendo executado em
um smartphone modelo Galaxy S3, da fabricante Samsung 4.21. O cdigo XML referente a
interface tambm est presente no Apndice K.
Figura 4.21: Smartphone Samsung Galaxy S3
58
Figura 4.22: Tela de login do Sistema
Figura 4.23: Tela de Execuo do Sistema (aparece aps usurio realizar login)
59
Captulo 5
Resultados e Discusses
Durante o desenvolvimento da aplicao e principalmente do algoritmo de deteco de ano-
malias detectou-se a falta de dados para um ajuste preciso do programa. Tendo em vista este
desao, desenvolveu-se ento um algoritmo de mdia dinmica. Porm existem vrios outros
algoritmos possveis, mais inteligentes, que podem se adaptar dinamicamente ao usurio e
situao em que o mesmo se insere porm, para uso destes, necessrio um conhecimento
de um conjunto de dados relativos ao comportamento cardaco frente ao medo inesperado.
Contudo, apesar dessa falta de dados, o sistema pde ser simulado.
As guras 5.1 e 5.2 apresentam dois dos testes de simulao realizados. A primeira delas
consiste no envio de valores pr-denidos de batimentos cardacos de modo a vericar se o
sistema identica a anomalia referente ao aumento da frequncia cardaca que ocorreu. Nessa
mesma imagem ainda esto presentes o valor da mdia e do limiar de disparo do alarme em
relao ao dados enviados anteriores ao dado anmalo. A segunda delas consiste tambm em
valores pr-denidos de batimentos cardacos porm eles decaem, de modo a simular uma
dormncia do usurio.
60
Figura 5.1: Exemplo de simulao para Disparo do Alarme referente Aumento da Frequncia Cardaca
Figura 5.2: Exemplo de simulao para Disparo do Alarme referente Diminuio da Frequncia Car-
daca
61
Ambos casos de teste mostraram a eccia e preciso ao detectar as anomalias envolvidas.
Sabe-se que o medo pode ser identicado por intermdio do batimento cardaco, mas
a preciso e assertividade das anomalias detectadas aumentam com o aumento de tipos e
quantidade de dados disponveis para anlise. Por exemplo, durante as pesquisas, vericou-
se que a medida da impedncia da pele, ou at mesmo a temperatura corporal do indivduo
so maneiras alternativas para identicao de situaes extremas.
Apesar do sensor cardaco ter demonstrado facilidade de manuseio, hardware encapsu-
lado, custo baixo e tima resposta para um indivduo especco, foi notada a grande necessi-
dade por maiores estudos a m de encontrar a origem das diferentes respostas que o sensor
demonstrou ao ser utilizado em indivduos distintos. Maiores estudos so necessrios para
propor uma soluo que possivelmente venha a funcionar como um esquema de calibrao da
reao do sistema resposta do sensor. Outra alternativa estaria na utilizao de um sensor
mais robusto, cabe ento uma avaliao do custo benefcio da mudana. Em relao sua pre-
ciso, ela se mostrou bem prxima a de aparelhos comerciais existentes no mercado, como
pode ser visto na tabela 5.1, que compara valores de pulsao medidos de trs maneira dis-
tintas: pelo sistema desenvolvido, manualmente, e por um monitor automtico de presso
arterial de pulso modelo HEM-631INT da fabricante Omrom Healthcare.
Sistema Desenvolvido Manual Monitor HEM-631INT Omrom Healthcare
70 73 73
71 73 74
73 74 74
96 93 92
112 116 114
116 116 114
Tabela 5.1: Comparativo do valor de BPM determinado por diferentes maneiras
Frente aos dados presentes na tabela, pode ser constatado que, apesar de o resultado no
ser idntico, so muito prximos, no inuenciando assim no desempenho do sistema desen-
volvido. Ressalta-se que os dados da tabla foram obtidos realizando as trs medidas simulta-
neamente, em situao de repouso e exerccio. As discrepncias podem ser interpretadas pela
aproximao de uma janela de 1 minuto a partir de valores coletados durante 15 segundos.
Para processar o sinal do sensor a escolha do comparador de tenso fui muito boa, por
ser um circuito relativamente simples, no trouxe altos custos para o projeto. Alternativas
mais rebuscadas como, por exemplo, um circuito do tipo comparador por histerese no traria
62
uma melhor deteco do pulso no caso abordado neste trabalho, trazendo assim apenas maior
custo e complexidade para o sistema.
O desenvolvimento da parte de software do projeto dependia da escolha de um banco
de dados na nuvem para armazenar um histrico dos dados do usurio. Cogitou-se a pos-
sibilidade de desenvolvimento de uma App Engine App que conversaria com um banco de
dados no relacional (Datastore) da Google utilizando o Google Cloud Endpoints. Mas essa
soluo mostrou-se bem mais complexa que o esperado. Optou-se ento por uma soluo
alternativa bem mais simples: Parse.
Parse uma startup que oferece um sistema de gerenciamento de dados na nuvem. Eles
oferecem um tipo de banco de dados orientado a objetos, permitindo que o desenvolvedor
sincronize, escreva e leia informaes da nuvem sem que seja necessrio escrever uma nica
linha de cdigo servidor (back-end) [15].
O BD Parse schemaless, ou seja, faz uma abordagem NoSQL (no relacional) para
armazenamento de dados [16] e permite que qualquer objeto seja salvo usando JSON. Fun-
ciona da seguinte maneira: cria-se uma aplicao e para essa aplicao criam-se classes e
adicionam-se objetos a essas classes[15].
O Parse mostrou-se uma plataforma simples e eciente. Alm de oferecer um grande su-
porte tcnico por meio de documentaes completas e organizadas, a plataforma online para
acesso s informaes armazenadas na nuvem direta e possui vrios recursos importantes.
Como o Parse temsuporte vrias plataformas diferentes (iOS, Android, Windows Phone,
Windows, entre outros). Portanto, o mesmo banco de dados pode ser usado em diferentes
dispositivos, sejam eles mveis ou no. Lembrando que todas as outras plataformas possuem
a simplicidade de integrao via API em Android durante a fase de desenvolvimento deste
trabalho.
Durante toda a fase de desenvolvimento e testes, o banco de dados funcionou corretamente
e no houve problemas de conexo impeditivos para a leitura e escrita no banco. Constatou-
se, porm, que quando da indisponibilidade de rede Wi-, o dispositivo utilizava rede 3G,
e o tempo de acesso ao banco era longo. No houve nenhum black spot que impediu a
leitura/gravao de dados, mas caso houvesse, e o usurio estivesse logado, a situao seria
interpretada como anomalia pelo servidor.
Vale ressaltar que a tendncia mercadolgica que esses black spots sejam cada vez
menores. A banda, atualmente reservada o sinal de TV analgica, ser utilizada para telefonia
mvel a partir de 2016. Portanto a tendncia de melhoria na cobertua de redes mveis e
63
cada vez menos ocorrncias de perda de sinal.
O Parse, por ser um banco de dados orientado a objetos, encaixou-se perfeitamente s
necessidades de uma app para android, por exemplo, pois o trabalho fora desenvolvido
utilizando-se java como linguagem de programao.
A utilizao de banco de dados como servio na nuvem justicou-se pela facilidade em
no ter que comprar servidores (ou outro hardware necessrio) e program-los. Alm de ser
mais barato e muito menos complexo, a utilizao desse servio na nuvem j garante que a
ferramenta poder ser facilmente escalvel.
De modo geral, considerando os custos do projeto, pode-se citar os principais compo-
nentes de hardware, conforme tabela 5.2. Ressalta-se que os dados da tabela so valores
aproximados considerando a taxa de converso de 2,23 reais por dlar [17].
Dispositivo Custo Mdio (em reais)
PIC 18F2550 16,00
Pulse Sensor 55,75 (25 dlares)
Mdulo Bluetooth HC-05 30
Total 101,75
Tabela 5.2: Principais Custos do Projeto
Desse modo, o custo de aproximadamente 100 reais do rastreador desenvolvido neste
projeto, representa umporcentual de 1 a 1.6%emrelao ao de umrastreador comercializado,
que varia de 6 a 10 mil reais [2].
Para este trabalho no foi considerado o custo do dispositivo mvel por vrios motivos:
pela grande variedade de preos, levando em conta os vrios tipos de dispositivos mveis,
como celulares e tablets, alm da existncias de diferentes modelos com diferentes capacida-
des e recursos. Alm disso, crescente o nmero de indivduos que possuem um dispositivo
mvel em mos, e portanto, pode-se tomar como ponto de partida que o pblico-alvo j o
possuir.
Foi utilizado um Galaxy S3 durante toda a fase de desenvolvimento deste produto. O
Samsung Galaxy S3 considerado dispositivo de mdio a alto desempenho, portanto a apli-
cao rodou todos os momentos sem diculdades, mesmo sendo necessrio um processa-
mento razoavelmente alto. O desao que pode surgir com relao ao tempo de durao da
bateria. Claramente, a evoluo do desenvolvimento das baterias no vem acompanhando o
desenvolvimento de celulares.
A utilizao do dispositivo mvel Android foi essencial para o desenvolvimento rpido
64
do aplicativo. Classes prontas em Android e hardware embutido no celular tornaram des-
complicado, em vrios sentidos, o desenvolvimento da parte de comunicao com o mdulo
bluetooth e com o banco de dados na nuvem. No pode-se ainda avaliar o custo de desenvol-
vimento do mesmo sistema numa plataforma iOS. Esta ltima um pouco mais fechada com
relao utilizao de recursos prprios do dispositivo, o que poderia vir a acarretar maiores
custos com licena.
Em geral, o sistema nal desenvolvido mostrou-se mais exvel do que imaginado. Exis-
tem muitas outras aplicaes nas quais pode-se utilizar o mdulo desenvolvido: deteco
quando um motorista est prestes a dormir com o veculo em movimento, prever se uma pes-
soa ter um mal sbito, auxiliar na deteco rpida de acidentes de trabalho em ambientes
fabris, obteno de dados biomtricos de atletas, entre outros.
Como o sistema nal ainda no foi integrado numa placa de circuito impresso nica, ainda
no h noo do tamanho que caria. Talvez o tamanho possa ser uma diculdade a ser su-
perada antes de inserir o produto no mercado, pois a premissa fazer com que o mesmo seja
parecido com uma pulseira e pequeno o suciente para ser usado como tal. As poucas pes-
soas contatadas demonstraram interesse no produto, mas a quantidade amostral conseguida
certamente no suciente para armar que o produto poderia vir a ter uma boa receptivi-
dade no mercado. Outro fator que aumentaria tambm o tamanho da pulseira seria a insero
de uma bateria capaz de alimentar todo o mdulo biomtrico do sistema. No prottipo fo-
ram utilizados dois reguladores: um de 5 e outro de 3 volts a m de garantir que a tenso
casse num nvel compatvel aos outros componentes do mdulo biomtrico. Portanto, antes
de encapsular o sistema, seria necessrio efetuar uma leve mudana na arquitetura do circuito
de modo a dispensar os reguladores e consequentemente diminuir o consumo de potncia e
espao do circuito em geral.
65
Captulo 6
Concluso
A partir da proposta inicial, foi possvel realizar a concluso do projeto em sua totalidade.
Vale ressaltar que anteriormente ideia de utilizao do dispositivo mvel Android como
mdulo de processamento, cogitou-se a possibilidade de utilizao de um processador aco-
plado a um mdulo GPRS para envio de dados para o banco de dados na nuvem e um mdulo
bluetooth para recebimento de dados vindouros da pulseira. As diculdades encontradas
com essa proposta eram muitas: desenvolvimento complexo, indisponibilidade de um m-
dulo GPRS para os principais kits de processamento do mercado, e alto custo. Todos esses
desaos, somado ao crescente nmero de pessoas que tem acesso a um smartphone, fez com
que a abordagem mudasse, garantindo que o celular passasse a ser o mdulo responsvel
pelo de maior trabalho de processamento do projeto. Alm de reduzir o custo do projeto,
todo hardware necessrio para desenvolvimento do projeto j est embutido e integrado com
um software de fcil acesso atravs de classes prontas. O custo do projeto tambm diminuiu
consideravelmente, j que assume-se que o usurio tenha disponvel um smartphone.
Saindo um pouco do escopo geral do projeto, vale a pena citar algumas observaes de
cada parte, individualmente.
O sensor de pulso, por exemplo, apresentou um sinal de resposta aparentemente depen-
dente das caractersticas particulares da pele de um indivduo. Foi implementado um compa-
rador de tenso com um certo valor de referncia para contabilizar o nmero de batimentos
cardacos por minuto. Porm, notou-se a necessidade de maiores estudos, pois h uma certa
probabilidade do formato, frequncia e amplitude da onda de resposta do sensor variar de
pessoa para pessoa. Neste caso, haveria a necessidade de calibrar o equipamento para qual-
quer usurio diferente que queira se cadastrar no sistema. Caso a calibragem no ocorra,
muito provvel que a contagem de pulsos por minuto no seja efetiva.
66
O microprocessador utilizado na PB possui ainda vrios pinos disponveis para trabalhar
com mais sensores, podendo medir valores de temperatura, impedncia e outros. A asser-
tividade da anlise de anomalia pode melhorar dependendo dos dados extras a que se tem
acesso.
A comunicao bluetooth mostrou-se estvel durante todo o desenvolvimento do sistema.
Em nenhum momento ocorreu interferncia ou perda de dados numa transmisso, alm da
vantagem da no utilizao de os para comunicao. Alm disso, as classes e mtodos
prontos em Android para trabalhar especicamente com comunicao bluetooth facilitaram
muito o desenvolvimento do software deste projeto.
O custo total deste projeto cou bem abaixo dos dispositivos comerciais atuais do mer-
cado. Muitas melhorias ainda devem ser feitas para que este sistema esteja apto comercia-
lizao, mas o custo em si, no ser um impeditivo.
Atravs dos estudos realizados sobre a dinmica de batimentos cardacos e a resposta
humana ao medo, pode-se averiguar que o pulso uma varivel indispensvel para identica-
o de situaes extremas para o usurio, e portanto, pode ser utilizado para reconhecer um
sentimento, algo abstrato, como o medo, por exemplo.
Os autores deste trabalho creem que a tendncia mercadolgica est no crescimento da
utilizao de sensores para obteno de dados biomtricos que possam ser utilizados para ns
de segurana individual.
Finalmente, o conhecimento agregado a partir do desenvolvimento deste trabalho de con-
cluso de curso foi muito grande, principalmente pelo fato do projeto envolver todo ciclo de
desenvolvimento de um dispositivo, iniciando-se pelo projeto inicial, passando pela constru-
o do hardware e terminando com o desenvolvimento do software.
6.1 Trabalhos Futuros
Para trabalhos futuros sugere-se a utilizao de mais sensores a m de aumentar a asserti-
vidade das anlises que possivelmente sero feitas pelo mdulo de processamento. O pro-
cessador da pulseira biomtrica ainda possui vrios pinos para sensores no utilizados e que
poderiam ser alvos de melhoria. Adicionar mais variveis ao projeto, como impedncia de
pele, temperatura, entre outras, poderia inclusive ser uma maneira interessante de obter dados
para anlise e estudos das respostas humana diferentes situaes.
Com um banco de dados mais completo em mos, um outro foco de melhoria pode estar
67
no algoritmo de deteco de anomalias. H vrios algoritmos disponveis, inclusive utili-
zando inteligncia articial, que poderiam entender e se adequar a cada usurio individual-
mente.
Sugere-se tambm a utilizao do sistema em empresas: quando um funcionrio tiver
um mal sbito, o ambulatrio imediatamente ser avisado e a ajuda estar a caminho o mais
rpido possvel. O mesmo pode-se aplicar para familiares com problemas de sade, como
apneia, arritmia, sopro, entre outros.
Adicionar microfone ou microcmera ao sistema tambm pode ser visto como uma boa
opo para aumentar a visibilidade da conjuntura a que o usurio est inserido.
Desta maneira, nota-se que o sistema pode ser mais trabalhado e personalizado de acordo
com a aplicao, porm mantendo duas de suas principais caractersticas: autonomia de iden-
ticao de anomalias e portabilidade.
68
69
Referncias Bibliogrcas
[1] Android Website. Distribuio das Verses do Android. http://developer.android.
com/resources/dashboard/platform-versions.html, Acesso em: 25 de Maio de
2014.
[2] Revista Eletrnica Exame. Os Melhores Acessrios Contra os Roubos de
Carros. http://exame.abril.com.br/seu-dinheiro/noticias/os-melhores-
acessorios-contra-os-roubos-de-carros, Acesso em: 18 de setembro de 2013.
[3] ABESE Associao Brasileira das Empresas de Sistemas Eletrnicos de Segu-
rana. FAQ. http://www.abese.org.br/faq.asp, Acesso em: 01 de Junho de 2013.
[4] CNI Confederao Nacional da Indstria e IBOPE. Pesquisa CNI-IBOPE: Retratos da
Sociedade Brasileira. Confederao Nacional da Indstria. Braslia DF, Outubro 2011.
[5] De-Segurana. Roubo de Cargas do Brasil. http://www.de-seguranca.com.br/
index.php/artigos/gestao-de-riscos/seguranca-empresarial/494-roubo-
de-cargas-do-brasil-generalidades, Acesso em: 04 de Julho de 2013.
[6] CafPoint. ndice de Roubos de Cargas Preocupa Exportadores de Caf no Cer-
rado Mineiro. http://www.cafepoint.com.br/cadeia-produtiva/giro-de-
noticias/indice-de-roubos-de-cargas-preocupa-exportadores-de-cafe-
no-cerrado-mineiro-81370n.aspx, Acesso em: 30 de Junho de 2013.
[7] IBOPE Instituto Brasileiro de Opinio Pblica e Estatstica. Em 23 Anos de Democra-
cia, Brasileiros Mudam de Opinio Sobre os Principais Problemas do Pas. http:
//www.ibope.com.br/pt-br/noticias/Paginas/Em-23-anos-de-democracia-
brasileiros-mudam-de-opiniao-sobre-os-problemas-do-Pais.aspx, Acesso
em: 28 de junho de 2013.
[8] A. Sintes. Sams Teach Yourself Object Oriented Programming in 21 Days. Sams, 2001.
70
[9] R. R. Lecheta. Google Android: Aprenda a Criar Aplicaes Para Dispositivos Mveis
com o Android SDK. Novatec, 2010.
[10] Edson Norberto Cceres. Banco de Dados - Conceitos Bsicos. Universidade Federal
do Mato Grosso do Sul - http://www.dct.ufms.br/~edson/bd1/bd1.pdf, Acesso
em: 26 de maio de 2014.
[11] Kioskea. Banco de Dados - Introduo. http://pt.kioskea.net/contents/65-
bancos-de-dados-introducao, Acesso em: 20 de maio de 2014.
[12] Pulse Sensor. Pulse Sensor Open Hardware. http://pulsesensor.myshopify.com/
pages/open-hardware, Acesso em: 10 de setembro de 2013.
[13] KickStarter. Pulse Sensor: an Open Source Heart-rate Sensor that Rocks.
https://www.kickstarter.com/projects/1342192419/pulse-sensor-an-
open-source-heart-rate-sensor-that, Acesso em: 14 de setembro de 2013.
[14] HC-05. HC-05 Bluetooth to Serial Module Port. http://www.electronicaestudio.
com/docs/istd016A.pdf, Acesso em: 06 de abril de 2014.
[15] Code. Getting Started With Parse. http://code.tutsplus.com/tutorials/
getting-started-with-parse--net-28000, Acesso em: 07 de maio de 2014.
[16] Info Queue Brasil. PostgreSQL: Armazenamento de Dados em Formato "schemaless".
http://www.infoq.com/br/articles/postgresql-schemaless, Acesso em: 02
de maio de 2014.
[17] UOL Economia. Cotaes. http://economia.uol.com.br/cotacoes/, Acesso em:
01 de junho de 2014.
[18] Marilza Bertassoni Alves Mestre e Neuza Corassa. Da Ansiedade a Fobia. Revista
Psicologia Argumento. ISSN 0103-7013. Ano XVIII - No XXVI. Pg 105 - 126, 2000.
[19] Centro de Psicologia Especializado em Medos. Estudos Cientcos. http://www.
medos.com.br/estudos-cientificos/, Acesso em: 03 de Outubro de 2013.
[20] Edna Pacincia Vietta. Ansiedade: Reao de Luta-ou-Fuga. http://viettaed23.
blog.terra.com.br/2013/04/28/ansiedade-reacao-de-luta-ou-fuga/,
Acesso em: 15 de Outubro de 2013.
71
[21] Revista Super Interessante e Istituto de Psicologia da Universidade de So Paulo. A
histria da Morte. http://super.abril.com.br/historia/historia-morte-
446779.shtml, Publicao Original em Dezembro de 2006. Acesso em: 15 de Outubro
de 2013.
[22] How Stuff Works Como Tudo Funciona. Como Funciona o Medo. http://pessoas.
hsw.uol.com.br/medo.htm, Acesso em: 22 de Setembro de 2013.
[23] Universidade Federal Fluminense. Material de Apoio disciplina Fisiologia VI: Sistema
Nervoso Autnomo. http://www.uff.br/fisio6/PDF/sistema_cardiovascular/
sistema_nervoso_autonomo.pdf, Acesso em: 08 de Outubro de 2013.
[24] Association of the British Pharmaceutical Industry Resources for Schools. Hormones
and Their Effects. http://www.abpischools.org.uk/page/modules/hormones/
horm8.cfm, Acesso em: 02 de Outubro de 2013.
[25] Businessweek. Before IPhone and Android Came Simon, the First Smartphone.
http://www.businessweek.com/articles/2012-06-29/before-iphone-and-
android-came-simon-the-first-smartphone, Acesso em: 09 de dezembro de
2013.
[26] IBM Website. O Que Mundo Ps-PC. https://www.ibm.com/developerworks/
mydeveloperworks/blogs/ctaurion/entry/o_que_e_o_mundo_pos-pc?lang=
en, Acesso em: 15 de outubro de 2013.
[27] Benedict Evans from Enders Analysis. The Mobile Explosion. Publishers Forum 2013
- http://publishersforum.de/wp-content/uploads/2013/04/BenedictEvans_
MobileExplosion.pdf, Acesso em: 22 de abril de 2014.
[28] Business Insider. The Number Of Smartphones In Use Is About To Pass The Number
Of PCs. http://www.businessinsider.com/number-of-smartphones-tablets-
pcs-2013-12, Acesso em: 30 de abril de 2014.
[29] Portal G1. Tablet Ultrapassa Vendas de Desktop e Notebook Pela Primeira vez no Bra-
sil. http://g1.globo.com/tecnologia/noticia/2014/03/tablet-ultrapassa-
vendas-de-desktop-e-notebook-e-pela-1-vez-no-brasil.html, Acesso em:
14 de maio de 2014.
72
[30] Veja. Vendas de Tablets Vo Superar as de Notebooks no Brasil. http:
//veja.abril.com.br/noticia/vida-digital/vendas-de-tablets-vao-
superar-as-de-notebooks-no-brasil, Acesso em: 14 de maio de 2014.
[31] IBGE. Projeo da Populao do Brasil Por Sexo e Idade - 1980 a 2050.
http://www.ibge.gov.br/home/estatistica/populacao/projecao_da_
populacao/2008/projecao.pdf, Acesso em: 20 de maio de 2014.
[32] IDG Now. At 2017 o Brasil Ter 70,5 Milhes de Usurios de Smartphones em Uso.
http://idgnow.com.br/blog/circuito/2014/01/22/base-de-usuarios-de-
smartphones-na-america-latina-vai-aumentar-283-em-2014/, Acesso em: 20
de maio de 2014.
[33] P. Coad e E. Yourdon. Anlise Baseada em Objetos. Campus, 1992.
[34] G. Pollice e D. West. Use a Cabea! Anlise e Projeto Orientado ao Objeto
B. McLaughlin. OReilly, 2007.
[35] L A. Silva. Apostila de Android Website. Android: Programando Passo a Passo. http:
//www.apostilaandroid.net/, Acesso em: 25 de Novembro de 2013.
[36] M. L. da Silva e L. C. O. Pereira. Android Para Desenvolvedores. Brasport, 2009.
[37] H. M. Deitel e P. J. Deitel. Java - Como Programar. Prentice Hall, 2005.
[38] Como Tudo Funciona. Como Funciona a Computao nas Nuvens. http:
//www.businessweek.com/technology/content/aug2005/tc20050817_0949_
tc024.htm, Acesso em: 10 de outubro de 2013.
[39] Open Handset Alliance. Members. http://www.openhandsetalliance.com/oha_
members.html, Acesso em: 15 de novembro de 2013.
[40] Open Handset Alliance. Overview. http://www.openhandsetalliance.com/oha_
overview.html - Traduo por Enzo Bertini Vieira e Lara Bertini Vieira, Acesso em:
20 de novembro de 2013.
[41] Jornal O Estado de So Paulo. A era dos PCs est chegando ao m.
http://economia.estadao.com.br/noticias/negocios%20tecnologia,a-
era-dos-pcs-esta-chegando-ao-fim,59238,0.htm, Acesso em: 02 de janeiro de
2014.
73
[42] Canalys. Android Takes Almost 50% Share of Worldwide Smartphone Mar-
ket. http://www.canalys.com/newsroom/android-takes-almost-50-share-
worldwide-smart-phone-market, Acesso em: 08 de janeiro de 2014.
[43] Latin Post. Android Market Share in 2013 Dominates at 80 Percent but Slower
Growth Could Mean Trouble. http://www.latinpost.com/articles/6598/
20140129/android-market-share-2013-dominates-80-percent-slower-
growth-mean.htm, Acesso em: 15 de janeiro de 2014.
[44] Oracle Website. Download Java Development Kit. http://www.oracle.com/
technetwork/java/javase/downloads/index.html, Acesso em: 21 dez. 2011.
[45] Android Website. Download Plugin ADT. http://developer.android.com/sdk/
eclipse-adt.html, Acesso em: 15 de Novembro de 2013.
[46] Android Website. Download Android SDK. http://developer.android.com/sdk/
index.html, Acesso em: 15 de Novembro de 2013.
[47] Eclipse Website. Download Eclipse IDE. http://www.eclipse.org/downloads/,
Acesso em: 20 de Novembro de 2013.
[48] Android App Market. Android Architecture - The Key Concepts of Android OS. http://
www.android-app-market.com/android-architecture.html, Acesso em: 20 de
fevereiro de 2014.
[49] Rafael Gomes Jean Fernandes e Vinicius Ferreira. Sistema Operacional Android. Uni-
versidade Federal Fluminense - http://www.midiacom.uff.br/~natalia/2012-1-
sisop/tgrupo1.pdf, Acesso em: 02 de fevereiro de 2014.
[50] Android On Board. Meu Primeiro Aplicativo Android. http://androiddevbr.
wordpress.com/2013/08/13/meu-primeiro-aplicativo-android/, Acesso em:
25 de janeiro de 2014.
[51] Hachi Tecnologia. Android - Criando Seu Primeiro Projeto. http://blog.
hachitecnologia.com.br/mobile/android-criando-seu-primeiro-projeto,
Acesso em: 18 de fevereiro de 2014.
[52] Android Developers. Processes and Threads. http://developer.android.com/
guide/components/processes-and-threads.html, Acesso em: 12 de abril de
2014.
74
[53] Carsten Vogt. Events and the UI Thread in Android. Universitat Politcnica de Valn-
cia - https://www.youtube.com/watch?v=fN3t5BmBOiE, Acesso em: 11 de abril de
2014.
[54] M. C. Sampaio e E. L. Neto. Material Sobre UML. Universidade Federal de Campina
Grande Centro de Engenharia Eltrica e Informtica. http://www.dsc.ufcg.edu.br/
~jacques/cursos/map/html/uml/, Acesso em: 02 de Outubro de 2013.
[55] SISNEMA. Cloud Computing - O Novo Modelo de Computao. http://sisnema.
com.br/Materias/idmat019433.htm, Acesso em: 02 de maro de 2014.
[56] InfoEscola. Computao em Nuvem. http://www.infoescola.com/informatica/
computacao-em-nuvem/, Acesso em: 02 de maro de 2014.
[57] InfoWester. O que Cloud Computing (Computao Nas Nuvens)? http://www.
infowester.com/cloudcomputing.php, Acesso em: 04 de maro de 2014.
[58] Ocina da Net. O que Computao Nas Nuvens (Cloud Computing)? http://www.
oficinadanet.com.br/artigo/923/computacao_nas_nuvens, Acesso em: 03 de
maro de 2014.
[59] Tecnologia & Gesto. Cloud Computing. https://tecnologiaegestao.wordpress.
com/2010/06/28/cloud-computing/, Acesso em: 05 de maro de 2014.
[60] Google. Google Docs. https://docs.google.com/, Acesso em: 07 de maro de
2014.
[61] Microsoft. Microsoft SharePoint Online. http://office.microsoft.com/pt-br/
sharepoint, Acesso em: 08 de maro de 2014.
[62] Microsoft. Microsoft Azure. http://azure.microsoft.com/pt-br/, Acesso em: 07
de maro de 2014.
[63] Amazon Web Services. Amazon Elastic Computing Cloud (EC) 2. http://aws.
amazon.com/pt/ec2/, Acesso em: 05 de maro de 2014.
[64] Koding. Koding. https://koding.com/Home, Acesso em: 06 de maro de 2014.
[65] Microsoft. Microsoft Ofce Lync. http://office.microsoft.com/pt-br/lync/,
Acesso em: 06 de maro de 2014.
75
[66] Parse. Parse Cloud. https://parse.com/, Acesso em: 12 de dezembro de 2013.
[67] Fabrcio Rodrigues Henriques da Silva. Um Estudo Sobre os Benefcios e os Ris-
cos de Segurana na Utilizao de Cloud Computing. Trabalho de Concluso
de Curso - UNISUAM - http://fabriciorhs.files.wordpress.com/2011/03/
cloud_computing.pdf, Acesso em: 29 de abril de 2014.
[68] Como Tudo Funciona. Como Funciona a Computao nas Nuvens. http://
tecnologia.hsw.uol.com.br/computacao-em-nuvem.htm, Acesso em: 07 de
maro de 2014.
[69] Joo Eduardo Ferreira. Introduo a Banco de Dados. Instituto de Matemtica e Esta-
tstica - Universidade de So Paulo - http://www.ime.usp.br/~jef/apostila.pdf,
Acesso em: 28 de abril de 2014.
[70] Fernando Albuquerque. Banco de Dados. Universidade de Braslia - http://www.cic.
unb.br/~fernando/matdidatico/apostilas/resumo/bdadossp.pdf, Acesso em:
10 de maio de 2014.
76
77
Apndice A
Fisiologia do Estresse
O estresse um processo de respostas do organismo aos estmulos nocivos, alterando o me-
tabolismo de rgos (rins, bao, intestino, glndulas sudorpara e salivar) e reorganizando
o organismo para essa reao aos estressores. Dessa maneira, as funes digestiva, renal e
sexual cam inibidas, enquanto os msculos, esqueleto, corao, pulmes, e sistema linftico
cam mobilizados [18] [19].
A ansiedade se traduz por pressa, nsia por movimento, inquietao interior, aio do
corpo, para que aquilo que estiver acontecendo ou que se suspeita acontecer, seja logo con-
cludo. Em outras palavras, a ansiedade o desejo de acabar logo, de terminar, de cessar a
sensao fsica e psquica do contacto com a realidade, nessa perspectiva esse desejo acaba
sendo o representante do instinto de morte. [20]
Uma pesquisa realizada com jovens e adolescentes entre 13 e 17 anos consistia no questi-
onamento do que mais gerava medo nos entrevistados, deixando as respostas em aberto. Esse
estudo chegou a concluso de que os 10 maiores medos relatados foram de ataque de terro-
ristas, aranhas, morte, fracassar na vida, guerra, alturas, violncia, solido, do desconhecido
(futuro), e guerra nuclear. E, desse estudo, o que se percebe nitidamente que a maioria deles
se relaciona ao medo de perder a vida.
Omedo da morte inerente ao desenvolvimento humano. Aparece na infncia, a partir das
primeiras experincias de perda, e tem vrias facetas: trata-se de um medo do desconhecido,
somado ao medo da prpria extino, da ruptura da teia afetiva, da solido e do sofrimento.
[21].
78
A.1 O Medo
O medo consiste na resposta gerada pelo crebro, decorrente de um estmulo de estresse
(como, por exemplo, o ataque de um aracndeo, assalto, acidente de carro ou grandes alturas),
acarretando na liberao de compostos qumicos que causam, entre outras reaes, o aumento
da frequncia cardaca e a acelerao na respirao (conhecido por reao de luta ou fuga).
O crebro pode ser compreendido como uma enorme e complexa rede de comunicao
composta por mais de 100 bilhes de clulas nervosas que regem os sentimentos, pensamen-
tos e atitudes dos humanos. Parte dessas comunicaes levam ao pensamento e ao cons-
ciente, enquanto outras produzem respostas autnomas, sendo o medo uma resposta quase
inteiramente autnoma, ou seja, disparada automaticamente pelo crebro, de modo que um
humano no consegue, por vontade prpria, dispar-la.
Apesar de existirem diversas reas do crebro responsveis pelo sentimento de medo,
algumas partes possuem atuao mais efetiva, como mostrada na gura A.1 [22].
Figura A.1: Principais Partes do Crebro Envolvidas na Reao de Medo
De maneira geral, as funes exercidas pelas regies cerebrais da gura A.1, sao:
Tlamo: Regio cerebral que toma a deciso para onde enviar os dados sensoriais
recebidos, sejam eles providos pela viso, audio, tato, olfato ou paladar;
Crtex Sensorial: Responsvel pela interpretao dos dados sensoriais;
Hipocampo: Armazena e busca memrias conscientes, processando os estmulos de
forma a estabelecer um contexto para os mesmos;
79
Amgdala: Decodica emoes, determinando possveis ameaas e armazenando-as
nas chamadas "memrias do medo"(conjunto de lembranas que esto correlacionadas
a experincias de medo previamente enfrentadas);
Hipotlamo: Responsvel pela ativao da reao de "luta ou fuga".
A.2 O Processo de Criao do Medo
Como j apresentado, o processo de criao do medo acontece involuntariamente. Ele pode
ser dividido em dois caminhos: O caminho baixo gera uma reao imediata e desordenada,
enquanto o caminho alto gera uma reao no to imediata, porm mais ponderada e pre-
cisa. Ressalta-se que ambos os processos ocorrem simultaneamente, conforme indicado pela
gura A.2. As guras A.3 e A.4 exemplicam o processo tomado nos caminhos baixo e alto,
respectivamente.
Figura A.2: Comparativo do Caminho Baixo e Caminho Alto
Figura A.3: Fluxograma de Exemplicao do Caminho Baixo
80
Figura A.4: Fluxograma de Exemplicao do Caminho Alto
A.3 Reao de Luta ou Fuga
Para produzir a reao de luta ou fuga, o hipotlamo ativa o sistema nervoso simptico e o
sistema adrenocortical.
O sistema nervoso simptico utiliza as vias nervosas para iniciar reaes no corpo, en-
quanto o sistema adrenocortical utiliza a corrente sangunea. Desta maneira, denominado
"Reao de Luta ou Fuga"os efeitos combinados dos dois sistemas.
Quando o hipotlamo informa ao sistema nervoso simptico a necessidade de uma rea-
o ao perigo, o efeito geral consiste na acelerao do corpo, cando tenso e mais alerta.
O sistema nervoso simptico envia impulsos para as glndulas e msculos lisos e informa
glndula adrenal para liberar adrenalina e noradrenalina na corrente sangunea. A adrenalina
e noradrenalina, por sua vez, so conhecidas por "hormnios do estresse"efetuam vrias mu-
danas no corpo, incluindo um aumento na frequncia cardaca e na presso sangunea [22]
81
[23].
Simultaneamente, o hipotlamo livra o fator de liberao de corticotropina na glndula
pituitria, ativando o sistema adrenocortical. A glndula pituitria secreta o hormnio ACTH
(hormnio adrenocorticotrpico) que, atravs da corrente sangunea, alcana o crtex adrenal,
o qual ativa a liberao de aproximadamente trinta hormnios diferentes para preparar o corpo
para lidar com uma ameaa [22].
A gura A.5 exibe o cascateamento de efeitos resultantes da ao do hipotlamo [22].
Figura A.5: Fluxograma de Ao do Hipotlamo
A.3.1 Efeitos da Reao de Luta ou Fuga
Dentre os efeitos presentes numa situao de luta ou fuga, ressalta-se [23]:
Liberao de hormnios da glndula supra renal (especialmente a adrenalina, como ser
apresentado posteriormente);
Inibio da motilidade (capacidade dos intestinos de realizarem movimentos peristlti-
cos) e das secrees intestinais, aumentando a captao de nutrientes que antes seriam
excretados e que agora sero essenciais para o fornecimento de energia;
82
Ereo dos plos, em funo dos msculos piloeretores;
Constrio dos vasos esplncnicos;
Aumento da atividade cerebral, com foco apenas sobre a situao de risco;
Aumento do metabolismo basal (quantidade de energia que o corpo necessita para fun-
cionar);
Aumento da atividade do msculo miocrdio (atividade cardaca), vasodilatao das
coronrias e vasoconstrio dos vasos sanguneos perifricos, aumentando dessa forma
a circulao e a presso sangunea, reduzindo em contrapartida as chances de hemorra-
gias nas regies mais perifricas, que podem ser afetadas pelo estmulo ameaador;
Aumento da atividade das glndulas sudorparas, causando maior transpirao;
Inibio dos msculos da bexiga urinria e excitao do esfncter urinrio, evitando
assim a necessidade de mico;
Sistema imunolgico inibido.
A.3.2 Adrenalina
um hormnio produzido pelas glndulas supra-renais (adrenais) que se encontram na parte
superior dos rins. Em condies normais, apenas uma pequena quantidade de adrenalina
produzida, o que ajuda a manter uma presso sangunea normal. Em situaes de estresse e,
consequentemente, de medo, na qual o corpo pode estar envolvido numa situao de luta ou
fuga, uma grande quantidade de adrenalina produzida muito rapidamente, o que acarreta
numa srie de efeitos drsticos no corpo [24] [23]:
Elevao dos nveis de acar no sangue, estimulando o fgado a transformar o glico-
gnio em glicose, aumentando assim a energia disponvel para as clulas do corpo;
Liberao de gordura no Sangue do Tecido Adiposo;
Aumento da frequncia cardaca;
Aumento do uxo sanguneo para os msculos;
Reduo do uxo sanguneo para a pele e os intestinos, para enviar uma quantidade de
sangue mais signicativa aos grupos musculares maiores;
83
Dilatao dos bronquolos, aumentando a captao de oxignio e melhorando a capaci-
dade respiratria;
Dilatao das pupilas, aumentando a captao de luz.
Todos esses efeitos so adicionados aos efeitos da reao de luta ou fuga, citados anteri-
ormente.
O Fluxo da adrenalina em situaes normais e de estresse pode ser vericado nas guras
A.6 e A.7, respectivamente.
Figura A.6: Fluxo de Adrenalina em uma Situao Normal
Figura A.7: Fluxo de Adrenalina em uma Situao Anormal de Estresse
84
85
Apndice B
Dispositivos Mveis
B.1 Histrico e Evoluo
O conceito de combinar a telefonia com a computao remete a meados de 1973, entretanto,
apenas em 1993 a IBM conseguiu lanar um produto combinando as duas funcionalidades,
o Simon. Desta maneira nasceu o primeiro smartphone. interessante ressaltar que o termo
smartphone apenas surgiu em 1997 pela empresa Ericsson [25].
A popularizao dos smartphones veio no nal da dcada de 1990 com os PDAs, atravs
dos sistemas Palm OS e Windows CE, cabendo a BlackBerry dominar esse segmento de
mercado at o lanamento do iPhone, pela Apple, em 2007. O iPhone veio para basicamente
redenir o conceito de smartphones, sendo o primeiro aparelho multitouch e sem teclado
fsico, e com capacidade de processamento muito mais elevada que qualquer antecessor. No
ano seguinte e Google lanou o Android, sistema operacional gratuito, que atualmente o
mais usado nos smartphones [25].
B.2 Era ps-PC
O conceito de computador pessoal est sendo elevado a um novo patamar que consiste na
intermitente presena de tais dispositivos ao longo do dia, uma vez que possuem baterias que
lhes permite car horas ligados e at dias em standby. Esta realidade est sendo chamada de
era ps-PC [26].
Um indicativo deste enorme crescimento que smartphones e tablets vem sofrendo pode
ser notado na gura B.1 [27], que compara a quantidade de venda unitria trimestral (em
milhes) de computadores pessoais, corporativos, tablets e smartphones.
86
Figura B.1: Venda Unitria Mensal (em Milhes) por Produto nos ltimos Anos
Desta maneira, nota-se que enquanto os computadores, sejam eles de uso pessoal ou cor-
porativo, no apresentamcrescimento no nmero de vendas ao longo dos anos, os dispositivos
mveis crescem aproximadamente de maneira exponencial.
Alm disso, somente o nmero de unidades de smartphones est quase superando o n-
mero de computadores pessoais e corporativos (em conjunto), como pode ser vericado na
gura B.2 [27].
Figura B.2: Nmero de Unidades (em Milhes) por Produto nos ltimos Anos
87
Assim sendo, o nmero de smartphones, seguindo a perspectiva de crescimento obtida
nos ltimos anos, deve superar o de computadores ainda em 2014 [28], indicando a atual e
crescente utilizao destes aparelhos.
No cenrio nacional Brasileiro a tendncia segue a global. Em 2013 as vendas de tablets
foi maior que a de notebooks e computadores de mesa [29]. Alm disso, o Brasil contm
o quarto maior mercado mundial de smartphones e est entre os 10 maiores mercados de
tablets [30].
Estima-se que a populao brasileira em 2017 ser de aproximadamente 203 milhes
[31] e, nesse mesmo ano, estima-se que o Brasil ter 70,5 milhes de usurios de smartphone
[32], resultando numa concentrao mdia de aproximadamente um smartphone para cada
trs habitantes.
88
89
Apndice C
Programao Orientada a Objetos
Este apndice conter, uma ideia geral de programao Orientada a Objetos. Como a apli-
cao deste conhecimento varia entre as linguagens de programao, nenhuma estrutura de
cdigos ou comandos ser introduzida, assim sendo, no ser focada em um tipo de lin-
guagem. O intuito saber a teoria por trs deste paradigma para ser capaz de aplic-la em
qualquer linguagem. Os estudos aqui demonstrados foram baseados nas referencias [33] [34].
C.1 Objetos
A base fundamental de Orientao a Objetos so os objetos, uma vez que esta entidade con-
tm operaes para manipular suas informaes.
Em linguagens de programao estruturada, variveis so instncias (exemplares) de uma
estrutura. J em POO, objetos so instncias de classes.
Nos objetos so denidos quais informaes (atributos) ele conter, bem como como tais
atributos podero ser manipulados (mtodos).
C.2 Atributos
Os atributos (ou variveis membro) so os campos que armazenam as informaes referentes
a determinados objetos. O estado de um objeto o conjunto de valores que seus atributos
possuem em um determinado instante.
Tomando-se um automvel como sendo o objeto, como j explicado anteriormente, esse
automvel dever ter seus atributos dados da seguinte maneira:
Classe: Automvel
90
Atributos:
Nmero de rodas
Tipo de Combustvel
Velocidade mxima
Cor
C.3 Mtodos
Os mtodos so os procedimentos que permitem ao objeto realizar suas aes. Tudo que se
espera que um objetos deva fazer precisa ser especicado por um mtodo.
Continuando com o exemplo anterior:
Classe: Automvel
Atributos:
Nmero de rodas
Tipo de Combustvel
Velocidade mxima
Cor
Mtodos:
Acelerar
Frear
Virar para esquerda
Virar para direita
C.4 Classes
Uma classe um conjunto de objetos com caractersticas e comportamentos comuns. Se-
guindo o exemplo:
Classe: Automvel
Objeto: Caminhonete
Atributos:
Nmero de rodas: 4
Tipo de Combustvel: Diesel
Velocidade mxima: 180 km/h
91
Cor: Verde
Mtodos:
Acelerar
Frear
Virar para esquerda
Virar para direita
Objeto: Motocicleta
Atributos:
Nmero de rodas: 2
Tipo de Combustvel: Gasolina
Velocidade mxima: 230 km/h
Cor: Azul
Mtodos:
Acelerar
Frear
Virar para esquerda
Virar para direita
Note que tanto o objeto Caminhonete, quanto o Motocicleta possuem os mesmos mtodos
e os mesmos atributos, contudo os valores de seus atributos so diferentes.
C.5 Abstrao
A abstrao, a "grosso modo", signica que s deve ser representado o que realmente for
ser utilizado, deixando de representar mtodos ou variveis membro desnecessrias. Pelo
exemplo da classe Automvel, se o projeto consiste num sistema para descrever suas carac-
tersticas bsicas, no interessante conter atributos para "Nmero de tomadas de 12V"ou
"Numero de antenas".
C.6 Encapsulamento
O encapsulamento consiste no princpio de projeto de que cada componente de um programa
deve conter todas as informaes necessrias para seu completo funcionamento. Na OO,
os dados (variveis membro), e os processos (mtodos) esto encapsulados numa mesma
92
identidade, o objeto.
O encapsulamento tambm o princpio pelo qual determinado componente, seja ele um
mtodo ou uma varivel membro esteja pblica ou privada. Se pblica, determinado com-
ponente poder ser acessado por qualquer outra classe, se privado, esse componente apenas
poder ser acessado dentro da prpria classe.
Geralmente as variveis membro so privadas, e implementam-se mtodos para modic-
las. Desta maneira, sempre que necessrio alterar seu valor, isso dever ser feito atravs de
algum mtodo, impedindo que, acidentalmente, algum acesse-a diretamente, corrompendo
sua informao. Desta maneira, quase a totalidade dos programas numa linguagem OO (ori-
entada a objetos) consiste na comunicao de objetos por meio de chamadas aos seus mto-
dos, inclusive visando a modicao de suas variveis membro.
A ideia bsica do encapsulamento a de disponibilizar um objeto com todas as suas fun-
cionalidades sem necessariamente saber como ele funciona, ou seja, ser capaz de reutilizar
classes sem necessariamente saber seu cdigo, o importante conhecer suas operaes dis-
ponveis e proteger suas caractersticas por meio de acessos pblicos ou privados.
C.7 Ligaes e Associaes
As ligaes e associaes so os mecanismos pelos quais possvel estabelecer interaes
entre objetos e classes.
Uma associao descreve um grupo de ligaes com estrutura e semntica comuns. A
ligao uma conexo entre duas instncias de objetos, ou seja, a ligao uma instncia da
associao.
C.8 Generalizao e Herana
Generalizao e herana so abstraes de compartilhamento de similaridades entre classes,
preservando suas diferenas.
A generalizao consiste no relacionamento entre uma classe e uma ou mais verses re-
nadas (especializaes) da mesma. J a herana representa a relao entre as classes por
meio de hierarquias.
A classe sendo renada chamada de superclasse (ou classe base), j sua verso renada
chamada de subclasse (ou classe derivada).
93
Dividem-se classes em subclasses, mantendo o princpio de que cada subclasse herda as
caractersticas da classe da qual foi derivada e ainda cria algumas caractersticas particulares.
Novamente, exemplicando com nossa classe Automvel:
Superclasse: Automvel
Atributos:
Nmero de rodas
Tipo de Combustvel
Velocidade mxima
Cor
Mtodos:
Acelerar
Frear
Virar para esquerda
Virar para direita
Subclasse: Caminho
Atributos:
Nmero de carretas
Mtodos:
Desacoplar carreta
A subclasse Caminho possuir os mesmos mtodos e atributos que sua superclasse Au-
tomvel, porm ela mais especializada, uma vez que contm atributos e mtodos prprios.
Ressalta-se ainda que generalizao e herana podem ser recursivamente aplicadas a um
nmero arbitrrio de nveis, e ainda, um dos principais usos de classe derivadas aumentar
a ecincia da programao pela no necessidade da criao de cdigos repetitivos, ou seja,
ao tornar Caminho subclasse de Automvel, no h necessidade de fazer novamente os
mtodos e atribuies j existentes na superclasse.
C.9 Polimorsmo e Sobrecarga
O polimorsmo consiste no uso de um nico nome para denir vrias formas distintas, em
outras palavras, refere-se a criao de uma famlia de funes que compartilham do mesmo
nome, mas cada uma tem um cdigo independente. A sobrecarga um tipo particular de
94
polimorsmo. Por exemplo, seja o operador aritmtico "+"(simbolo de soma). O computador
executa operaes completamente diferentes para somar nmeros inteiros e nmeros reais,
porm a soma desses dois tipos de dados representado por um nico smbolo.
C.10 Construtores e Destrutores
Quando um objeto criado, automaticamente feita sua inicializao atravs de um mtodo
chamado Construtor, tal mtodo possui o mesmo nome da classe e executado automatica-
mente toda vez que um objeto for criado. Quando um objeto destrudo, h outro mtodo
especial que chamado automaticamente. Esta funo chamada destrutor. Ressalta-se
ainda que o destrutor no pode receber argumentos nem ser chamado explicitamente pelo
programador.
95
Apndice D
Android
Nesta seo sero apresentadas algumas informaes importantes sobre a programao para
o Sistema Operacional Android. As referncias [9], [35] [36] e [37] serviram como base para
os estudos desenvolvidos nesta fase.
D.1 Histrico
Em agosto de 2003 foi fundada a Android Inc., uma empresa que tinha por objetivo desen-
volver um pequeno sistema para celulares. Quase dois anos mais tarde (agosto de 2005), a
Google anuncia a compra desta [38], dando continuidade ao desenvolvimento do produto (at
ento, apenas para telefones mveis), tendo como principal objetivo o de ser uma plataforma
exvel, aberta e de fcil migrao para os fabricantes.
Em novembro de 2007, a Google divulga a formao da OHA, Open Handset Alliance,
que consiste na unio de diversas grandes empresas (na poca 34 e hoje 87) do ramo tecno-
lgico com o propsito de padronizar um sistema nico de cdigo aberto para dispositivos
mveis [39]. No mesmo dia, a OHA anunciava o Android como um novo sistema operacional
para plataformas mveis.
De acordo com a OHA:
Hoje, existem 1,5 bilho de aparelhos televisores em uso em todo o mundo e 1
bilho de pessoas possuem acesso internet. Entretanto, quase 3 bilhes de
pessoas tm um telefone celular, tornando o aparelho um dos produtos de bens
de consumo mais bem sucedidos do mundo. Dessa forma, construir um aparelho
de celular superior melhoraria a vida de inmeras pessoas em todo o mundo. A
Open Handset Alliance um grupo formado por empresas lderes em tecnologia
96
mvel que compartilham essa viso para mudar a experincia mvel de todos os
consumidores [40].
Assim sendo, em setembro de 2008 surgiu a primeira verso comercial do Android, o
Android 1.0. De l para c o sistema operacional sofreu diversas atualizaes e melhorias,
contando hoje com verses que atendem tanto smartphones quanto tablets [1].
Alm das melhorias do sistema operacional Android e dos avanos tecnolgicos de hard-
ware presentes nos smartphones e tablets (mostrando-se cada vez mais portteis e robustos)
tais dispositivos esto com acelerado crescimento de vendas, chegando a ter ultrapassado as
de microcomputadores em 2011 [41]. As vendas de smartphones, por exemplo, cresceram
em mdia 73% de 2010 para 2011 [42].
Alavancado com esse nmero de vendas, o Android conseguiu uma enorme ascenso
entre o mercado de sistemas operacionais de smartphones, tendo alcanado um crescimento
de 379% em agosto de 2011 (quando comparado ao mesmo perodo em 2010), ocupando,
atualmente, quase 80% do mercado mundial de dispositivos mveis, estando presente em
781 milhes de dispositivos [43].
Alm das estatsticas comerciais, as caractersticas tcnicas desta plataforma a tornam
especialmente vantajosa. Dentre elas, pode-se citar sua arquitetura exvel (que permite a
integrao entre programas nativos e novos programas desenvolvidos por terceiros), sua uti-
lizao de kernel Linux (que permite a multitarefa, que a capacidade de executar vrias
tarefas simultaneamente, dividindo o uso da memria), permisso de execuo de aplicativos
em segundo plano e suporte a grcos 3D (faz uso de OpenGL, biblioteca grca multiplata-
forma) [9].
D.2 Ferramentas para Ambiente de Programao
As aplicaes para o sistema operacional Android sero escritas em Java, que uma lingua-
gem de cdigo aberto e orientada a objetos. O cdigo fonte resultante ento compilado
em bytecodes, gerando arquivos com extenso *.class que, em seguida, sero convertidos
para o formato *.dex, que ser interpretada pela Virtual Machine Dalvik (Mquina Virtual
prpria para executar aplicativos no Android). Os arquivos *.dex e outros recursos (como
imagens e sons) sero empacotados em um nico arquivo com extenso *.apk (Android Pac-
kage File) que representa a aplicao nal a ser distribuda e, consequentemente, instalada no
smartphone ou tablet [9] [36].
97
Para realizar esse processo, necessrio preparar o ambiente de programao do Android,
utilizando as seguintes ferramentas:
Java Development Kit (JDK): O JDK pode ser encontrado no site da Oracle [44].
Como o Andoid baseado em linguagem de programao Java, necessita-se de seu
compilador.
Eclipse IDE: O Eclipse IDE o software responsvel por executar o plugin ADT e
proporcionar uma interface grca amigvel para o desenvolvimento.
Android SDK: OAndroid SDK o kit de desenvolvimento para o Android. Ele permite
implementar e trabalhar as funes existentes para o dispositivo.
Plugin ADT: Ferramenta que faz uma espcie de link entre o Eclipse e o Android SDK,
fornece o ferramental especco para a programao. Pode ser encontrado em [45].
Ressalta-se que, para desenvolver este trabalho, foi utilizado o sistema operacional Win-
dows 7 de 64 bits, desta maneira, as especicaes de instalao e congurao do ambiente
de programao sero baseadas nesta plataforma.
D.3 Congurao do Ambiente de Programao
Existem duas maneiras de congurar o ambiente de programao, sendo uma delas utilizando
o "ADT Bundle", que consiste na utilizao de um pacote contendo o Eclipse IDE, o Android
SDK e o plugin ADT, sendo uma opo rpida e prtica, porm no personalizvel. A outra
opo a "Standalone"e consiste em instalar os programas em separado, sendo assim mais
demorada porm com maior personalizao. Independente da maneira escolhida, a diferena
durante o desenvolvimento mnima.
Figura D.1: Janela do Ambiente de Programao
98
D.3.1 ADT Bundle
Para a instalao utilizando o ADT Bundle, deve-se seguir os seguintes passos:
1. Realizar o download do executvel do JDK, na verso que desejar [44];
2. Instalar o JDK;
3. Realizar o download do ADT Bundle, que pode ser encontrado em [46];
4. Descompactar o ADT Bundle;
5. Na pasta descompactada, basta abrir o diretrio "Eclipse"e executar o mesmo;
6. O software que abrir corresponde ao ambiente pronto para uso.
Apesar desta maneira ser a mais fcil, no foi a adotada no desenvolvimento deste traba-
lho.
D.3.2 Standalone
Para a instalao Standalone, deve-se seguir os seguintes passos:
1. Realizar o download do executvel do JDK, na verso que desejar [44];
2. Instalar o JDK;
3. Realizar o download do Eclipse IDE, que pode ser encontrado em [47].
4. Instalar o Eclipse IDE;
5. Realizar o download do Android SDK, que pode ser encontrado em [46] na seo Use
an existing IDE;
6. Instalar o Android SDK. Ao nal da Instalao ser oferecido para executar o SDK
Manager, aqui importante que no se execute o mesmo;
7. Instalado o Andoid SDK, abra o Eclipse IDE e selecione Help e em seguida, Install
New Software;
8. Na janela que se abrir, clique em Add, no canto superior direito;
99
9. Na caixa de dilogo Add Repository que abriu, preencha o campo "Name"com "ADT
Plugin"e o campo "URL"com "https://dl-ssl.google.com/android/eclipse/"e
clique em "OK";
10. Na caixa de dilogo Available Software, selecione o checkbox de "Developer Tools"e
clique em "Next";
11. Na janela seguinte ser exibida uma lista de ferramentas que sero baixadas, apenas
clique em "Next";
12. Leia e Aceite os termos da lincena e clique em "Finish";
13. Caso aparea um aviso de segurana dizendo que a autenticidade ou validade do soft-
ware no pode ser estabelecida, clique em "OK";
14. Quando a intalao nalizar, reinicie o Eclipse.
Com tudo instalado, basta apenas congurar a localizao do diretrio onde foi instalado
o SDK, de acordo com os seguintes passos:
1. Aps o Eclipse ter sido reiniciado, caso aparea a janela "Welcome to Android Deve-
lopment", clique em "Use existing SDKs";
2. Selecione o diretrio onde foi instalado o Android SDK e clique em "Next";
3. Feito isso o ambiente estar pronto para uso.
A opo Standalone foi escolhida para realizao deste trabalho principalmente pelo fato
dela permitir que se escolha qual verso do Eclipse IDE deseja-se usar, uma vez que existem
dezenas de verses disponveis, cada qual com suas peculiaridades.
D.4 Adicionando Plataformas e Pacotes
O Android SDK separa as ferramentas, plataformas e outros componentes em pacotes que
podem ser baixados utilizando o Android SDK Manager. O Android SDK original que foi
instalado inclui apenas algumas ferramentas de desenvolvimento. Para desenvolver um apli-
cativo, deve-se realizar o download de pelo menos, uma verso da plataforma Android e a
ltima verso do SDK Platform-tools. Ressalta-se que, independente de como foi feita a con-
gurao do ambiente de programao (ADT Bundle ou Standalone) estes pacotes devem ser
adicionados.
100
Para isto, deve-se seguir os passos:
1. Execute o SDK Manager atravs do arquivo "SDK Manager.exe"presente na raiz do
diretrio onde foi instalado o Android SDK;
2. Aps aberto, o SDK Manager exibira todos os pacotes e plataformas disponveis. Como
mnima congurao deve escolher: "Tools", alguma verso do Android (preferencial-
mente as mais recentes) e "Android Support Library".
3. Aps escolhidos os pacotes, clique em "Install";
4. Finalizada a instalao, tudo que necessrio para desenvolver um aplicativo estar
instalado e congurado
Figura D.2: Janela do SDK Manager
D.5 Verses do Android
Atualmente a ltima verso do Android lanada a 4.4, intitulada de KitKat, contudo, como
o intuito de um software ser o mais compatvel possvel com os hardwares existentes, no
seria vantajoso fazer um aplicativo para uma parcela to pequena de smartphones (esta verso
101
foi lanada no nal de Novembro e corresponde a apenas a 8,5% dos aparelhos que possuem
o Andoid como SO). Dessa maneira, o mais lgico desenvolver uma aplicao que busque
executar na maioria dos dispositivos.
A verso mais compatvel em execuo, a 2.2, "Froyo", entretanto ela se mostra j
defasada em relao s verses mais atuais, ou seja, de nada adianta ter um produto com
muita compatibilidade, porm com pouca velocidade de execuo e desatualizado.
Contudo, existe algo muito interessante no desenvolvimento do Android, que poder
desenvolver para uma verso qualquer x e manter seu software compatvel com qualquer
verso posterior a verso y qualquer, ou seja, pode-se desenvolver para a verso 4.4, utilizando
assim todos os recursos de segurana e funcionalidades desta verso, porm mantendo o
cdigo compatvel com qualquer verso posterior a 2.2, garantindo assim sua globalidade
de execuo. Desta maneira o programa funcionar em praticamente 100% dos dispositivos
existentes e conter a robustez de cdigo das verses mais modernas.
A gura D.3
Figura D.3: Distribuio das Verses do Android (Dados Coletados em Abril e Maio de 2014) [1]
D.6 Emulador Android SDK
O Android SDK possui um emulador de um dispositivo mvel que pode rodar no computador
a m de possibilitar a prototipagem, desenvolvimento e teste, muitas vezes sem a necessidade
de um dispositivo fsico.
Basicamente todas as caractersticas de hardware e software de um dispositivo tpico, ex-
102
ceto o fato de no realizar chamadas, acesso ao acelermetro e bluetooth, entre outros, so
emuladas. Para isto, o emulador utiliza as conguraes do Android Virtual Device (AVD)
para permitir ao usurio congurar at mesmo alguns aspectos de hardware do telefone emu-
lado. O emulador inclui tambm funcionalidades extras para fazer o debug do cdigo ou at
mesmo simula latncias e queda de sinal da operadora.
Uma vez tendo o cdigo elaborado no Eclipse IDE, basta clicar em "Run", escolher o
AVD criado e aguardar o carregamento do emulador e a respectiva execuo do programa
desenvolvido. A gura D.4 exibe a interface do emulador.
Figura D.4: Interface do Emulador Android, emulando um Smartphone modelo Nexus 4
D.7 Criando e Congurando um AVD
Para poder utilizar o emulador, deve-se antes criar um AVD. Para isto, basta seguir os seguin-
tes passos:
1. Execute o AVD Manager atravs do arquivo "AVD Manager.exe"presente na raiz do
103
diretrio onde foi instalado o Android SDK;
2. Na janela aberta, na aba "Android Virtual Devices", clique em "New";
3. Na nova janela que abriu, basta nomear o AVD que deseja criar, preencher as informa-
es exigidas (modelo do dispositivo e verso do Android a ser executada, por exemplo)
e clicar em "OK";
4. Feito isso o AVD criado ser exibido na janela principal do AVD Manager e o mesmo
est pronto para ser executado atravs do Eclipse IDE.
Figura D.5: Janela Principal do AVD, Contendo um AVD Criado que Emular o Smartphone modelo
Nexus 4
D.8 Arquitetura do Android
O SO Android pode ser designado como uma pilha de softwares em diferentes camadas, em
que cada camada consiste num agrupamento de diversos componentes de programa. Tais ca-
madas compe o sistema operacional, middleware e aplicativos. Cada camada da arquitetura
fornece diferentes servios para a camada acima dela. A gura D.6 representa tais camadas,
os detalhes das mesmas sero dados em seguida [48] [9] [49]:
104
Figura D.6: Arquitetura do Sistema Operacional Android
D.8.1 Nvel Zero - Linux Kernel
No chamado "nvel zero", tem-se a base da pilha, ou seja, o Kernel (Linux Kernel). Sua pri-
meira verso foi desenvolvida sobre a verso 2.6 do Sistema Operacional Linux. no Kernel
que se localiza os softwares de gerenciamento de memria, conguraes de segurana e de
rede, entre outros, atuando tambm como responsvel pela abstrao entre o hardware e os
aplicativos (drivers de hardware).
D.8.2 Nvel Um - Libraries e Android RunTime
No nvel um encontram-se as camadas de bibliotecas (Libraries) e de tempo de execuo
(Android RunTime).
A camada de biblioteca consiste num conjunto de instrues que informam ao disposi-
tivo como lidar com diferentes tipos de dados, incluindo um conjunto de biblioteca C e C++
usadas por diversos componentes do sistema. Essas bibliotecas so expostas para os progra-
madores via cdigos na linguagem Java, atravs do framework do sistema, compondo assim
105
a estrutura de aplicativo Android. Ressalta-se ainda que so essas as bibliotecas respons-
veis por prover funcionalidades para manipulao de udio, vdeo, grcos, banco de dados,
navegador, entre outros.
A camada de tempo de execuo inclui um conjunto de bibliotecas do ncleo Java (Core
Libraries), permitindo que cada processo rode sua prpria instncia na maquina virtual. Desta
maneira, para desenvolver aplicaes para o Android, utilizada a linguagemde programao
Java.
Embora o desenvolvimento de aplicativos seja realizado atravs da linguagem Java, as
aplicaes no so executadas em uma mquina virtual Java tradicional (no existe uma JVM
(Java Virtual Machine) inclusa no sistema), mas sim numa mquina virtual prpria, deno-
minada Dalvik (DVM), que otimizada especialmente para e execuo de aplicativos em
dispositivos moveis, executando seu prprio tipo de bytecodes.
Essa maquina virtual foi construda por engenheiros da Google, visando um consumo
mnimo de memria e isolamento de processos. Ela se torna essencial pois permite que
mltiplas instncias executem ao mesmo tempo, de modo que se uma aplicao parar, ela
no afeta quaisquer outras aplicaes rodando no dispositivo, alm disso, como a mquina
virtual est baseada em registradores ela desenvolvida de forma otimizada para requerer
pouca memria.
D.8.3 Nvel Dois - Application Framework
No nvel dois, encontra-se a camada de Application Framework, ou framework de aplicao,
que disponibiliza aos desenvolvedores as mesmas APIs utilizadas para criar as aplicaes ori-
ginais do sistema, funcionando como um meio de ligao com a camada de bibliotecas. Este
framework permite que o desenvolvedor tenha o mesmo acesso ao sistema, que os aplicativos
da camada de aplicativos possuem. No geral, este framework foi desenvolvido para abstrair
a complexidade e simplicar o reuso de procedimentos.
Entre as APIs disponveis, encontram-se, por exemplo, a Location Manager (usada para
obter a posio geogrca do usurio via GPS), Telephony Manager (usada para prover infor-
maes sobre o dispositivo, como bateria e servios de telefonia), Window Manager (respon-
svel pelo gerenciamento de toda janela de uma aplicao), Notication Manager (permite
que uma aplicao exiba noticaes, controle LEDs, sons e vibrao) e Activity Manager
(responsvel pelo gerenciamento de cada atividade do sistema).
No Android cada atividade gerenciada atravs de uma pilha de atividades. Toda nova
106
atividade criada vai para o topo de pilha de atividades e se torna uma running Activity, o que
quer dizer que a mesma ser executada (nas sees seguintes sero dados maiores detalhes
sobre as Activities).
D.8.4 Nvel Trs - Applications
Neste nvel encontra-se a camada de aplicaes e as funes bsicas do dispositivo, sendo
a camada mais alta da arquitetura do sistema. Esta a camada de interao entre o usurio
e o dispositivo mvel, e composta pelo conjunto de aplicativos nativos do sistema como,
por exemplo, os clientes de e-mail, calendrio, calculadora, mapas, navegadores de internet,
jogos, e outros.
D.9 Estrutura de Um Projeto
Todo novo projeto Android possui uma estrutura de pastas especial, de modo a aproveitar o
uso dos resources (recursos) e proporcionar uma organizao para o contedo do programa.
A gura D.7 mostra a estrutura geral que todo novo projeto Android possui, seus principais
componentes sero detalhados em seguida [9] [50] [51].
Figura D.7: Estrutura Geral de um Projeto Android
D.9.1 Diretrio src
O diretrio src (Source) da estrutura do projeto possui todas as classes escritas em Java, ou
seja, todos os arquivos de cdigo fonte (.java) desenvolvido, bem como os pacotes que os
organizam.
107
D.9.2 Diretrio gen
O diretrio gen (Generated Source) onde encontram-se as classes geradas automaticamente
pelo SDK do Android. Neste diretrio encontram-se classes que o Android usa internamente
para executar o projeto.
Como exemplo pode-se citar a classe R.java (classe onde so mapeadas as constantes
de acesso aos recursos do aplicativo) e a classe BuildCong.java (classe onde so denidas
algumas conguraes da construo do projeto).
Ressalta-se ainda que o contedo deste diretrio gerado automaticamente e no deve,
de forma alguma, ser alterado.
Um fato interessante que a classe R.java contm IDs para todos os itens da pasta res,
e atravs desses IDs que pode-se usar todos os resources na nossa aplicao, em outras
palavras, a classe que faz a interface entre cdigo fonte e layout da aplicao.
D.9.3 Diretrio res
O diretrio res (Resources) o local onde encontram-se os recursos da aplicao. Dentro
deste diretrio, existem subdiretrios para cada tipo de recurso, como:
res/drawable-<screen cfg>: Local onde deve-se colocar os arquivos de imagens (png,
jpeg ou gif). A diviso entre hdpi (High DPI), mdpi (Medium DPI), ldpi (Low DPI)
serve para guardar as imagens em resolues diferentes;
res/layout: Local onde cam os arquivos XML que representam o layout das Activities
(telas);
res/values: Local onde cam os arquivos XML com as mensagens do aplicativo (j com
suporte a internacionalizao, que um recurso para facilitar traduo das mensagens).
A arquitetura de interface grca do Android baseada no padro de projetos MVC (Mo-
del - View - Controller), onde a camada Model, responsvel pelas regras da aplicao, a
camada de View, responsvel pela interface grca e a camada de Controller gerencia os
eventos de uma determinada tela.
A grande vantagem proporcionada por este padro a modularidade, em termos prticos,
consegue-se alterar todo layout de uma determinada tela sem mexer no cdigo que diz res-
peito ao comportamento da mesma. Desta maneira, a cor da tela, o tamanho e a fonte dos
108
botes, e tudo que diz respeito a interface grca denido na camada View, enquanto o que
ir acontecer quando os botes forem clicados ser ministrado pela camada de Controller.
Desta maneira, os layouts XML assumem o papel de View, as Activities assumem o pa-
pel de Controller, tudo isso enquanto a classe R.java, faz a ligao entre as duas camadas,
permitindo o acesso de recursos encontrados na pasta "res"nas Activities do projeto.
D.9.4 Arquivo AndroidManifest.xml
O AndroidManifest.xml um arquivo XML que armazena as conguraes necessrias para
a execuo do aplicativo para Android. neste arquivo que estaro congurados os com-
ponentes da aplicao, o nome do pacote padro do projeto, o nome das Activities usadas
no aplicativo, a verso da API do Android que o aplicativo ir suportar, a verso do prprio
aplicativo, bem como as permisses que o aplicativo precisar para executar no Android.
D.10 Ciclo de Vida de Uma Activity
Activity uma classe que representa uma tela da aplicao Android, sendo responsvel por
controlar os eventos da tela, denir a interface grca do usurio, bem como tratar eventos
gerados nesta tela como, por exemplo, um clique na tela, boto pressionado e escolha de item
no menu.
O clico de vida de Activities similar ao ciclo de vida de Threads. composto por 7 m-
todos que indicam seu estado atual: onCreate(), onStart(), onResume(), onPause(), onStop(),
onRestart() e onDestroy().
Apenas atravs do entendimento deste ciclo de vida pode-se desenvolver aplicaes mais
robustas.
A gura D.8 exibe um diagrama do Ciclo de Vida de uma Activity.
109
Figura D.8: Ciclo de Vida de Uma Activity
Desta maneira, os mtodos signicam:
onCreate(): obrigatrio e consiste na primeira funo a ser executada em uma Acti-
vity. Geralmente a responsvel por carregar os layouts XML e outras operaes de
inicializao. executada apenas uma vez. Aps a chamada do mtodo onCreate(), o
mtodo onStart() chamando para iniciar o ciclo de vida da Activity.
onStart(): chamada imediatamente aps o mtodo onCreate() ou onRestart() (quando
110
uma Activity que estava em background volta a ter foco)
onResume(): Assim como a onStart(), chamada na inicializao da Activity e tambm
quando uma Activity volta a ter foco. Entretanto, a onStart() s chamada quando a
Activity no estava mais visvel e volta a ter foco, a onResume() chamada quando a
Activity foi completamente encoberta por outra Activity e volta a ter foco.
onPause(): a primeira funo a ser invocada quando a Activity perde o foco (isso
ocorre quando uma nova Activity iniciada como, por exemplo o dispositivo entrar em
espera para economizar energia). Este mtodo salva o estado da Activity para que possa
ser recuperado no mtodo onResume().
onStop(): S chamada quando a Activity ca completamente encoberta por outra
Activity. Depois de parada, a Activity pode ser reiniciada com o mtodo onRestart().
onDestroy(): A ltima funo a ser executada. Depois dela, a Activity considerada
"morta", ou seja, no pode mais ser relanada. Se o usurio voltar a requisitar essa
Activity, um novo objeto ser construdo. Este mtodo pode ser chamado pelo prprio
SO, para liberar recursos.
onRestart(): Chamada imediatamente antes da onStart(), quando uma Activity volta a
ter o foco depois de estar em background.
Segundo a documentao do Android h ainda trs subnveis do ciclo de vida principal:
Entire Lifetime: Ocorre apenas uma vez e dene o tempo de vida completo de uma
Activity. Acontece entre as chamadas do mtodo onCreate() e onDestroy().
Visible Lifetime: Ocorre entre os mtodos onStart() e onStop(). Durante esse perodo
possvel visualizar a Activity na tela, mas ela pode no estar em primeiro plano e
interagindo com o usurio. Ou seja, possa ser que outra Activity esteja no topo da pilha
de execuo.
Foreground Lifetime: Este ciclo ocorre entre os mtodos onResume() e onPause() e,
durante esse tempo, a Activity est no topo da pilha de execuo e interagindo com o
usurio.
111
D.11 Dinmica de um Aplicativo
D.11.1 Ciclo de vida dos processos em Android
O Android tenta manter o processo relativo a uma aplicao pelo tempo necessrio, mas
eventualmente precisa remover processos antigos para conseguir alocar memria para novos
processos que esto chegando. Para determinar quais processos permanecero e quais sero
mortos, o sistema determina uma hierarquia de importncia para cada processo.
Essa hierarquia baseada nas componentes que esto rodando no processo e o estado de
cada componente. Processos de mais baixa importncia so eliminados primeiro, depois o
mesmo ocorre com aqueles com as seguintes mais baixas notas e assim por diante, enquanto
for necessrio liberar mais recursos do sistema [52].
D.11.2 Threads em Android
Quando uma aplicao lanada, o sistema cria uma thread para execuo da aplicao: main
thread. Essa thread muito importante, pois tem a responsabilidade de despachar eventos
registrados pelos diferentes componentes da interface grca.
Contudo, quando a aplicao lida com processamento intensivo em resposta interao
com o usurio, esse modelo de thread nica pode resultar em baixa performance se no for
implementado da maneira correta. Ou seja, como tudo est ocorrendo na thread principal,
lidar com operaes de longa durao faz com que nenhum outro evento possa ser despa-
chado. Pela perspectiva do usurio, a aplicao parece travar. Pior, se a thread principal
car bloqueada por mais de 5 segundos, o usurio ver o infame dilogo "aplicativo no est
respondendo". O usurio pode ento decidir parar de usar a aplicao e desinstal-la de seu
dispositivo. Nesta situao, necessrio o uso de threads trabalhadoras [52].
D.11.3 Threads Trabalhadoras
Diante do desao de trabalhar com o modelo de thread nica descrito acima, vital para a
manuteno do tempo de resposta de sua aplicao que a thread principal no seja bloqueada.
Se houver operaes no instantneas a serem processadas, tenha certeza que voc no lidar
com elas na thread principal. Novas threads paralelas devem lidar com esse tipo de trabalho.
112
D.11.4 Eventos e Programao Orientada a Eventos
Em geral, eventos so manifestaes ou aes decorridas interao do usurio com a aplica-
o. Por exemplo, o click em um boto um evento. O programa automaticamente reage
esse evento executando alguma ao, por exemplo, mudando a cor da tela. Todos os pro-
gramas com interface grca e a maioria dos programas que implementam troca de dados
atravs da rede ou sensores de dados (internet, bluetooth, GPS, entre outros) so programas
orientados a eventos.
Programas orientados a eventos precisam de basicamente 2 componentes [53]:
- Event queue: uma la em que so registrados os eventos que foram iniciados pela
interao entre a aplicao e o usurio;
- Event loop: aqui que o programa reage aos eventos iniciados. O "event loop" um loop
innito que espera a chegada de algum evento, checa o tipo de evento, e reage sobre o evento
de um tipo especco.
Em Android, existe basicamente uma nica thread que responsvel pela execuo do
event loop e das respostas aos eventos, ela chamada Main Thread ou UI Thread. Porm,
como visto anteriormente, o tratamento dos eventos no pode fazer com que a resposta ao
usurio seja lenta. Assim, os eventos devem ser lidos rapidamente da Event Queue, e a UI
thread s pode passar um tempo bem curto executando as respostas aos eventos gerados.
A soluo para este problema est na criao e utilizao de threads concorrentes ou
background threads, cuja execuo feita totalmente em paralelo execuo da UI thread
ou thread principal. Assim, essas threads concorrentes so criadas especialmente para li-
dar com operaes que consomem mais tempo de processamento. Aps ter criado a thread
concorrente, a UI thread volta para a execuo do event loop[53].
113
Apndice E
UML - Unied Modeling Language
A descrio, exibio e os conceitos bsicos, sintaxes e signicados de alguns diagramas
de UML sero detalhados neste apndice. Os estudos aqui demostrados foram baseado nas
referncias [34] [54].
E.1 Diagramas de Classes
Um diagrama de classe mostra uma estrutura esttica das classes que constituem o sistema,
bem como o relacionamento entre diversas classes.
E.1.1 Representao de uma Classe
Veja a gura E.1 que representa a classe Automvel (vide Apndice A para maiores detalhes
sobre esta classe usada para exemplos).
Figura E.1: Representao da classe Automvel
114
A gura E.1 composta por 3 retngulos. O primeiro deles contm o nome da classe e
deve estar em negrito. J o retngulo intermedirio contm os atributos da classe. No ltimo
retngulo, deve haver os mtodos que podem ser executados pela classe.
E.1.2 Associao Simples
A Associao Simples mostra o relacionamento ou dependncia de uma classe com a outra.
O smbolo que a representa pode ser vericado na gura E.2.
Figura E.2: Representao da Associao Simples
E.1.3 Generalizao e Herana
A Herana ou Generalizao indica que o comportamento da classe ou caracterstica da classe
muda. O smbolo para a Herana pode ser vista na gura E.3. Um exemplo de sua utilizao
se mostra na gura E.4, utilizando o exemplo da superclasse Automvel e subclasse Cami-
nho, presentes no Apndice A.
Figura E.3: Representao da Herana
Figura E.4: Exemplo de Herana entre a superclasse Automvel e a subclasse Caminho
115
E.1.4 Agregao
Pode-se dizer que a agregao uma associao em que um objeto parte de outro, de
tal forma que a parte pode existir sem o todo. Isso quer dizer que uma relao do tipo
"todo/parte"ou "possui um". uma forma especializada de associao na qual um todo
relacionado com suas partes. Na gura E.5 pode-se vericar seu smbolo.
Figura E.5: Representao da Agregao
E.1.5 Composio
Tipo de associao de agregao, mas a diferena entre elas que a composio faz parte do
todo, e ainda, depende do todo. Em outras palavras, os objetos so inseparveis, quando um
objeto Pai (pertencente a uma Superclasse) destrudo o mesmo ocorre com o objeto Filho
(pertencente a subclasse). Na gura E.6 pode-se vericar seu smbolo.
Figura E.6: Representao da Composio
E.2 Diagrama de Caso de Uso
Primeiramente, sabe-se que um Ator pode ser uma pessoa, um sistema, ou uma entidade
externa. ele quem realiza uma atividade e sempre atua sobre um caso de uso.
Um caso de uso a descrio de uma funcionalidade (um uso especco) do sistema. Tal
descrio dos usos normalmente feita atravs de uma planilha contendo textos explicativos.
Em suma, os diagramas de caso de uso mostram um certo nmero de atores externos e
suas conexes com os casos de uso que o sistema prov. J a funcionalidade e o uxo dos
mesmos so apresentados atravs de diagramas de atividades
E.3 Diagrama de Atividade
Um diagrama de atividade mostra um uxo sequencial de aes em um nico processo, sendo
que as aes so as unidades bsicas de uma atividade. Tambm vericado como uma
116
atividade depende da outra.
Esse diagrama pode especicar mensagens e objetos sendo enviados ou recebidos como
parte das aes que esto sendo executadas. Condies e decises, como tambm execuo
de aes paralelas, podem ser vistas neste diagrama.
E.4 Diagrama de Sequncia
Consiste em um diagrama que tem o objetivo de representar como as mensagens entre os
objetos so trocadas no decorrer do tempo para a realizao de uma operao, ou seja, mostra
a evoluo de uma dada situao em determinado momento do software.
117
Apndice F
Computao Na Nuvem
O conceito de computao na nuvem (em ingls, cloud computing) refere-se utilizao das
mais variadas aplicaes atravs de servios que podero ser acessados de qualquer lugar do
mundo, a qualquer hora, e independente da plataforma, sem a necessidade de instalao de
programas ou de armazenamento de dados localmente, porm com a mesma facilidade.
O acesso a tais programas, servios e arquivos realizado de maneira remota, utilizando
da memria e da capacidade de armazenamento e clculo de computadores e servidores com-
partilhados e interligados por meio da Internet. A aluso deste conceito ao termo "nuvem"se
d pelo fato de que, em uxogramas e diagramas, a internet representada pelo smbolo de
uma nuvem [55] [56].
Apesar do conceito de nuvem de dados ser recente, esta tecnologia vem sendo usada a um
bom tempo, como por exemplo, atravs das contas de e-mails. Os usurios que possuam um
e-mail podem acessa-lo em qualquer lugar, no necessitando de um programa para isto, ou
seja, basta logar na conta atravs do navegador de qualquer computador conectado a internet.
F.1 Tipologia
Atualmente, pode-se dividir a computao na nuvem por tipos de servio [57] [58] [59],
dentre eles, os mais comuns so:
SaaS - Software como Servio (Software as a Service): Consiste no uso de um soft-
ware no qual o mesmo oferecido como um servio. Geralmente paga-se um valor
peridico referente aos recursos utilizados e/ou pelo tempo de uso. Como exemplo,
pode-se citar o Google Docs [60] e o Microsoft SharePoint Online [61].
118
PaaS - Plataforma como Servio (Plataform as a Service): Trata-se de uma soluo
mais ampla para determinadas aplicaes, que rene diversos recursos necessrios
operao, como armazenamento, banco de dados, escalabilidade (aumento automtico
da capacidade de armazenamento ou processamento), suporte a linguagens de progra-
mao, segurana, entre outros. Como exemplo, cita-se o Microsoft Azure [62].
IaaS - Infra-estrutura como Servio (Infrastructure as a Service): Similar ao PaaS,
contudo focando em estrutura de hardware ou mquinas virtuais, atravs da utilizao
de uma porcentagem de um servidor, permitindo inclusive acesso ao sistema operaci-
onal, geralmente com congurao que se adequam necessidade da aplicao. Um
bom exemplo o Amazon EC2 [63]
DevaaS - Desenvolvimento como Servio (Development as a Service): Resume-se em
ferramentas de desenvolvimento, muitas vezes compartilhadas. Neste segmento, tm-se
como exemplo o Koding [64].
CaaS - Comunicao como Servio (Communication as a Service): Consiste no uso
de uma soluo de comunicao unicada, que pode ser tanto hospedada no data center
do provedor quanto do fabricante. Um bom exemplo o Microsoft Lync [65].
DBaaS - Banco de dados como Servio (Database as a Service): Esta modalidade
baseia-se no fornecimento de servios para armazenamento e acesso de volumes de
dados. Um timo exemplo o Parse [66], inclusive utilizado no desenvolvimento deste
trabalho de concluso de curso.
F.2 Modelos de Implantao
A Computao na Nuvem ainda pode ser classicada por seu modelo de implantao, depen-
dendo da sua restrio ou abertura de acesso [67] [57].
Nuvens Privadas: So aquelas construdas exclusivamente para um nico usurio (uma
empresa, por exemplo). A infraestrutura utilizada pertence ao usurio, possuindo total
controle sobre como as aplicaes so implementadas na nuvem. Uma nuvem privada
, em geral, construda sobre um data center privado.
Nuvens Pblicas: So aquelas executadas por terceiros. As aplicaes de diversos
usurios cam misturadas nos sistemas de armazenamento. A implementao de uma
119
nuvem pblica considera questes fundamentais, como desempenho e segurana, de
modo que a existncia de outras aplicaes sendo executadas na mesma nuvem perma-
nece transparente tanto para os prestadores de servios como para os usurios.
Nuvens Comunitrias: A infraestrutura de nuvem compartilhada por diversas or-
ganizaes e suporta uma comunidade especca que partilha as preocupaes (por
exemplo, a misso, os requisitos de segurana, poltica e consideraes sobre o cum-
primento). Pode ser administrado por organizaes ou por um terceiro e pode existir
localmente ou remotamente.
Nuvens Hbridas: Consiste na composio dos modelos de nuvens pblicas e privadas.
Elas permitem que uma nuvem privada possa ter seus recursos ampliados a partir de
uma reserva de recursos em uma nuvem pblica. Essa caracterstica possui a vantagem
de manter os nveis de servio mesmo que haja utuaes rpidas na necessidade dos
recursos.
F.3 Vantagens e Desvantagens
Dentre as vantagens da computao na nuvem [68] [67] [57], pode-se citar como as mais
relevantes:
Na maioria dos casos, o acesso a determinadas aplicaes independente do sistema
operacional ou hardware do usurio;
Despreocupao com a estrutura, uma vez que o hardware, rotinas de backup, con-
trole de segurana, manuteno, entre outros, so responsabilidades do fornecedor do
servio;
Maior facilidade no compartilhamento de dados e em trabalho colaborativo. Todos os
usurios acessam as aplicaes e os dados da nuvem, independente de sua localizao
fsica;
Grande disponibilidade: geralmente se um servidor parar de funcionar, por exemplo,
os demais que fazem parte da estrutura continuam a oferecer o servio, existindo assim
grande redundncia;
120
Controle de gastos ecientes: diversas aplicaes em cloud computing so gratuitas e,
quando pagas, o usurio s o far em relao aos recursos que usar ou ao tempo que
utilizar;
Escalabilidade: O provisionamento dinmico de recursos sob demanda, com mnimo
de esforo por parte do usurio;
Transparncia: O usurio no necessita conhecer toda a estrutura que h por trs de sua
nuvem, ou seja, no precisa saber quantos servidores executamdeterminada ferramenta,
quais so as conguraes de hardware utilizadas, como o escalonamento feito, ou
onde est a localizao fsica do data center.
Apesar das grandes vantagens, assimcomo todo sistema, a computao na nuvemtambm
possui suas desvantagens, sendo que a maior delas vem fora do propsito da mesma, ou seja,
o acesso a internet. Caso o acesso seja perdido, basicamente todos os sistemas embarcados
que a utilizam sero impactados. Alm disso, pode-se ainda citar [68] [67] [57]:
Menos proteo privacidade sob os olhos da lei, uma vez que a obteno de infor-
maes na nuvem pode ser feita, em alguns pases, inclusive sem o conhecimento e
consentimento do usurio, o que no ocorre em sistemas off-line.
Frgeis sistemas de segurana so fceis de invadir, ou seja, a robustez em segurana
um fator importante e que pode ser comprometido.
Indisponibilidade do servidor em caso dos mesmos sarem do ar
A velocidade de processamento no que tange a taxa de transferncia, desta maneira, se
a internet no tiver uma boa banda, o sistema pode ser comprometido.
121
Apndice G
Banco De Dados
Durante muito tempo os BDs foram construdos sobre sistemas de arquivos do sistema ope-
racional para armazenar seus dados, desta maneira, a m de poder controlar os dados bem
como os usurios, a necessidade de um sistema de gesto surgiu naturalmente. Atualmente
os BDs so operados pelos Sistemas Gerenciadores de Bancos de Dados - SGBD (em ingls,
Database Managment System), que correspondem a uma coleo de programas que permitem
aos usurios criarem e manipularem uma base de dados de maneira simples. Um SGBD ,
assim, um sistema de software de propsito geral que facilita o processo de denir, construir
e manipular bases de dados de diversas aplicaes [10] [11].
Denir uma base de dados envolve a especicao de tipos de dados a serem armaze-
nados na base de dados.
Construir uma base de dados o processo de armazenar os dados em algum meio que
seja controlado pelo SGBD.
Manipular uma base de dados indica a utilizao de funes como a de consulta, para
recuperar dados especcos, modicao da base de dados para reetir mudanas no
contedo do banco (inseres, atualizaes e remoes), e gerao de relatrios.
G.1 Modelos de Dados
Os SGBDpodemser diferenciados de acordo coma representao dos dados que so contidos
no banco, sendo divididos em modelo hierrquico, em rede, relacional e orientado a objetos,
detalhados a seguir [69] [70].
122
G.1.1 Modelo Hierrquico
Nesse modelo de dados, os dados so estruturados em hierarquias ou rvores. Os ns das
hierarquias contm ocorrncias de registros, onde cada registro uma coleo de campos
(atributos), cada um contendo apenas uma informao. O registro da hierarquia que precede
a outros o registro-pai, os outros so chamados de registros-lhos.
O relacionamento entre um registro-pai e vrios registros-lhos possui cardinalidade 1:N.
Os dados organizados segundo este modelo podem ser acessados segundo uma sequncia
hierrquica com uma navegao do topo para as folhas e da esquerda para a direita.
A gura G.1 representa, simplicadamente, este modelo.
Figura G.1: Representao do Modelo Hierrquico
G.1.2 Modelo em Rede
Omodelo emredes pode ser visto como uma extenso ao modelo hierrquico, pormeliminando-
se o conceito de hierarquia e permitindo que um mesmo registro esteja envolvido em vrias
associaes.
No modelo em rede, os registros so organizados em grafos onde aparece um nico tipo
de associao que dene uma relao 1:N entre 2 tipos de registros: proprietrio e membro.
Desta maneira, dados dois relacionamentos 1:N entre os registros A e D e entre os registros
C e D possvel construir um relacionamento M:N entre A e D.
Figura G.2: Representao do Modelo em Rede
123
G.1.3 Modelo Relacional
O modelo relacional surgiu graas a necessidade de aumentar a independncia de dados nos
sistemas gerenciadores de banco de dados, prover um conjunto de funes apoiadas em lge-
bra relacional para armazenamento e recuperao de dados e permitir processamento ad-hoc.
Omodelo relacional possui como base a teoria dos conjuntos e lgebra relacional, revelando-
se como o modelo mais exvel e adequado ao solucionar os vrios problemas que se colocam
no nvel da concepo e implementao da base de dados.
A estrutura fundamental do modelo relacional a relao (tabela), no qual uma relao
constituda por um ou mais atributos (campos) que traduzem o tipo de dados a armazenar.
Cada instncia do esquema (linha) chamada de tupla (registro).
O modelo relacional no tem caminhos pr-denidos para se fazer acesso aos dados como
nos modelos que o precederam.
Figura G.3: Representao do Modelo Relacional
G.1.4 Modelo Orientado a Objetos
A motivao para o surgimento dos modelos orientados a objetos surgiu em funo dos limi-
tes de armazenamento e representao semntica impostas no modelo relacional.
A habilidade para criar os tipos de dados necessrios uma caracterstica das linguagens
de programao orientadas a objetos. Contudo, estes sistemas necessitam guardar representa-
es das estruturas de dados que utilizam no armazenamento permanente. A estrutura padro
para os bancos de dados orientados a objetos foi feita pelo Object Database Management
Group (ODMG), que formada por representantes dos principais fabricantes de banco de
dados orientados a objeto disponveis comercialmente.
124
Figura G.4: Representao do Modelo Orientado a Objetos
G.2 Base de Dados x Processamento Tradicional de Arquivos
Como j apresentado, os BDs surgiram para substituir o armazenamento de dados em siste-
mas de arquivos do sistema operacional. A tabela G.1 [69] traz as principais caractersticas
que diferem um sistema desenvolvido na perspectiva de banco de dados versus um desenvol-
vimento pelo tradicional gerenciamento de arquivos.
Processamento Tradicional de Arquivos Base de Dados Vantagem da Base de Dados
Denio dos dados parte do cdigo
de programas de aplicao
Metadados Eliminao de redundncias
Dependncia entre aplicao especca
e dados
Capaz de permitir diversas aplicaes Eliminao de redundncias
- - - - Independncia entre dados e programas Facilidade de manuteno
Representao de dados ao nvel fsico Representao conceitual atravs de da-
dos e programas
Facilidade de manuteno
Cada viso implementada por mdu-
los especcos
Permite mltiplas vises Facilidade de consultas
Tabela G.1: Comparao: Base de Dados x Processamento Tradicional de Arquivos
125
Apndice H
Caracterizao do Pulse Sensor Amped
De acordo com o fabricante, o Pulse Sensor Amped pode operar numa faixa entre 3v e 5v. A
m de determinar qual a melhor faixa de operao do mesmo, foi feito um estudo em labora-
trio de modo a caracterizar seu comportamento frente a diferentes tenses de alimentao.
Este Apndice visa mostrar os resultados desta anlise.
H.1 Resposta do Sensor com Diferentes Tenses de Alimentao
O sensor foi submetido a diferentes tenses de alimentao, variando de 2,3 a 5v. O intuito
era vericar em qual tenso sua resposta seria melhor.
Uma primeira anlise foi feita atravs da alimentao do sensor por uma fonte de tenso
DC, variando a tenso de entrada de 3 a 5v, e capturando a resposta do sensor num oscilos-
cpio digital. As guras H.1, H.2, H.3, H.4 e H.5 correspondem aos resultados obtidos.
126
Figura H.1: Resposta do Sensor Quando Alimentado com 3v
Figura H.2: Resposta do Sensor Quando Alimentado com 3,5v
127
Figura H.3: Resposta do Sensor Quando Alimentado com 4v
Figura H.4: Resposta do Sensor Quando Alimentado com 4,5v
128
Figura H.5: Resposta do Sensor Quando Alimentado com 5v
Uma segunda anlise foi feita variando a tenso em faixas fora de sua especicao de
operao, para isto, alimentou-se o sensor com uma tenso logo abaixo de 3v (mais especi-
camente, 2,95v), 2,5v e procurou-se tambm o valor limiar de tenso para o qual o circuito
parasse de captar sinal cardaco (que ocorreu em 2,34v). Tais resultados so dispostos nas
guras H.6, H.7 e H.8.
Figura H.6: Resposta do Sensor Quando Alimentado com 2,95v
129
Figura H.7: Resposta do Sensor Quando Alimentado com 2,5v
Figura H.8: Resposta do Sensor Quando Alimentado com 2,34v
H.2 Anlise dos Resultados Obtidos
Com base nos resultados obtidos, foi elaborada a tabela H.1 e, com base na tabela, o grco
da gura H.9.
130
Tenso de Alimentao Tenso Mxima Tenso Mnima Tenso Pico a Pico
2.34 1.23 0.99 0.24
2.51 1.87 0.91 0.96
2.95 2.68 0.59 2.09
3.03 2.76 0.95 1.81
3.51 1.95 1.59 0.36
4.03 2.12 1.87 0.24
4.52 2.40 2.08 0.32
5.00 2.60 2.36 0.24
Tabela H.1: Resposta do Sensor com Diferentes Tenses de Alimentao
Figura H.9: Grco de Resposta do Sensor com Diferentes Tenses de Alimentao
Analisando s dados obtidos, percebe-se que o sensor possui uma melhor resposta, com
maior resoluo, em tenses enre 2,5 e 3,5 v. interessante notar que a melhor resposta foi
obtida para uma tenso logo abixo de 3v, contudo o sinal ceifado e deformado. Dados tais
resultados, a escolha para o desenvolvimento do projeto utilizando uma tenso de alimentao
de 3v foi a mais pertinente.
131
Apndice I
Cdigo do Microprocessador
1 # i n c l u d e <18F2550 . h>
2
3 / / Di r e t i v a s de Funci onament o do PIC
4 / / NOWDT: Watch Dog Ti mer d e s a b i l i t a d o
5 / / BROWNOUT: PIC r e i n i c i a quando oc or r e Brownout ( a l i me nt a o c a i r e pe nt i na me nt e
)
6 / / NOLVP: Sem Low Vol t age Programmi ng
7 / / INTRC: Uso de o s c i l a d o r i n t e r n o
8 # f u s e s NOWDT, BROWNOUT, NOLVP, INTRC
9 / / Es p e c i f i c a o de o s c i l a o i n t e r n a em 8 MHz
10 # us e de l a y ( i n t e r n a l =8M)
11 / / Conf i gur a o s e r i a l : Baud r a t e de 9600 , 8 b i t s e sem p a r i d a d e
12 # us e r s 232 ( baud =9600 , p a r i t y =N, xmi t =PIN_C6 , r cv=PIN_C7 , b i t s =8 , s t r ea m=PORT1)
13 # d e f i n e LED5 PIN_B5
14 # d e f i n e LED4 PIN_B4
15
16 voi d main ( )
17 {
18 / / Va r i v e i s pa r a c l c u l o do BPM
19 uns i gned i n t ba t i me nt os = 0;
20 uns i gned i n t bpm = 0;
21 / / Va r i v e i s pa r a envi o do v a l o r do BPM
22 uns i gned i n t c e nt e na = 0;
23 uns i gned i n t dezena = 0;
24 uns i gned i n t uni dade = 0;
25 / / Cdi go pa r a c o n t r o l e de i n i c i a l i z a o do pr ogr ama
26 out put _hi gh ( LED5) ;
27 del ay_ms ( 3000) ;
28 out put _l ow ( LED5) ;
132
29 / / Conf i gur a o pa r a Ti mer0 f u n c i o n a r como c ont a dor
30 / / RTCC_EXT_H_TO_L: Contagem s e r e xe c ut a da t oda vez que s i n a l v a r i a r de a l t o
n v e l pa r a bai xo
31 / / RTCC_DIV_1 : O r e s u l t a d o da cont agem no s e r d i v i d i d o por nenhum v a l o r
32 s e t up_t i me r _0 ( RTCC_EXT_H_TO_L | RTCC_DIV_1) ;
33 whi l e ( 1 )
34 {
35 / / I n i c i a l i z a c ont a dor com v a l o r 0
36 s e t _ t i me r 0 ( 0 ) ;
37 / / Acende / Apaga Led ( c o n t r o l e de f l uxo )
38 o u t p u t _ t o g g l e ( LED4) ;
39 / / Re a l i z a um a t r a s o de 15 s egundos
40 / / Nesse tempo o c ont a dor c ont a os ba t i me nt os
41 del ay_ms ( 15000) ;
42 / / At r i bui s e a v a r i a v e l bpmPar ci al o v a l o r cont ado
43 ba t i me nt os = g e t _ r t c c ( ) ;
44 / / ba t i me nt os : Nmero de ba t i me nt os c a r d a c o s numa j a n e l a de 15 s egundos
45 / / bpm: Pr opagao de ba t i me nt os pa r a j a n e l a de 60 s egundos
46 bpm = ba t i me nt os 4;
47 / / Separ a a uni dade , dezena e c e nt e na do v a l o r do BPM
48 c e nt e na = ( i n t ) bpm/ 1 0 0 ;
49 dezena = ( i n t ) ( bpm c e nt e na 100) / 1 0 ;
50 uni dade = ( i n t ) ( bpm ( c e nt e na 100+ dezena 10) ) ;
51 / / Envi a v a l o r de bpm pa r a o mdulo Bl ue t oot h vi a t r a n s mi s s o s e r i a l
52 / / Tr ans mi s s o s e i n c i a com c a r a c t e r de c o n t r o l e
53 p r i n t f ( " " ) ;
54 del ay_ms ( 2000) ;
55 p r i n t f ( "%u" , c e nt e na ) ;
56 del ay_ms ( 2000) ;
57 p r i n t f ( "%u" , dezena ) ;
58 del ay_ms ( 2000) ;
59 p r i n t f ( "%u" , uni dade ) ;
60 del ay_ms ( 2000) ;
61 }
62 }
133
Apndice J
Cdigo de Congurao do Mdulo
HC-05
1 # i n c l u d e <18F2550 . h>
2
3 / / Di r e t i v a s de Funci onament o do PIC
4 / / NOWDT: Watch Dog Ti mer d e s a b i l i t a d o
5 / / BROWNOUT: PIC r e i n i c i a quando oc or r e Brownout ( a l i me nt a o c a i r e pe nt i na me nt e
)
6 / / NOLVP: Sem Low Vol t age Programmi ng
7 / / INTRC: Uso de o s c i l a d o r i n t e r n o
8 # f u s e s NOWDT, BROWNOUT, NOLVP, INTRC
9 / / Es p e c i f i c a o de o s c i l a o i n t e r n a em 8 MHz
10 # us e de l a y ( i n t e r n a l =8M)
11 / / Conf i gur a o s e r i a l : Baud r a t e de 38400 , 8 b i t s e sem p a r i d a d e
12 # us e r s 232 ( baud =38400 , p a r i t y =N, xmi t =PIN_C6 , r cv=PIN_C7 , b i t s =8 , s t r ea m=PORT1)
13 # d e f i n e LED5 PIN_B5
14 # d e f i n e LED4 PIN_B4
15
16 voi d main ( )
17 {
18 / / Conf i gur a PORT_B como s a d a e c ol oc a os pi nos em n v e l bai xo
19 s e t _ t r i s _ b ( 0 x00 ) ;
20 out put _b ( 0 x00 ) ;
21 / / Cdi go pa r a c o n t r o l e de i n i c i a l i z a o do pr ogr ama
22 out put _hi gh ( LED5) ;
23 del ay_ms ( 5000) ;
24 out put _l ow ( LED5) ;
25 / / Res et do mdulo
134
26 p r i n t f ( "AT+RESET\ r \ n" ) ;
27 out put _hi gh ( LED4) ;
28 del ay_ms ( 100) ;
29 / / Conf i gur a Baud Rat e do HC05 em 9600 , sem pa r i da de , 1 s t o p b i t
30 p r i n t f ( "AT+UART=9600 , 0 , 0\ r \ n" ) ;
31 out put _l ow ( LED4) ;
32 del ay_ms ( 100) ;
33 / / Conf i gur a nome do HC05
34 p r i n t f ( "AT+NAME=Pul s e Da t a \ r \ n" ) ;
35 out put _hi gh ( LED4) ;
36 del ay_ms ( 100) ;
37 / / Conf i gur a s enha do HC05
38 p r i n t f ( "AT+PSWD=123456789\ r \ n" ) ;
39 out put _l ow ( LED4) ;
40 del ay_ms ( 100) ;
41 whi l e ( 1 )
42 {
43 del ay_ms ( 100) ;
44 }
45 }
135
Apndice K
Cdigo do Aplicativo para Android
K.1 Cdigo da Main Activity
1 package com. exampl e . p u l s e s e n s o r a p p ;
2 i mpor t j a va . u t i l . Ar r a y Li s t ;
3 i mpor t j a va . u t i l . Cal endar ;
4 i mpor t j a va . u t i l . Co l l e c t i o n ;
5 i mpor t j a va . u t i l . Dat e ;
6 i mpor t j a va . u t i l . Li s t ;
7 i mpor t j a va . u t i l . Ti mer ;
8 i mpor t j a va . u t i l . Ti mer Task ;
9 i mpor t com. pa r s e . Fi ndCa l l ba c k ;
10 i mpor t com. pa r s e . Pa r s e ;
11 i mpor t com. pa r s e . Pa r s e Exc e pt i on ;
12 i mpor t com. pa r s e . Pa r s e Obj e c t ;
13 i mpor t com. pa r s e . Par s eQuer y ;
14 i mpor t a ndr oi d . app . Ac t i v i t y ;
15 i mpor t a ndr oi d . c o n t e n t . Cont ext ;
16 i mpor t a ndr oi d . c o n t e n t . I n t e n t ;
17 i mpor t a ndr oi d . l o c a t i o n . Locat i onManager ;
18 i mpor t a ndr oi d . medi a . Medi aPl ayer ;
19 i mpor t a ndr oi d . os . Bundl e ;
20 i mpor t a ndr oi d . os . PowerManager ;
21 i mpor t a ndr oi d . u t i l . Log ;
22 i mpor t a ndr oi d . vi ew . View ;
23 i mpor t a ndr oi d . wi dget . But t on ;
24 i mpor t a ndr oi d . wi dget . Edi t Te xt ;
25 i mpor t a ndr oi d . wi dget . Toas t ;
26 i mpor t j a va . i o . I OExcept i on ;
136
27 i mpor t j a va . i o . I nput St r e a m ;
28 i mpor t j a va . l a ng . r e f l e c t . Method ;
29 i mpor t j a va . u t i l . UUID;
30 i mpor t or g . j s on . JSONArray ;
31 i mpor t a ndr oi d . b l u e t o o t h . Bl ue t oot hAda pt e r ;
32 i mpor t a ndr oi d . b l u e t o o t h . Bl ue t oot hDe vi c e ;
33 i mpor t a ndr oi d . b l u e t o o t h . Bl ue t oot hSoc ke t ;
34 i mpor t a ndr oi d . os . Bui l d ;
35 i mpor t a ndr oi d . os . Handl er ;
36 i mpor t a ndr oi d . wi dget . Text Vi ew ;
37
38 p u b l i c c l a s s Ma i nAc t i vi t y e xt e nds Ac t i v i t y {
39 / Usado pa r a i mpr i mi r os l ogs no LogCat /
40 p r i v a t e s t a t i c f i n a l St r i n g TAG = " Pul s e Sens or App" ;
41 / Medi aPl ayer us ada no c o n t r o l e do t oque do al ar me de emer gnci a /
42 Medi aPl ayer medi aPl a ye r ;
43 / Locat i onManager nos d a c e s s o aos s e r v i o s de l o c a l i z a o g e o g r f i c a do
d i s p o s i t i v o , i n c l u i n d o a t u a l i z a e s s obr e coor de na da s . /
44 Locat i onManager l oc a t i onMa na ge r ;
45 / Pa r s e Obj e c t uma r e p r e s e n t a o l o c a l de dados que podem s e r s a l v o s e
r e c upe r a dos da Pa r s e cl oud . /
46 Pa r s e Obj e c t pa r s e Us e r ;
47 / Wake l oc k um mecani smo que i n d i c a que a a p l i c a o no pode s e r d e s a t i v a d a
( t e l a f i c a a c e s a tempo t odo , por exempl o ) /
48 PowerManager . WakeLock wakeLock ;
49 / De c l a r a o de a l guns component es que compem a User I n t e r f a c e /
50 But t on l ogOf f ;
51 But t on t ur nOf f ;
52 But t on l o g i n ;
53 Edi t Te xt userCPF ;
54 Edi t Te xt passwor d ;
55 Text Vi ew t xt Ar dui no ;
56 Text Vi ew t ext Vi ewCPF ;
57 Text Vi ew t ext Vi ewSenha ;
58 Text Vi ew t e xt Vi e wBa t i me nt os Ca r di a c os ;
59 / Handl er t e pe r mi t e e n v i a r e p r o c e s s a r o b j e t o s mensagens a s s o c i a d o s com
t h r e a d s . /
60 Handl er h ;
61 / Bl ue t oot hAda pt e r uma r e p r e s e n t a o do a da pt a dor b l u e t o o t h f s i c o do
d i s p o s i t i v o /
62 p r i v a t e Bl ue t oot hAda pt e r bt Ada pt e r = n u l l ;
63 / Socket pa r a comuni cao b l u e t o o t h /
137
64 p r i v a t e Bl ue t oot hSoc ke t bt Soc ke t = n u l l ;
65 / Nes t e pr ogr ama a S t r i n g Bu i l d e r f u n c i o n a r como um b u f f e r pa r a os dados
b l u e t o o t h que e s t o chegando no d i s p o s i t i v o /
66 p r i v a t e S t r i n g Bu i l d e r sb = new S t r i n g Bu i l d e r ( ) ;
67 / Connect edThr ead f unc i ona como um c a na l de e n t r a d a pa r a e s t a b e l e c i me n t o da
comexo /
68 p r i v a t e Connect edThr ead mConnect edThr ead ;
69 / Va r i v e l u t i l i z a d a pa r a t r a t a r os dados de e n t r a d a do b l u e t o o t h /
70 St r i n g [ ] p u l s e Da t a St r i n g = new St r i n g [ 1 0 ] ;
71 / I n d i c a o t i p o de mensagem r e c e b i d a pe l a comuni cao b l u e t o o t h /
72 f i n a l i n t RECIEVE_MESSAGE = 1;
73 / SPP UUID s e r v i c e /
74 p r i v a t e s t a t i c f i n a l UUID MY_UUID = UUID. f r omSt r i ng ( "
0000110100001000800000805F9B34FB" ) ;
75 / MACa d dr e s s do mdulo b l u e t o o t h e s s e ender eo e s p e c f i c o pa r a o mdulo
que es t amos usando n e s t e t r a b a l h o /
76 p r i v a t e s t a t i c St r i n g a d dr e s s = " 2 0 : 1 3 : 0 2 : 2 2 : 0 0 : 2 2 " ;
77 / l a s t P u l s e S i g n a l mantm um r e g i s t o do l t i mo s i n a l de pul s o medi do /
78 St r i n g l a s t P u l s e S i g n a l ;
79 / Uma l i s t a / a r r a y dos mesmos dados que e s t o sendo s a l v o s nos a r r a y s do banco
de dados /
80 Co l l e c t i o n <St r i ng > GPSCol l ect i on = new Ar r a yLi s t <St r i ng >( ) ;
81 Co l l e c t i o n <Bool ean > a noma l yCol l e c t i on = new Ar r a yLi s t <Bool ean >( ) ;
82 Co l l e c t i o n <St r i ng > BPMCol l ect i on = new Ar r a yLi s t <St r i ng >( ) ;
83 Co l l e c t i o n <St r i ng > t i me Co l l e c t i o n = new Ar r a yLi s t <St r i ng >( ) ;
84 / Cont ador e u t i l i z a d o s no c l c u l o da mdi a dos 10 l t i mo s ba t i me nt os r e c e b i d o s
pa r a que uma anomal i a pos s a s e r d e t e c t a d a /
85 i n t pul s e Da t a Count e r = 0;
86 Bool ean s t r i ngCompl e t e = f a l s e ;
87 / l o g i n S t a t u s nos di z s e o u s u r i o e s t l ogado ou no /
88 Bool ean l o g i n S t a t u s = f a l s e ;
89 / anomal y nos di z s e uma anomal i a f o i d e t e c t a d a ou no /
90 Bool ean anomal y = f a l s e ;
91 / Cont ado de qua nt os em qua nt os r e g i s t r o s nas a r r a y s o banco de dados deve
s e r apagado . Ex : a cada 30 r e g i s t r o s i n s e r i d o s , apaga t udo e comea a
e s c r e v e r t udo de novo . /
92 i n t t i me r Count e r = 0;
93 / Cont r ol a o tempo que i n t e r r u p e s p e r i d i c a s s e r o ge r a da s pa r a que ha j a
e s c r i t a em banco /
94 MyTimerTask myTask = new MyTimerTask ( ) ;
95 Ti mer myTimer = new Ti mer ( ) ;
96 / Cl a s s e e s p e c i a l pa r a t r a t a me n t o dos dados de GPS /
138
97 GPSTracker gps ;
98 i n t cont ador Dados = 1;
99 i n t b a t i me n t o Fi n a l = 65;
100 i n t b a t i me n t o Pa r c i a l = 65;
101 / Hora em que a l t i ma t r a n s mi s s o f o i f e i t a /
102 Dat e l a s t Tr a ns mi s s i onTi me ;
103 / Hora em que a l t i ma e s c r i t a em banco de dados f o i f e i t a /
104 Dat e l ast DBTi me ;
105
106 @Overri de
107 p r o t e c t e d voi d onCr eat e ( Bundl e s a v e d I n s t a n c e S t a t e ) {
108 s upe r . onCr eat e ( s a v e d I n s t a n c e S t a t e ) ;
109 s et Cont ent Vi ew ( R. l a y o u t . a c t i v i t y _ ma i n ) ;
110 t ur nOf f = ( But t on ) f i ndVi ewByI d ( R. i d . t ur nOf f But t on ) ;
111 l o g i n = ( But t on ) f i ndVi ewByI d ( R. i d . l o g i n Bu t t o n ) ;
112 userCPF = ( Edi t Te xt ) f i ndVi ewByI d ( R. i d . userCPF ) ;
113 passwor d = ( Edi t Te xt ) f i ndVi ewByI d ( R. i d . us er Pas s wor d ) ;
114 t xt Ar dui no = ( Text Vi ew ) f i ndVi ewByI d ( R. i d . t e xt Ar dui no ) ;
115 t ext Vi ewCPF = ( Text Vi ew ) f i ndVi ewByI d ( R. i d . t ext Vi ew1 ) ;
116 t ext Vi ewSenha = ( Text Vi ew ) f i ndVi ewByI d ( R. i d . t ext Vi ew2 ) ;
117 t e xt Vi e wBa t i me nt os Ca r di a c os = ( Text Vi ew ) f i ndVi ewByI d ( R. i d . t ext Vi ew3 ) ;
118
119 me di aPl ayer = Medi aPl ayer . c r e a t e ( Ma i nAc t i vi t y . t h i s , R. raw . al ar m ) ;
120 / Faz com que o al ar me t oque apenas uma vez /
121 me di aPl ayer . s e t Loopi ng ( f a l s e ) ;
122 / Conf i gur a a t e l a i n i c i a l que a pa r e c e aps o u s u r i o a b r i r a app /
123 t xt Ar dui no . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
124 t e xt Vi e wBa t i me nt os Ca r di a c os . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
125 / Conf i gur a o c o n t r o l e da t e l a pa r a f i c a r a t i v o o tempo t odo , podendo porm
d i mi n ui r o b r i l h o em t empos de i n a t i v i d a d e /
126 PowerManager pm = ( PowerManager ) ge t Sys t e mSe r vi c e ( Cont ext . POWER_SERVICE) ;
127 wakeLock = pm. newWakeLock ( PowerManager . SCREEN_DIM_WAKE_LOCK, "My wakel ook
" ) ;
128 wakeLock . a c q u i r e ( ) ;
129 gps = new GPSTracker ( Ma i nAc t i vi t y . t h i s ) ;
130 / Cr i a o de uma nova c l a s s e e / ou um novo o b j e t o no banco de dados /
131 Pa r s e . i n i t i a l i z e ( t h i s , "KW7yP7phAKov8cUVhoFuPQRE8JYy63uWEKInSTqu" , "
cIFY6FX2SA0YrQbrWxGvXYmz8PSWygNYCcQfJXuF" ) ;
132 /
133 Pa r s e Obj e c t pa r s e Us e r = new Pa r s e Obj e c t ( " Pu l s e Se ns o r Cl a s s " ) ;
134 pa r s e Us e r . put ( " CPF" , " 123" ) ;
135 pa r s e Us e r . put ( " passwor d " , " 123" ) ;
139
136 pa r s e Us e r . put ( " name " , " Lar a Be r t i n i Vi e i r a " ) ;
137 pa r s e Us e r . put ( " userName " , " Lar a Be r t i n i " ) ;
138 pa r s e Us e r . put ( " bl oodType " , "O") ;
139 pa r s e Us e r . put ( " obs " , " Nada de mai s . Sou s a ud ve l mesmo . " ) ;
140 pa r s e Us e r . put ( " s t a t u s " , f a l s e ) ;
141 JSONArray BPMArray = new JSONArray ( ) ;
142 JSONArray GPSArray = new JSONArray ( ) ;
143 JSONArray anomal yAr r ay = new JSONArray ( ) ;
144 JSONArray t i meAr r ay = new JSONArray ( ) ;
145 pa r s e Us e r . put ( "BPM" , BPMArray ) ;
146 pa r s e Us e r . put ( " GPS" , GPSArray ) ;
147 pa r s e Us e r . put ( " anomal y " , anomal yAr r ay ) ;
148 pa r s e Us e r . put ( " t i me " , t i meAr r ay ) ;
149 pa r s e Us e r . s aveI nBackgr ound ( ) ;
150 /
151 / Uma manei r a de s e comuni car em a ndr oi d a t r a v s de " Messages " e "
Handl er s " .
152 O " Handl er " r e c e be a mensagem e l i d a com e l a . A mensagem o cont edo
envi ado .
153 /
154 h = new Handl er ( ) {
155 p u b l i c voi d handl eMes s age ( a ndr oi d . os . Message msg ) {
156 / what : um cdi go d e f i n i d o pe l o p r p r i o u s u r i o pa r a que o
d e s t i n a t r i o pos s a i d e n t i f i c a r o cont edo da mensagem .
157 Re f e r e n c i a : h t t p : / / s t a c k o v e r f l o w . com/ q u e s t i o n s / 17642578/
obt ai nmes s age ar gument s meani ng
158 /
159 s wi t c h ( msg . what ) {
160 c a s e RECIEVE_MESSAGE:
161 byt e [ ] r eadBuf = ( byt e [ ] ) msg . obj ;
162 St r i n g s t r I nc om = new St r i n g ( r eadBuf , 0 , msg . ar g1 ) ;
163 sb . append ( s t r I nc om ) ;
164 St r i n g s t r i n g Bu f f e r = sb . s u b s t r i n g ( 0 , sb . l e n g t h ( ) ) ;
165 St r i n g r e c e i v e d S t r i n g = s t r i n g Bu f f e r . s u b s t r i n g ( s t r i n g Bu f f e r .
l e n g t h ( ) 1, s t r i n g Bu f f e r . l e n g t h ( ) ) ;
166 Cal endar c a l e n d a r = Cal endar . g e t I n s t a n c e ( ) ;
167 l a s t Tr a ns mi s s i onTi me = c a l e n d a r . get Ti me ( ) ;
168 / Di mi nue o t amanho do buf f e r , pa r a que o mesmo no c r e s a
i n f i n i t a me n t e /
169 i f ( sb . l e n g t h ( ) > 0) {
170 sb . s e t Le ngt h ( sb . l e n g t h ( ) 1) ;
171 }
140
172 i f ( r e c e i v e d S t r i n g . e q ua l s ( " " ) ) {
173 cont ador Dados = 0;
174 }
175 i f ( cont ador Dados ==0 && ! r e c e i v e d S t r i n g . e qua l s ( " " ) ) {
176 b a t i me n t o Pa r c i a l = I n t e g e r . val ueOf ( r e c e i v e d S t r i n g ) 100;
177 cont ador Dados ++;
178 }
179 e l s e i f ( cont ador Dados ==1) {
180 b a t i me n t o Pa r c i a l = b a t i me n t o Pa r c i a l + I n t e g e r . val ueOf (
r e c e i v e d S t r i n g ) 10;
181 cont ador Dados ++;
182 }
183 e l s e i f ( cont ador Dados ==2) {
184 b a t i me n t o Pa r c i a l = b a t i me n t o Pa r c i a l + I n t e g e r . val ueOf (
r e c e i v e d S t r i n g ) ;
185 b a t i me n t o Fi n a l = b a t i me n t o P a r c i a l ;
186 cont ador Dados = 0;
187 Log . d ( " Bat i ment o Car di aco " , " Ul t i ma Le i t u r a : " +
b a t i me n t o Fi n a l + " " ) ;
188 / A cada 10 pul s os r e c e bi dos , a mdi a de ba t i me nt os
c a r d a c o s c a l c u l a d a /
189 i f ( pul s e Da t a Count e r ==10) {
190 pul s e Da t a Count e r = 0;
191 s t r i ngCompl e t e = t r u e ;
192 }
193 I n t e g e r i n t e g e r Ba t i me n t o Fi n a l = new I n t e g e r ( b a t i me n t o Fi n a l
) ;
194 p u l s e Da t a St r i n g [ pul s e Da t a Count e r ] = i n t e g e r Ba t i me n t o Fi n a l .
t o S t r i n g ( ) ;
195 l a s t P u l s e S i g n a l = p u l s e Da t a St r i n g [ pul s e Da t a Count e r ] ;
196 t xt Ar dui no . s e t Te x t ( l a s t P u l s e S i g n a l ) ;
197 pul s e Da t a Count e r ++;
198 / Se j t emos pe l o menos 10 a mos t r a s de pul s o , podemos
comear a a n a l i s a r os dados . O al ar me s e r t oca do e a
v a r i v e l anomal i a s e r v e r d a d e i r a s e al guma anomal i a
f o r d e t e c t a d a . /
199 i f ( s t r i ngCompl e t e ) {
200 i n t sum = 0;
201 f o r ( i n t i =0; i <10; i ++) {
202 sum = sum + I n t e g e r . val ueOf ( p u l s e Da t a St r i n g [ i ] ) ;
203 }
204 i n t a ve r a ge = sum / 1 0 ;
141
205 doubl e r e s u l t a d o = 0. 00384 a ve r a ge a ve r a ge 0. 357 a ve r a ge +
128;
206 i n t r e s u l t a d o 2 = ( i n t ) r e s u l t a d o ;
207 i f ( ( b a t i me n t o Fi n a l > r e s u l t a d o 2 ) && ( l o g i n S t a t u s == t r u e ) ) {
208 / / Di s pa r a al ar me
209 me di aPl ayer . s t a r t ( ) ;
210 anomal y = t r u e ;
211 }
212 e l s e i f ( ( b a t i me n t o Fi n a l < 50) && ( l o g i n S t a t u s == t r u e ) ) {
213 / / Di s pa r a al ar me
214 me di aPl ayer . s t a r t ( ) ;
215 anomal y = t r u e ;
216 }
217 }
218 }
219 br eak ;
220 }
221 } ;
222 } ;
223 bt Ada pt e r = Bl ue t oot hAda pt e r . g e t De f a u l t Ad a p t e r ( ) ;
224 checkBTSt at e ( ) ;
225 }
226
227 /
228 Ao c r i a r uma a t i v i d a d e , o mt odo onResume a ut oma t i c a me nt e e xe c ut a do .
229 Nes t e mt odo oc or r e a c r i a o da t h r e a d que s e r r e s p o n s v e l pe l a conexo
com o mdulo b l u e t o o t h
230 /
231 @Overri de
232 p u b l i c voi d onResume ( ) {
233 s upe r . onResume ( ) ;
234 / Conf i gur a um p o n t e i r o pa r a o d i s p o s i t i v o r emot o usando o ender eo do
mesmo /
235 Bl ue t oot hDe vi c e de vi c e = bt Ada pt e r . get Remot eDevi ce ( a d dr e s s ) ;
236 / Duas c o i s a s s o n e c e s s r i a s pa r a e s t a b e l e c e r uma conexo :
237 Um MAC a dd r e s s
238 O s e r v i o ID ou UUID. Nes t e cas o es t amos usando UUID pa r a SPP /
239 t r y {
240 bt Soc ke t = c r e a t e Bl u e t o o t h So c k e t ( de vi c e ) ;
241 } c a t c h ( I OExcept i on e ) {
242 e r r o r Ex i t ( " Fa t a l Er r or " , " I n onResume ( ) and s oc k e t c r e a t e f a i l e d : " + e .
get Mes sage ( ) + " . " ) ;
142
243 }
244 / A d e s c o b e r t a de novos d i s p o s i t i v o s um r e c u r s o de i n t e n s i v o pr oces s ament o .
245 Temos que t e r c e r t e z a que a d e s c o b e r t a no e s t a r a t i v a enquant o t ent amos
c o n e c t a r e p a s s a r al guma mensagem /
246 bt Ada pt e r . c a nc e l Di s c ove r y ( ) ;
247 / Es t a be l e c i me nt o da conexo . Vai bl oque a r o comput ador a t que a conexo
s e j a r e a l me nt e r e a l i z a d a /
248 Log . d (TAG, " . . . Connect i ng . . . " ) ;
249 t r y {
250 bt Soc ke t . c onne c t ( ) ;
251 } c a t c h ( I OExcept i on e ) {
252 t r y {
253 bt Soc ke t . c l o s e ( ) ;
254 } c a t c h ( I OExcept i on e2 ) {
255 e r r o r Ex i t ( " Fa t a l Er r or " , " I n onResume ( ) and unabl e t o c l o s e s oc ke t
dur i ng c onne c t i on f a i l u r e " + e2 . get Message ( ) + " . " ) ;
256 }
257 }
258 / Cr i a um novo s t r e am de dados pa r a que possamos c o n v e r s a r com o s e r v i d o r
/
259 Log . d (TAG, " . . . Cr e a t e Socket . . . " ) ;
260 mConnect edThr ead = new Connect edThr ead ( bt Soc ke t ) ;
261 mConnect edThr ead . s t a r t ( ) ;
262 }
263
264 @Overri de
265 p u b l i c voi d onPause ( ) {
266 s upe r . onPause ( ) ;
267 Log . d (TAG, " . . . I n onPause ( ) . . . " ) ;
268 t r y {
269 bt Soc ke t . c l o s e ( ) ;
270 } c a t c h ( I OExcept i on e2 ) {
271 e r r o r Ex i t ( " Fa t a l Er r or " , " I n onPause ( ) and f a i l e d t o c l o s e s oc ke t . " + e2 .
get Mes sage ( ) + " . " ) ;
272 }
273 }
274
275 / Checa s e tem s u p o r t e pa r a b l u e t o o t h e s e o mesmo e s t l i g a d o /
276 p r i v a t e voi d checkBTSt at e ( ) {
277 / Ve r i f i c a s e o d i s p o s i t i v o tem s u p o r t e pa r a b l u e t o o t h . /
278 i f ( bt Ada pt e r == n u l l ) {
279 e r r o r Ex i t ( " Fa t a l Er r or " , " Bl ue t oot h not s u p po r t " ) ;
143
280 } e l s e {
281 / Ve r i f i c a s e o b l u e t o o t h e s t l i g a d o /
282 i f ( bt Ada pt e r . i s Ena bl e d ( ) ) {
283 Log . d (TAG, " . . . Bl ue t oot h ON. . . " ) ;
284 } e l s e {
285 / Most r a uma t e l a ao u s u r i o pa r a que e l e pos s a l i g a r o b l u e t o o t h /
286 I n t e n t e n a b l e Bt I n t e n t = new I n t e n t ( Bl ue t oot hAda pt e r . ACTION_REQUEST_ENABLE)
;
287 s t a r t Ac t i v i t y F o r Re s u l t ( e n a b l e Bt I n t e n t , 1) ;
288 }
289 }
290 }
291
292 p r i v a t e voi d e r r o r Ex i t ( St r i n g t i t l e , St r i n g message ) {
293 Toas t . makeText ( ge t Ba s e Cont e xt ( ) , t i t l e + " " + message , Toas t . LENGTH_LONG)
. show ( ) ;
294 f i n i s h ( ) ;
295 }
296
297 p u b l i c voi d s t a r t Me t hod ( View v ) {
298 / Encont r a no bd o u s u r i o com CPF e s enha i n d i c a d o s /
299 Par seQuer y <Pa r s e Obj e c t > quer y = Par s eQuer y . get Quer y ( " Pu l s e Se ns or Cl a s s " ) ;
300 quer y . wher eEqual To ( "CPF" , userCPF . ge t Te xt ( ) . t o S t r i n g ( ) ) ;
301 quer y . wher eEqual To ( " passwor d " , passwor d . ge t Te xt ( ) . t o S t r i n g ( ) ) ;
302 quer y . f i ndI nBac kgr ound ( new Fi ndCal l back <Pa r s e Obj e c t >( ) {
303 @Overri de
304 p u b l i c voi d done ( Li s t <Pa r s e Obj e c t > u s e r Li s t , Pa r s e Exc e pt i on e ) {
305 i f ( e == n u l l ) {
306 / Se e x i s t e apenas 1 u s u r i o com o CPF e s enha i nf or mados o l o g i n
f o i bem s uc e di do /
307 i f ( u s e r Li s t . s i z e ( ) ==1) {
308 pa r s e Us e r = ( Pa r s e Obj e c t ) u s e r Li s t . ge t ( 0 ) ;
309 Toas t . makeText ( Ma i nAc t i vi t y . t h i s , " Logi n Su c c e s s f u l ! " , Toas t .
LENGTH_LONG) . show ( ) ;
310 l o g i n S t a t u s = t r u e ;
311 / Di s pa r a o t i me r pa r a g e r a r i n t e r r u p o de 1 em 1 mi nut o
pa r a e s c r e v e r no banco de dados /
312 myTimer . s c he dul e ( myTask , 60000 , 60000) ;
313 / Muda s t a t u s do u s u r i o pa r a a t i v o /
314 pa r s e Us e r . put ( " s t a t u s " , t r u e ) ;
315 / Sal va os dados no banco /
316 pa r s e Us e r . s aveI nBackgr ound ( ) ;
144
317 Log . d ( " s t a t u s de poi s do l o g i n " , Bool ean . t o S t r i n g ( pa r s e Us e r .
get Bool ean ( " s t a t u s " ) ) ) ;
318 / Conf i gur a a t e l a p r i n c i p a l da a pl i c a o , onde a pa r e c e os
ba t i me nt os c a r d a c o s /
319 s et Mai nScr een ( ) ;
320 }
321 e l s e i f ( u s e r Li s t . s i z e ( ) ==0) {
322 Toas t . makeText ( Ma i nAc t i vi t y . t h i s , " Try Agai n ! " , Toas t .
LENGTH_LONG) . show ( ) ;
323 }
324 } e l s e {
325 Log . d ( " s c or e " , " Er r or : " + e . get Message ( ) ) ;
326 }
327 }
328 }) ;
329 }
330
331 p u b l i c voi d t ur nOf f Met hod ( View v ) {
332 / Muda s t a t u s do u s u r i o pa r a i n a t i v o , e s a l v a no banco de dados /
333 pa r s e Us e r . put ( " s t a t u s " , f a l s e ) ;
334 pa r s e Us e r . s aveI nBackgr ound ( ) ;
335 / Muda o s t a t u s de l ogado do u s u r i o /
336 l o g i n S t a t u s = f a l s e ;
337 / Li be r a o wakel ock agor a a app j pode f i c a r i n a t i v a /
338 wakeLock . r e l e a s e ( ) ;
339 / Li be r a os r e c u r s o s n e c e s s r i o s pa r a t o c a r a msi ca /
340 me di aPl ayer . r e l e a s e ( ) ;
341 / Fecha a a p l i c a o /
342 onPause ( ) ;
343 f i n i s h ( ) ;
344 }
345
346 / Conf i gur a os e l e me nt os g r f i c o s da t e l a p r i n c i p a l /
347 p u b l i c voi d s et Mai nScr een ( ) {
348 userCPF . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
349 passwor d . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
350 l o g i n . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
351 t xt Ar dui no . s e t V i s i b i l i t y ( View . VISIBLE) ;
352 t ext Vi ewCPF . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
353 t ext Vi ewSenha . s e t V i s i b i l i t y ( View . INVISIBLE ) ;
354 t e xt Vi e wBa t i me nt os Ca r di a c os . s e t V i s i b i l i t y ( View . VISIBLE) ;
355 }
145
356
357 / Cr i a o s oc ke t r e s p o n s v e l pe l a comuni cao b l u e t o o t h /
358 p r i v a t e Bl ue t oot hSoc ke t c r e a t e Bl u e t o o t h So c k e t ( Bl ue t oot hDe vi c e de vi c e ) t hr ows
I OExcept i on {
359 i f ( Bui l d . VERSION. SDK_INT >= 10) {
360 t r y {
361 f i n a l Method m = de vi c e . g e t Cl a s s ( ) . get Met hod ( "
cr ea t e I ns e cur e Rf commSocket ToSer vi ce Re cor d " , new Cl a s s [ ] { UUID
. c l a s s }) ;
362 r e t u r n ( Bl ue t oot hSoc ke t ) m. i nvoke ( devi ce , MY_UUID) ;
363 } c a t c h ( Exc e pt i on e ) {
364 Log . e (TAG, " Coul d not c r e a t e I n s e c u r e RFComm Connect i on " , e ) ;
365 }
366 }
367 r e t u r n de vi c e . cr eat eRf commSocket ToSer vi ceRecor d (MY_UUID) ;
368 }
369 }
K.2 Cdigo da Classe ConnectedThread
1 / Gera t h r e a d pa r a r oda r em p a r a r e l o com a UI t h r e a d a f i m de t r a t a r a e n t r a d a de
dados por b l u e t o o t h .
2 Essa t h r e a d f i c a r num l oop i n f i n i t o ouvi ndo o c a na l de e n t r a d a de dados . /
3 p r i v a t e c l a s s Connect edThr ead e xt e nds Thr ead {
4 / The goa l of I nput St r e a m and Out put St r eam i s t o a b s t r a c t d i f f e r e n t ways t o
i n p u t and out pu t :
5 whet her t he s t r e am i s a f i l e , a web page , or t he s c r e e n s houl dn t ma t t e r .
6 Al l t h a t ma t t e r s i s t h a t you r e c e i v e i n f o r ma t i o n from t he s t r eam ( or send
i n f o r ma t i o n i n t o t h a t s t r e am . )
7 Re f e r n c i a : h t t p : / / s t a c k o v e r f l o w . com/ q u e s t i o n s / 1830698/ whati s i nput s t r e a m
out put s t r eamwhydoweusethemandwhendoweuseeach
8 /
9 / Cr i a c a na l de comuni cao pa r a chegada de dados /
10 p r i v a t e f i n a l I nput St r e a m mmInStream ;
11 p u b l i c Connect edThr ead ( Bl ue t oot hSoc ke t s oc k e t ) {
12 I nput St r e a m t mpI n = n u l l ;
13 t r y {
14 t mpI n = s oc k e t . ge t I nput St r e a m ( ) ;
15 } c a t c h ( I OExcept i on e ) { }
16 mmInStream = t mpI n ;
17 }
18 / Assim que a t h r e a d f o i c r i a da , o mt odo r un e xe c ut a do /
146
19 p u b l i c voi d r un ( ) {
20 / Cr i a um b u f f e r pa r a ar mazenar os dados que chegam /
21 / / byt e [ ] b u f f e r = new byt e [ 41024] ;
22 byt e [ ] b u f f e r = new byt e [ 101024] ;
23 i n t byt e s ;
24 / Comea e per manece num l oop i n f i n i t o ouvi ndo o c a na l de e n t r a d a . /
25 Log . d (TAG, " . . . Comeca a ouvi r I nSt r eam . . . " ) ;
26 whi l e ( t r u e ) {
27 t r y {
28 / Faz a l e i t u r a do c a na l de e n t r a d a e ar mazena os dados l i d o s no
b u f f e r /
29 byt e s = mmInStream . r e a d ( b u f f e r ) ;
30 / Envi a a mensagem pa r a que o ha n d l e r a pos s a t r a t a r /
31 h . obt ai nMes s age ( RECIEVE_MESSAGE, byt es , 1, b u f f e r ) . s endToTar get ( ) ;
/ / Send t o message queue Handl er
32 } c a t c h ( I OExcept i on e ) {
33 Log . d (TAG, " . . . Nao deu c e r t o . . . " ) ;
34 br eak ;
35 }
36 }
37 }
38 }
K.3 Cdigo da Classe MyTimerTask
1 / Essa c l a s s e f o i ger a da pa r a que i n t e r r u p e s p e r i d i c a s ocor r am pa r a que dados
sej am ar mazenados no bd Pa r s e . /
2 c l a s s MyTimerTask e xt e nds Ti mer Task {
3 p u b l i c voi d r un ( ) {
4 / Caso j houver o nmero l i mi t e de r e g i s t r o s nas a r r a y s ar mazenadas no
banco de dados , t odos os dados s e r o r emovi dos e a i n s e r o de novos
dados a c o n t e c e r pe r i odi c a me nt e . /
5 i f ( t i me r Count e r ==3) {
6 / De l e t a dados das a r r a y s ar mazenadas no banco de dados /
7 pa r s e Us e r . r emoveAl l ( "GPS" , GPSCol l ect i on ) ;
8 GPSCol l ect i on . c l e a r ( ) ;
9 pa r s e Us e r . r emoveAl l ( " anomal y " , a noma l yCol l e c t i on ) ;
10 a noma l yCol l e c t i on . c l e a r ( ) ;
11 pa r s e Us e r . r emoveAl l ( "BPM" , BPMCol l ect i on ) ;
12 BPMCol l ect i on . c l e a r ( ) ;
13 pa r s e Us e r . r emoveAl l ( " t i me " , t i me Co l l e c t i o n ) ;
14 t i me Co l l e c t i o n . c l e a r ( ) ;
147
15 / Sal va as a l t e r a e s e f e t u a d a s . /
16 pa r s e Us e r . s aveI nBackgr ound ( ) ;
17 }
18
19 / I n c i a s e a a di o de dados no bd /
20 / Dados GPS /
21 / Checa s e o d i s p o s i t i v o tem c o mp a t i b i l i d a d e com b l u e t o o t h /
22 i f ( gps . c a nGe t Loc a t i on ( ) ) {
23 doubl e l a t i t u d e = gps . g e t La t i t u d e ( ) ;
24 doubl e l o n g i t u d e = gps . ge t Longi t ude ( ) ;
25 pa r s e Us e r . add ( "GPS" , " l a t : " + l a t i t u d e + " x" + " l ong : " + l o n g i t u d e ) ;
26 GPSCol l ect i on . add ( " l a t : " + l a t i t u d e + " x" + " l ong : " + l o n g i t u d e ) ;
27 Log . d ( "LOCALIZACAO GPS" , " Your Loc a t i on i s \ nLat : " + l a t i t u d e + " \
nLong : " + l o n g i t u d e ) ;
28 } e l s e {
29 / Caso ha j a pr obl emas na r e c e p o dos dados GPS, p e d i r pa r a u s u r i o
a t i v a GPS ou i n t e r n e t /
30 gps . s h o wSe t t i n g s Al e r t ( ) ;
31 }
32 / Dados s obr e a o c o r r n c i a de anomal i a /
33 pa r s e Us e r . add ( " anomal y " , anomal y ) ;
34 a noma l yCol l e c t i on . add ( anomal y ) ;
35 / Par a que uma nova anomal i a pos s a s e r d e t e c t a d a o v a l o r de anomal i a
c onf i gur a do pa r a f a l s o novament e /
36 anomal y = f a l s e ;
37 / Dados BPM /
38 / At u a l i z a dados do l t i mo ba t i me nt o c a d a c o r e g i s t r a d o /
39 pa r s e Us e r . add ( "BPM" , l a s t P u l s e S i g n a l ) ;
40 BPMCol l ect i on . add ( l a s t P u l s e S i g n a l ) ;
41 / Dados de c a l e n d r i o /
42 Cal endar c a l e n d a r = Cal endar . g e t I n s t a n c e ( ) ;
43 pa r s e Us e r . add ( " t i me " , I n t e g e r . t o S t r i n g ( c a l e n d a r . ge t ( Cal endar . HOUR_OF_DAY) )
+ " h" + I n t e g e r . t o S t r i n g ( c a l e n d a r . ge t ( Cal endar . MINUTE) ) + " min " ) ;
44 t i me Co l l e c t i o n . add ( I n t e g e r . t o S t r i n g ( c a l e n d a r . ge t ( Cal endar . HOUR_OF_DAY) ) + "
h" + I n t e g e r . t o S t r i n g ( c a l e n d a r . ge t ( Cal endar . MINUTE) ) + " min " ) ;
45 Log . d ( "HORAS" , I n t e g e r . t o S t r i n g ( c a l e n d a r . ge t ( Cal endar . HOUR_OF_DAY) ) + " h" +
I n t e g e r . t o S t r i n g ( c a l e n d a r . ge t ( Cal endar . MINUTE) ) + " min " ) ;
46 / Ve r i f i c a s e o l t i mo dado r e c e b i d o f o i a menos de 1 min . Se no t i v e r
s i do acus a que o d i s p o s i t i v o f o i d a n i f i c a d o e d i s p a r a o al ar me /
47 l ast DBTi me = c a l e n d a r . get Ti me ( ) ;
48 l ong d i f f Mi n u t e s = ( l ast DBTi me . get Ti me ( ) l a s t Tr a ns mi s s i onTi me . get Ti me ( ) )
/ ( 60 1000) ;
148
49 i f ( d i f f Mi n u t e s > 1) {
50 me di aPl ayer . s t a r t ( ) ;
51 anomal y = t r u e ;
52 }
53 / Sal va as t i mas modi f i c a e s no bd /
54 pa r s e Us e r . s aveI nBackgr ound ( ) ;
55 t i me r Count e r ++;
56 }
57 }
K.4 Cdigo da Classe GPSTracker
1 package com. exampl e . p u l s e s e n s o r a p p ;
2 i mpor t a ndr oi d . app . Al e r t Di a l o g ;
3 i mpor t a ndr oi d . app . Se r vi c e ;
4 i mpor t a ndr oi d . c o n t e n t . Cont ext ;
5 i mpor t a ndr oi d . c o n t e n t . Di a l o g I n t e r f a c e ;
6 i mpor t a ndr oi d . c o n t e n t . I n t e n t ;
7 i mpor t a ndr oi d . l o c a t i o n . Loc a t i on ;
8 i mpor t a ndr oi d . l o c a t i o n . Lo c a t i o n Li s t e n e r ;
9 i mpor t a ndr oi d . l o c a t i o n . Locat i onManager ;
10 i mpor t a ndr oi d . os . Bundl e ;
11 i mpor t a ndr oi d . os . I Bi nde r ;
12 i mpor t a ndr oi d . p r o v i d e r . S e t t i n g s ;
13 i mpor t a ndr oi d . u t i l . Log ;
14
15 p u b l i c c l a s s GPSTracker e xt e nds Se r v i c e i mpl ement s Lo c a t i o n Li s t e n e r {
16 p r i v a t e f i n a l Cont ext mCont ext ;
17 / Fl ag de s t a t u s do GPS /
18 bool ean i sGPSEnabl ed = f a l s e ;
19 / Fl ag de s t a t u s da r e de /
20 bool ean i s Net wor kEnabl ed = f a l s e ;
21 / Fl ag de s t a t u s de comuni cao com o GPS /
22 bool ean c a nGe t Loc a t i on = f a l s e ;
23 / Loc a l i z a a o /
24 Loc a t i on l o c a t i o n ;
25 / La t i t u d e /
26 doubl e l a t i t u d e ;
27 / Longi t ude /
28 doubl e l o n g i t u d e ;
29 / Di s t n c i a mnima em met r os n e c e s s r i a pa r a a t u a l i z a r a l o c a l i z a o GPS.
Nes t e cas o es t amos c ons i de r a ndo 10 met r os . /
149
30 p r i v a t e s t a t i c f i n a l l ong MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;
31 / Tempo mnimo e n t r e a t u a l i z a e s de dados GPS. Nes t e cas o usar emos 1 mi nut o .
/
32 p r i v a t e s t a t i c f i n a l l ong MIN_TIME_BW_UPDATES = 1000 60 1;
33 / Locat i onManager f a z com que possamos t e r a c e s s o aos s e r v i o s de l o c a l i z a o
do d i s p o s i t i v o . /
34 p r o t e c t e d Locat i onManager l oc a t i onMa na ge r ;
35 p u b l i c GPSTracker ( Cont ext c o n t e x t ) {
36 t h i s . mCont ext = c o n t e x t ;
37 g e t Lo c a t i o n ( ) ;
38 }
39 p u b l i c Loc a t i on g e t Lo c a t i o n ( ) {
40 t r y {
41 l oc a t i onMa na ge r = ( Locat i onManager ) mCont ext . ge t Sys t e mSe r vi c e (
LOCATION_SERVICE) ;
42 / Ve r i f i c a o s t a t u s do GPS /
43 i sGPSEnabl ed = l oc a t i onMa na ge r . i s Pr o v i d e r En a b l e d ( Locat i onManager .
GPS_PROVIDER) ;
44 / Ve r i f i c a o s t a t u s da r e de /
45 i s Net wor kEnabl ed = l oc a t i onMa na ge r . i s Pr o v i d e r En a b l e d ( Locat i onManager .
NETWORK_PROVIDER) ;
46 / Nenhum pr ovedor pa r a l o c a l i z a o e s t a t i v a d o /
47 i f ( ! i sGPSEnabl ed && ! i s Net wor kEnabl ed ) {
48 s h o wSe t t i n g s Al e r t ( ) ;
49 } e l s e {
50 t h i s . c a nGe t Loc a t i on = t r u e ;
51 / Se a r e de e s t i v e r d i s p o n v e l /
52 i f ( i s Net wor kEnabl ed ) {
53 / At u a l i z a os dados s obr e l o c a l i z a o /
54 l oc a t i onMa na ge r . r e q u e s t Lo c a t i o n Up d a t e s ( Locat i onManager .
NETWORK_PROVIDER, MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, t h i s ) ;
55 Log . d ( " Net work " , " Net work " ) ;
56 i f ( l oc a t i onMa na ge r ! = n u l l ) {
57 l o c a t i o n = l oc a t i onMa na ge r . get Las t KnownLocat i on (
Locat i onManager . NETWORK_PROVIDER) ;
58 i f ( l o c a t i o n ! = n u l l ) {
59 l a t i t u d e = l o c a t i o n . g e t La t i t u d e ( ) ;
60 l o n g i t u d e = l o c a t i o n . ge t Longi t ude ( ) ;
61 }
62 }
63 }
150
64 / Se o GPS e s t i v e r a t i vo , pegar os dados s obr e l a t i t u d e e
l o n g i t u d e usando os s e r v i o s de GPS /
65 i f ( i sGPSEnabl ed ) {
66 i f ( l o c a t i o n == n u l l ) {
67 l oc a t i onMa na ge r . r e q u e s t Lo c a t i o n Up d a t e s ( Locat i onManager .
GPS_PROVIDER, MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, t h i s ) ;
68 Log . d ( "GPS Enabl ed " , "GPS Enabl ed " ) ;
69 i f ( l oc a t i onMa na ge r ! = n u l l ) {
70 l o c a t i o n = l oc a t i onMa na ge r . get Las t KnownLocat i on (
Locat i onManager . GPS_PROVIDER) ;
71 i f ( l o c a t i o n ! = n u l l ) {
72 l a t i t u d e = l o c a t i o n . g e t La t i t u d e ( ) ;
73 l o n g i t u d e = l o c a t i o n . ge t Longi t ude ( ) ;
74 }
75 }
76 }
77 }
78 }
79 } c a t c h ( Exc e pt i on e ) {
80 e . p r i n t St a c k Tr a c e ( ) ;
81 }
82 r e t u r n l o c a t i o n ;
83 }
84 / Pr a de us a r os s e r v i o s de GPS na a p l i c a o /
85 p u b l i c voi d st opUsi ngGPS ( ) {
86 i f ( l oc a t i onMa na ge r ! = n u l l ) {
87 l oc a t i onMa na ge r . r emoveUpdat es ( GPSTracker . t h i s ) ;
88 }
89 }
90 / Funo r e t o r n a a l a t i t u d e do d i s p o s i t i v o /
91 p u b l i c doubl e g e t La t i t u d e ( ) {
92 i f ( l o c a t i o n ! = n u l l ) {
93 l a t i t u d e = l o c a t i o n . g e t La t i t u d e ( ) ;
94 }
95 r e t u r n l a t i t u d e ;
96 }
97 / Funo r e t o r n a a l o n g i t u d e do d i s p o s i t i v o /
98 p u b l i c doubl e ge t Longi t ude ( ) {
99 i f ( l o c a t i o n ! = n u l l ) {
100 l o n g i t u d e = l o c a t i o n . ge t Longi t ude ( ) ;
101 }
151
102 r e t u r n l o n g i t u d e ;
103 }
104 / Checa s e o GPS ou wi f i e s t o a t i v o s /
105 p u b l i c bool ean c a nGe t Loc a t i on ( ) {
106 r e t u r n t h i s . c a nGe t Loc a t i on ;
107 }
108 / Ve r i f i c a s e o GPS e s t d i s p o n v e l pa r a uso /
109 p u b l i c bool ean i sGPSEnabl ed ( ) {
110 r e t u r n t h i s . i sGPSEnabl ed ;
111 }
112 / Ve r i f i c a s e a r e de e s t d i s p o n v e l pa r a uso /
113 p u b l i c bool ean i s Net wor kEnabl ed ( ) {
114 r e t u r n t h i s . i s Net wor kEnabl ed ;
115 }
116 / Caso o GPS ou r e de no e s t e j a m a t i v o s , mos t r a a o menu S e t t i n g s Opt i ons
pa r a que o u s u r i o pos s a a t i v l o s /
117 p u b l i c voi d s h o wSe t t i n g s Al e r t ( ) {
118 Al e r t Di a l o g . Bu i l de r a l e r t Di a l o g = new Al e r t Di a l o g . Bu i l d e r ( mCont ext ) ;
119 / Conf i gur a o t t u l o da c a i xa de di l o go que a p a r e c e r /
120 a l e r t Di a l o g . s e t T i t l e ( "GPS i n s e t t i n g s " ) ;
121 / Conf i gur a a mensagem que a p a r e c e r na c a i xa de di l o go /
122 a l e r t Di a l o g . s et Mes s age ( "GPS i s not e na bl e d . Do you want t o go t o s e t t i n g s
menu? " ) ;
123 / Ao ao p r e s s i o n a r o bot o s e t t i n g s /
124 a l e r t Di a l o g . s e t P o s i t i v e Bu t t o n ( " S e t t i n g s " , new Di a l o g I n t e r f a c e .
OnCl i c kLi s t e ne r ( ) {
125 p u b l i c voi d onCl i ck ( Di a l o g I n t e r f a c e di a l og , i n t whi ch ) {
126 I n t e n t i n t e n t = new I n t e n t ( S e t t i n g s .
ACTION_LOCATION_SOURCE_SETTINGS) ;
127 mCont ext . s t a r t Ac t i v i t y ( i n t e n t ) ;
128 }
129 }) ;
130 / Ao p r e s s i o n a r o bot o c a n c e l a r /
131 a l e r t Di a l o g . s e t Ne g a t i v e Bu t t o n ( " Cancel " , new Di a l o g I n t e r f a c e .
OnCl i c kLi s t e ne r ( ) {
132 p u b l i c voi d onCl i ck ( Di a l o g I n t e r f a c e di a l og , i n t whi ch ) {
133 d i a l o g . c a nc e l ( ) ;
134 }
135 }) ;
136 / Most r a o d i l ogo de a l e r t a /
137 a l e r t Di a l o g . show ( ) ;
138 }
152
139 @Overri de
140 p u b l i c voi d onLocat i onChanged ( Loc a t i on l o c a t i o n ) {}
141 @Overri de
142 p u b l i c voi d onPr ovi de r Di s a bl e d ( St r i n g p r o v i d e r ) {}
143 @Overri de
144 p u b l i c voi d onPr ovi de r Ena bl e d ( St r i n g p r o v i d e r ) {}
145 @Overri de
146 p u b l i c voi d onSt at us Changed ( St r i n g pr ovi de r , i n t s t a t u s , Bundl e e x t r a s ) {}
147 @Overri de
148 p u b l i c I Bi nde r onBi nd ( I n t e n t i n t e n t ) { r e t u r n n u l l ; }
149 }
K.5 Cdigo do Layout
1 <Re l a t i ve La yout xml ns : a ndr oi d =" h t t p : / / schemas . a ndr oi d . com/ apk / r e s / a ndr oi d "
2 x ml n s : t o o l s =" h t t p : / / schemas . a ndr oi d . com/ t o o l s "
3 a n d r o i d : l a y o u t _ wi d t h =" ma t c h_pa r e nt "
4 a n d r o i d : l a y o u t _ h e i g h t =" ma t c h_pa r e nt "
5 a ndr oi d: pa ddi ngBot t om="@dimen / a c t i v i t y _ v e r t i c a l _ ma r g i n "
6 a n d r o i d : p a d d i n g Le f t ="@dimen / a c t i v i t y _ h o r i z o n t a l _ ma r g i n "
7 a n d r o i d : p a d d i n g Ri g h t ="@dimen / a c t i v i t y _ h o r i z o n t a l _ ma r g i n "
8 a ndr oi d: pa ddi ngTop ="@dimen / a c t i v i t y _ v e r t i c a l _ ma r g i n "
9 t o o l s : c o n t e x t =" . Ma i nAc t i vi t y " >
10 <Edi t Te xt
11 a n d r o i d : i d ="@+i d / userCPF "
12 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
13 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
14 a n d r o i d : l a y o u t _ a l i g n P a r e n t Le f t =" t r u e "
15 a n d r o i d : l a y o u t _ a l i g n Pa r e n t To p =" t r u e "
16 a n d r o i d : l a y o u t _ ma r g i n Le f t =" 67dp "
17 a ndr oi d: l a yout _ma r gi nTop =" 65dp "
18 a ndr oi d: e ms =" 10 " >
19 <r e que s t Foc us / >
20 < / Edi t Te xt >
21 <Edi t Te xt
22 a n d r o i d : i d ="@+i d / us er Pas s wor d "
23 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
24 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
25 a n d r o i d : l a y o u t _ a l i g n Le f t ="@+i d / userCPF "
26 a n d r o i d : l a y o u t _ b e l o w="@+i d / userCPF "
27 a ndr oi d: l a yout _ma r gi nTop =" 22dp "
28 a ndr oi d: e ms =" 10 "
153
29 a n d r o i d : i n p u t Ty p e =" t e xt Pa s s wor d " / >
30 <But t on
31 a n d r o i d : i d ="@+i d / l o g i n Bu t t o n "
32 a n d r o i d : l a y o u t _ wi d t h =" f i l l _ p a r e n t "
33 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
34 a n d r o i d : l a y o u t _ c e n t e r Ho r i z o n t a l =" t r u e "
35 a n d r o i d : l a y o u t _ c e n t e r Ve r t i c a l =" t r u e "
36 a n d r o i d : o n Cl i c k =" s t a r t Me t hod "
37 a n d r o i d : t e x t =" Logi n " / >
38 <But t on
39 a n d r o i d : i d ="@+i d / t ur nOf f But t on "
40 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
41 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
42 a n d r o i d : l a y o u t _ a l i g n Pa r e n t Bo t t o m=" t r u e "
43 a n d r o i d : l a y o u t _ a l i g n Ri g h t ="@+i d / userCPF "
44 a ndr oi d: l a yout _ma r gi nBot t om=" 19dp "
45 a n d r o i d : o n Cl i c k =" t ur nOf f Met hod "
46 a n d r o i d : t e x t =" Of f " / >
47 <Text Vi ew
48 a n d r o i d : i d ="@+i d / t ext Vi ew1 "
49 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
50 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
51 a n d r o i d : l a y o u t _ a l i g n Bo t t o m="@+i d / userCPF "
52 a n d r o i d : l a y o u t _ a l i g n P a r e n t Le f t =" t r u e "
53 a n d r o i d : t e x t =" CPF: " / >
54 <Text Vi ew
55 a n d r o i d : i d ="@+i d / t ext Vi ew2 "
56 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
57 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
58 a n d r o i d : l a y o u t _ a l i g n Bo t t o m="@+i d / us er Pas s wor d "
59 a n d r o i d : l a y o u t _ a l i g n P a r e n t Le f t =" t r u e "
60 a n d r o i d : t e x t =" Senha: " / >
61 <Text Vi ew
62 a n d r o i d : i d ="@+i d / t e xt Ar dui no "
63 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
64 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
65 a n d r o i d : l a y o u t _ b e l o w="@+i d / l o g i n Bu t t o n "
66 a n d r o i d : l a y o u t _ c e n t e r Ho r i z o n t a l =" t r u e "
67 a ndr oi d: l a yout _ma r gi nTop =" 39dp "
68 a n d r o i d : t e x t =" ____ " / >
69 <Text Vi ew
70 a n d r o i d : i d ="@+i d / t ext Vi ew3 "
154
71 a n d r o i d : l a y o u t _ wi d t h =" wr a p_c ont e nt "
72 a n d r o i d : l a y o u t _ h e i g h t =" wr a p_c ont e nt "
73 a n d r o i d : l a y o u t _ a b o v e ="@+i d / t ur nOf f But t on "
74 a n d r o i d : l a y o u t _ c e n t e r Ho r i z o n t a l =" t r u e "
75 a ndr oi d: l a yout _ma r gi nBot t om=" 24dp "
76 a n d r o i d : t e x t ="BPM" / >
77 < / Re l a t i ve La yout >
K.6 Cdigo do Manifest
1 <? xml v e r s i o n =" 1. 0 " encodi ng=" ut f 8" ?>
2 <ma n i f e s t xml ns : a ndr oi d =" h t t p : / / schemas . a ndr oi d . com/ apk / r e s / a ndr oi d "
3 package="com. exampl e . p u l s e s e n s o r a p p "
4 a nd r o i d : ve r s i o nCod e =" 1"
5 a ndr oi d: ve r s i onNa me =" 1. 0 " >
6 <uses sdk
7 a ndr oi d: mi nSdkVe r s i on =" 8"
8 a n d r o i d : t a r g e t Sd k Ve r s i o n =" 18 " / >
9 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . INTERNET" / >
10 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . ACCESS_NETWORK_STATE" / >
11 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . ACCESS_FINE_LOCATION" >
12 < / uses pe r mi s s i on >
13 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . ACCESS_COARSE_LOCATION" >
14 < / uses pe r mi s s i on >
15 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . BLUETOOTH" / >
16 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . BLUETOOTH_ADMIN" / >
17 <uses pe r mi s s i on andr oi d: name =" a ndr oi d . pe r mi s s i on . WAKE_LOCK" / >
18 < a p p l i c a t i o n
19 a ndr oi d: a l l owBa c kup =" t r u e "
20 a n d r o i d : i c o n =" @drawable / i c _ l a u n c h e r "
21 a n d r o i d : l a b e l =" @s t r i ng / app_name "
22 a ndr oi d: t he me =" @st yl e / AppTheme" >
23 < a c t i v i t y
24 andr oi d: name ="com. exampl e . p u l s e s e n s o r a p p . Ma i nAc t i vi t y "
25 a n d r o i d : l a b e l =" @s t r i ng / app_name " >
26 < i n t e n t f i l t e r >
27 < a c t i o n andr oi d: name =" a ndr oi d . i n t e n t . a c t i o n . MAIN" / >
28 <c a t e g o r y andr oi d: name =" a ndr oi d . i n t e n t . c a t e g o r y . LAUNCHER" / >
29 < / i n t e n t f i l t e r >
30 < / a c t i v i t y >
31 < a c t i v i t y
32 andr oi d: name ="com. exampl e . p u l s e s e n s o r a p p . Li veDat a "
155
33 a n d r o i d : l a b e l =" @s t r i ng / t i t l e _ a c t i v i t y _ l i v e _ d a t a " >
34 < / a c t i v i t y >
35 < a c t i v i t y
36 andr oi d: name ="com. exampl e . p u l s e s e n s o r a p p . Lo c a t i o n Ac t i v i t y "
37 a n d r o i d : l a b e l =" @s t r i ng / t i t l e _ a c t i v i t y _ l o c a t i o n " >
38 < / a c t i v i t y >
39 < a c t i v i t y
40 andr oi d: name ="com. exampl e . p u l s e s e n s o r a p p . Bl u e t o o t h Ac t i v i t y "
41 a n d r o i d : l a b e l =" @s t r i ng / t i t l e _ a c t i v i t y _ b l u e t o o t h " >
42 < / a c t i v i t y >
43 < / a p p l i c a t i o n >
44 < / ma n i f e s t >

Você também pode gostar