Baixe o app para aproveitar ainda mais
Prévia do material em texto
FAETERJ-RIO DE JANEIRO LUCAS BARROS RODRIGUES EASY SCHEDULING Rio de Janeiro 2016 LUCAS EASY SCHEDULING Trabalho de Conclusão de Curso apresentado ao Curso de Análise de Sistemas Informatizados da Faculdade de Educação Tecnológica do Estado do Rio de Janeiro, como requisito parcial para obtenção do Grau em Tecnólogo em Análise de Sistemas Informatizados. Orientador: Horácio da Cunha e Souza RIbeiro Rio de Janeiro 2016 LUCAS BARROS RODRIGUES EASY SCHEDULING Trabalho de Conclusão de Curso apresentado ao Curso de Análise de Sistemas Informatizados da Faculdade de Educação Tecnológica do Estado do Rio de Janeiro, como requisito parcial para obtenção Grau em Tecnólogo em Análise de Sistemas Informatizados. Trabalho de Conclusão de Curso defendido e aprovado em:dia, mês e ano. Banca examinadora: ______________________________________________________ Prof. Horácio da Cunha e Souza Ribeiro Orientador FAETERJ-Rio ______________________________________________________ Prof. Nelson Luis Soares Bezerra FAETERJ-Rio ______________________________________________________ Profa. Michelle Gonçalves Mothé EQ/UFRJ AGRADECIMENTOS Ao Prof. Horácio da Cunha e Sousa Ribeiro pela orientação, pela confiança durante a realização deste trabalho de conclusão de curso. A minha mãe Ana Paula Barros da Silva e ao meu pai Marcelo Rodrigues da Silva pelo esforço, carinho e apoio durante toda a minha jornada. Aos professores da FAETERJ Artur Antonio de Melo de Lira Brandt, Claudia Ferlin, Claudio Bispo de Jesus da Costa, Marcio Belo Rodrigues da Silva, Nelson Luiz Soares Bezerra, Paulo Ricardo Galhanone, Rosangela de Sena Almeida, Rute Cândida de Freitas e José Barbosa da Silva Filho, pelo apoio e todo aprendizado durante o meu curso de graduação. Aos meus colegas de curso da FAETERJ Alex Mafra Alves, Dalmo Lopes, Carlos Henrique Miceli, Renan Vieira, Roberto de Oliveira, Úrsula Domingues Junger, Yago Dias, Gianclaudio Oliveira e Diego Leitão. A todos que colaboraram direta ou indiretamente para a realização deste trabalho. RESUMO Neste trabalho foi desenvolvido um aplicativo Android que tem como função principal, facilitar a busca por profissionais que realizam serviços domésticos ou consertos de objetos domésticos em geral. Isso é feito numa aplicação que permite o cadastro de funcionários e clientes, e possibilita que o cliente encontre funcionários próximos a ele, utilizando o serviço de localização do próprio dispositivo Android. Além disso,a aplicação possui uma ligação direta com a API do Google Maps possibilitando que o usuário localize funcionários naquela região, podendo dispor de todos os benefícios oferecidos pelo Google, sendo eles, informações sobre o mapa em si, rotas para deslocamento, informações sobre o trânsito, endereços dos profissionais, entre outras funcionalidades muito úteis fornecidas pelo Google. O usuário da aplicação também pode realizar uma busca pelo tipo de serviço desejado, ou procurar em uma lista por um profissional que seja do interesse do cliente. A aplicação foi desenvolvida utilizando a linguagem Java, a IDE utilizada para desenvolvimento foi o Android Studio, uma ferramenta da Google para o desenvolvimento de aplicações Android para dispositivos móveis e o Banco de dados da aplicação funciona em uma instância de um banco de dados PostgreSQL hospedada na nuvem da Amazon Web Services. A ideia básica da aplicação é facilitar que clientes que precisam de algum tipo de serviço encontrem profissionais do ramo com facilidade e consigam agendar os serviços desejados de forma rápida, o aplicativo é totalmente focado na agilidade na busca pelo serviço e na facilidade de uso tanto para o cliente quanto para o profissional em questão. Palavras-Chave: Java, PostgreSQL, Android Studio, Google Maps API, Amazon Web Services, Aplicação Android, Orientação a Objetos, Bancos de Dados. ABSTRACT In this paperwork was developed is an Android application whose main function is to facilitate the search for professionals who perform domestic services or repairs of household objects in general. This is done in an application that allows the registration of employees and customers, and enables the customer to find employees near him using the location service of the Android device itself. In addition, the application has a direct link to the Google Maps API allowing the user to locate employees in that region, being able to have all the benefits offered by Google, being information about the map itself, routes for movement, information about Traffic, addresses of professionals, among other very useful features provided by Google. The application user can also perform a search for the type of service desired, or look up a list by a professional that is in the customer's interest. The application was developed using the Java language, the IDE used for development was Android Studio, a Google tool for the development of Android applications for mobile devices and the application database works on an instance of a hosted PostgreSQL database In the Amazon Web Services cloud. The basic idea of the application is to make it easy for customers who need some kind of service to find branch professionals easily and can schedule the desired services quickly, the application is totally focused on agility in the search for the service and ease of use both for The client and the professional in question. Keywords: Java, PostgreSQL, Android Studio, Google Maps API, Amazon Web Services, Android Application, Object-Oriented Programming, Databases LISTA DE FIGURAS Figura 1 – Interface da IDE de desenvolvimento da Aplicação 13 Figura 2 – Conexão a instância do RDS do banco de dados da aplicação 18 Figura 3 – Tabelas e colunas do banco utilizando PostgreSQL 19 Figura 4 – Dados dos campos da tabela de Clientes 20 Figura 5 – Dados dos campos da tabela de Funcionários 21 Figura 6 – Campo para digitação e obtenção de resultados de comandos SQL 21 Figura 7 – Interface do painel de gestão online da instância RDS 22 Figura 8 – Relatório online gerado pela amazon para a instância RDS 23 Figura 9 – Trecho de código com parâmetros para conexão com o banco 24 Figura 10 – Trecho de código efetuando conexão com o banco de dados 25 Figura 11 – Editando botão da aplicação através da IDE 26 Figura 12 – Trecho de código do Método que armazena os dados dos clientes 27 Figura 13 – Variáveis e método construtor da classe cliente 28 Figura 14 – Inserção no banco de dados 29 Figura 15 – Busca por especialidade no banco de dados 30 Figura 16 – Imagem do campo de busca da aplicação 31 Figura 17 – Tela principal da aplicação 34 Figura 18 – Tela de resultados da busca por especialidade 35 Figura 19 – Tela de mapas capturando localização do usuário 37 Figura 20 – Tela de mapas mostrando rota até o funcionário 38 Figura 21 – Tela de cadastro de clientes 40 Figura 22 – Tela com a lista de todos os funcionários cadastrados 41 Figura 23 – Tela de cadastro de funcionários 42 Figura 24 – Trecho de código enviando chave de API para o Google 43 Figura 25 – Trecho de código com permissões para internet e GPS 44 Figura 26 – Trecho de código que captura localização do usuário 44 Figura 27 – Botão utilizado para abrir mapa na localidade do usuário 45 LISTA DE ABREVIATURAS E SIGLAS API – Application Programming Interface IDE – Integrated Development Environment RDS – Relational Database Service SQL – Structured Query Language SUMÁRIO INTRODUÇÃO……………………………………………………………………1 REVISÃO DE LITERATURA……………………………………………….... 12 METODOLOGIA...........................................................................................14ESCOLHA DA LINGUAGEM.......................................................................14 BANCO DE DADOS.....................................................................................15 GOOGLE MAPS API....................................................................................15 4 RESULTADOS E DISCUSSÃO...................................................................15 4.1 DESENVOLVIMENTO DA APLICAÇÃO.....................................................15 4.2 BANCO DE DADOS....................................................................................17 4.3 TELAS DO SISTEMA..................................................................................30 4.4 GOOGLE MAPS API...................................................................................39 5 CONSIDERAÇÕES FINAIS.........................................................................43 1 INTRODUÇÃO Atualmente, a demanda da sociedade por métodos ou modelos que venham a facilitar e trazer comodidade ao dia-a-dia tem surgido exponencialmente mercado digital. Cada vez mais são criados diversos aplicativos que se baseiam em capturar a localização do usuário para fornecer algum tipo de necessidade do mesmo. O tema abordado neste trabalho, é o desenvolvimento de um aplicação Android que tem por objetivo facilitar o usuário final da aplicação a encontrar funcionários que realizem serviços domésticos ou consertos de aparelhos domésticos em geral. Para isso, a aplicação conta com uma funcionalidade que vai permitir que o cliente localize profissionais que realizem estes tipos de serviço que estejam próximos a ele. Isto é feito através da captura da localização do dispositivo do usuário e mostrando no mapa a localização dos funcionários próximos a ele. Além disso, a aplicação permite que o usuário realize uma busca digitando o serviço desejado. Nessa situação, a aplicação irá retornar pra ele todos os funcionários cadastrados no sistema que listaram aquele serviço digitado pelo usuário como uma de suas competências. Na aplicação possuímos telas para o preenchimento de formulário para cadastro, tanto do usuário, quanto do funcionário em questão. O sistema também dispõe de uma tela que retorna todos os funcionários cadastrados para o usuário, permitindo que ele selecione um funcionário de sua escolha na lista retornada pelo aplicativo. Neste projeto, abordou-se desde a cobertura da maior parte dos detalhes de implementação do aplicativo. Será discutido o surgimento da ideia para a aplicação, detalhes sobre a IDE utilizada, o tipo banco de dados utilizado, linguagem, falaremos sobre as telas da aplicação de forma descritiva, para que tudo possa ser compreendido com facilidade, além de especificar diversos detalhes sobre como ocorreu todo este processo. A principal motivação para o desenvolvimento deste trabalho foi a atual e recorrente dificuldade que as pessoas têm no momento de encontrar profissionais que realizam serviços e reparos em equipamentos domésticos. Por diversas vezes,o desconhecimento de profissional especializado da área dificulta o cliente a localizar e entrar em contato com os mesmos. Portanto, o objetivo principal da aplicação é exatamente esse. Ajudar pessoas que precisam que algum serviço doméstico seja realizado em sua residência a encontrar um profissional que possua a capacitação necessária para realizar o serviço. Basicamente, é isso que a aplicação faz, com o foco na agilidade e na simplicidade. 2 REVISÃO DE LITERATURA Neste capítulo, será discutido informações sobre a IDE que foi utilizada para o desenvolvimento da aplicação. A IDE utilizada foi o Android Studio, uma ferramenta fornecida pela Google de forma gratuita que serve para o desenvolvimento de aplicações Android em dispositivos móveis. A IDE em si, é bem complexa e ocupa grande taxa de memória RAM do sistema, podendo tornar um pouco lento o desenvolvimento em computadores com baixa capacidade de processamento. A seguir vamos observar uma imagem da IDE averiguar a interface da mesma, afim de listar os pontos positivos e negativos de sua utilização. Figura 1 – Interface da IDE de desenvolvimento da Aplicação Como podemos ver na imagem, no centro da tela, temos a imagem de um aparelho Android e podemos adicionar os botões, caixas de texto, checkbox, radiobutton, entre outros de forma manual, simplesmente clicando e arrastando para a tela do aplicativo, de forma bem simples. Para a montagem de tela, precisamos criar uma “activity” que é responsável por toda a parte de front-end da aplicação. A adição de elementos descrita no parágrafo anterior é realizada pelo arquivo content da IDE, enquanto todas as informações do cabeçalho da tela e outras partes periféricas é feita pela “activity”. Na imagem podemos localizar os dois tipos de arquivo no lado esquerdo da tela. A IDE permite que a gente consiga observar as telas da aplicação no modo “Design” ou “Text”, ou seja, podemos visualizar os elementos exatamente como eles serão dispostos na tela da aplicação em funcionamento, ou analisar os códigos dos elementos dispostos em cada tela da aplicação. Os dados inseridos nas telas de layout, chamam um método que irá abrir a activity configurada naquele botão, ou executar algum outro tipo de ação, é desta maneira, que os dados inseridos pelo usuário são passados para as classes Java dispostas no canto superior esquerdo da imagem, aonde começa a programação orientada a objetos de fato. É basicamente assim que a IDE trabalha no processo de desenvolvimento da aplicação, quanto ao processo de compilação, é possível emular um dispositivo móvel configurando através da IDE, executar a aplicação diretamente em um dispositivo móvel conectado ao computador ou até mesmo gerar um arquivo .apk que precisa ser instalado em um dispositivo móvel para funcionar corretamente. 3 METODOLOGIA 3.1 ESCOLHA DA LINGUAGEM DE PROGRAMAÇÃO Para o desenvolvimento de uma aplicação Android, a IDE escolhida foi a ferramenta Android Studio, uma ferramenta criada exclusivamente pela empresa Google para esta finalidade. A linguagem de programação utilizada nessa IDE foi a linguagem Java. A IDE Android Studio, possui diversas funcionalidades que ajudam no desenvolvimento de aplicações para dispositivos móveis, tais como mostrar a tela do celular e permitir que você adicione elementos a ela de forma simples e rápida, além disso, a IDE fornece uma separação clara entre a parte de Front-End e as classes de desenvolvimento. Com isso, a criação da aplicação se torna muito mais rápida e simples. 3.2 BANCO DE DADOS Na escolha do Banco de Dados para a aplicação, foi escolhido inicialmente o PostgreSQL rodando somente na rede local (localhost), ou seja, os dados só trafegavam da aplicação para o Banco se estivessem conectados a mesma rede. Posteriormente, foi criada uma Instância RDS desse banco de dados na nuvem da Amazon Web Services. Depois disso, qualquer dispositivo que tivesse a aplicação instalada e o acesso a Internet poderia utilizar o Banco de dados da aplicação. Para a hospedagem da Instância RDS do banco de dados da Amazon, foi necessário cadastrar uma conta e comprar uma pacote gratuito anual. 3.3 GOOGLE MAPS API De modo a permitir o cliente possa localizar profissionais de seu interesse no aplicativo desenvolvido, foi necessário estabelecer uma conexão com a API do Google Maps para que a aplicação possa ter acesso aos mapas, trajetos, endereços e outras diversas informações fornecidas pela API. 4 RESULTADOS E DISCUSSÃO 4.1 DESENVOLVIMENTO DA APLICAÇÃO Neste capítulo, vamos abordar todo o processo de desenvolvimento da aplicação, mostrar como tudo funcionava inicialmente e como foram implementadas todas as funcionalidades que estão dispostas hoje no aplicativo. Após o estudo sobre as características de desenvolvimento da aplicação (Escolha da linguagem,IDE, banco de dados, funcionamento da aplicação e objetivos) foi dado o início do processo de construção do layout das telas principais da aplicação através dos arquivos do tipo “content” na IDE que serão analisados posteriormente. Neste layout desenvolvido, definimos a cor do cabeçalho que aparece em todas as telas do aplicativo, o layout e disposição de todos os botões, dos campos para a entrada de dados e campos para a saída de dados. Logicamente este modelo original sofreu pequenos ajustes durante todo o processo, porém, a ideia geral de funcionamento foi mantida. Após isso, foram criadas as classes da aplicação, e as informações pertinentes a cada classse foram transferidas da camada de layout para as classes, ou seja,neste momento, o conteúdo digitado pelos usuários da aplicação já estava sendo capturado pela aplicação, porém, nenhum dado havia sido armazenado em nenhum tipo de banco de dados. Nesta próxima etapa, após a definição de todas as classes, foi criado um banco de dados local PostgreSQL, que possibilitou o armazenamento e acesso aos dados para todos os dispositivos que estivessem conectados a mesma rede.Porém, esta limitação não podia existir na aplicação, era preciso que qualquer dispositivo conectado a internet pudesse ter acesso ao banco de dados da aplicação para efetuar inserções e consultas ao banco. Ainda com a aplicação rodando somente na rede local, foi realizada uma conexão com a API do Google Maps para que o usuário pudesse localizar os profissionais cadastrados no mapa fornecido pela API. A aplicação abria o mapa do Rio de Janeiro e permitia que o usuário pudesse navegar livremente até encontrar o profissional de seu interesse. Neste momento, só as informações dos funcionários eram dispostas na tela, nenhuma informação sobre o usuário da aplicação era capturada. Criou-se então, uma instância desse banco de dados na nuvem da Amazon Web Services, permitindo que qualquer dispositivo conectado a internet pudesse utilizar a aplicação normalmente (Processo descrito de forma mais detalhada posteriormente). A partir daí, com a aplicação funcionando normalmente em qualquer lugar do mundo, foi adicionada uma funcionalidade que permite que a aplicação capture a localização do usuário. Com isso, o usuário ao clicar em um botão no mapa, pode poderá ver no mapa os funcionários que estão ao seu redor e com isso, entrar em contato com um de sua preferência. Por último, uma última funcionalidade importante foi implementada na aplicação, que seria a busca por tipo de serviço. Nesta busca, basta o usuário digitar no campo de busca (localizado na tela principal da aplicação) o serviço que deseja buscar. Por exemplo: Eletricista, Encanador, Conserto Televisão, Pintor, entre outros e com isso a aplicação irá fazer uma busca no banco de dados para localizar um funcionário cadastrado no sistema que possua aquela perícia. Nesta mesma tela, já serão fornecidos para o cliente, os dados de contato do profissional, para que ele já possa estar agendando um serviço ou orçamento com o mesmo. 4.2 BANCO DE DADOS Neste capítulo, vamos abordar todos detalhes de implementação relativos ao banco de dados da aplicação. Serão apresentadas imagens da ferramenta utilizada para gerir o banco e imagens dos trechos de códigos mais significativos para o funcionamento da aplicação. O banco de dados da aplicação, foi desenvolvido inicialmente para rodar localhost, ou seja, o banco de dados só funcionava na rede local, portanto, somente os dispositivos conectados na mesma rede poderiam ter acesso ao banco para inserir e acessar dados através da aplicação. O banco de dados utilizado para essa implementação inicial foi o PostgreSQL, um banco bem simples, gratuito e com uma interface relativamente simples para a manutenção e implementação do banco utilizado pela aplicação. Após a solicitação de que o banco de dados deveria ser capaz de funcionar para todos os dispositivos conectados a internet, foi criada uma instância do banco de dados inicialmente criado em uma nuvem da Amazon Web Services, ou seja, com a instância do banco de dados hospedada na nuvem, qualquer dispositivo conectado a internet poderia ter acesso ao banco. . A seguir, vamos averiguar algumas linhas de código e screenshots do software utilizado para gerir o banco de dados da aplicação que mostram como foi possível implementar o banco dados na aplicação Android. Figura 2 – Conexão a instância do RDS do banco de dados da aplicação Nesta primeira tela podemos ver claramente a instância do PostgreSQL na nuvem da Amazon do lado esquerdo da tela, ela é listada na parte de Servidores e possui o nome “PostgreSQL RDS instance”. Após clicar para acessar essa instância, o PostgreSQL nos mostra a mensagem localizada no centro da tela, tentando fazer conexão com a instância do banco de dados, o host aparece entre parênteses (dblucas.cf77cdv4zqpj.sa-east-1.rds.amazonaws.com) através da porta 5432. Depois que a conexão é estabelecida, podemos ter acesso as tabelas do sistema, inclusive, podemos ver todos os dados armazenados nessas tabelas, como mostram as imagens abaixo: Figura 3 – Tabelas e colunas do banco utilizando PostgreSQL Nesta parte, podemos visualizar as tabelas do banco com os seguintes nomes: “cliente” (utilizada para armazenar dados dos clientes) e “usuario” (utilizada para guardar dados dos funcionários), somente essas duas tabelas são utilizadas pela aplicação no momento e ambas possuem praticamente os mesmos campos, a diferença principal entre as duas é que uma possui o campo “nomeproprietario”, sendo este, o campo utilizado para armazenar as especialidades do profissional em questão na aplicação, portanto, não levando em conta a diferença no nome dos campos de uma tabela para outra, eles irão funcionar da mesma forma na aplicação. A seguir, vamos observar o acesso via PostgreSQL RDS Instance aos dados inseridos via aplicativo na tabela de clientes. Figura 4 – Dados dos campos da tabela de Clientes Da mesma maneira, podemos acessar todos os dados inseridos na tabela de funcionários, apelidada com o nome de “usuário”. Figura 5 – Dados dos campos da tabela de Funcionários Através do PostgreSQL, podemos fazer todos os tipos de alterações no banco de dados utilizando comando SQL, abaixo temos uma imagem demonstrando como esses comandos SQL podem ser feitos: Figura 6 – Campo para digitação e obtenção de resultados de comandos SQL No exemplo acima, é feita a mesma busca que é realizada quando um usuário digita um tipo de serviço e o aplicativo retorna para ele todos os funcionários que listaram aquele tipo de serviço como uma especialidade, porém, a busca está sendo feita diretamente no banco, portanto, o banco vai retornar todos os campos daquele funcionário. A seguir vamos observar os detalhes relativos aos serviços fornecidos pela Amazon Web Services, ou seja, veremos detalhes de como essa instância RDS está hospedada e como funciona seu painel online de gestão. Primeiramente, uma foto de como é a interface que gerencia a instância RDS, nesta tela, podemos ver detalhes relativos aos acessos, uso de memória, informações sobre o limite de armazenamento e status da instância (autorizado ou não autorizado) Além disso, também podemos visualizar informações sobre os parâmetros da instância, tais como o tipo do banco, nome da instância, status, entre outras diversas informações que irão possibilitar um bom processo de monitoramente e gestão da mesma. Figura 7 – Interface do painel de gestão online da instância RDS O painel para controle da instância RDS também nos permite visualizar um relatório com um filtro escolhido pelo usuário, na imagem abaixo segue um exemplo de relatório de duas semanas atrás, registrando a utilização, as conexões com o banco, espaço disponível além de outras diversas informações relevantes para uma gestão segura e eficiente da instância. Figura 8 – Relatório online gerado pela amazonpara a instância RDS Antes de começarmos a discutir questões relativas ao código da aplicação ligado a implementação do banco de dados, vamos observar um diagrama com as tabelas do banco. Neste diagrama, além de mostrar todos os campos das tabelas utilizadas, vamos mostrar também, o tipo do campo utilizado para armazenar estes dados no banco de dados em si. Até o momento, discutimos detalhes relativos ao ferramental do banco de dados utilizado na aplicação. A partir de agora, vamos discutir detalhes relativos a implementação do banco em si, com imagens mostrando linhas de código e explicações sobre como a aplicação se conecta ao banco de dados na íntegra. Inicialmente, vamos começar falando da inicialização das variáveis que serão utilizadas para a passagem de configurações do banco para a aplicação em si, uma imagem do código irá exemplificar isso. Figura 9 – Trecho de código com parâmetros para conexão com o banco Nesta imagem, podemos localizar todas as informações sobre os parâmetros de configurações do banco de dados que foram mencionados anteriormente, com a única diferença de que agora eles estão sendo passados para a aplicação em si, para que ela possa acessar o banco de dados e realizar todas as operações necessárias. A seguir, vamos mostrar como o método “Run”, responsável por de fato conectar a instância do banco de dados na nuvem, vai capturar as informações digitadas acima, através das variáveis, e vai realizar a conexão utilizando esses parâmetros: Figura 10 – Trecho de código efetuando conexão com o banco de dados Nesta imagem, podemos ver que ele utiliza a String user, pass e url para se conectar na PostgreSQL RDS Instance, e ainda captura uma exceção caso não consiga se conectar, mostrando uma mensagem de erro. Até o momento, apresentamos os códigos mais relevantes para a configuração do acesso ao banco de dados na aplicação. A partir de agora, vamos exemplificar como de fato os dados estão sendo transferidos da aplicação para o banco. Primeiramente vamos analisar os dados capturados pelo formulário do cadastro de clientes e toda a implementação necessária para guardá-los no banco. Figura 11 – Editando botão da aplicação através da IDE Tudo começa, quando o cliente, após preencher todos os dados, clica no botão “Cadastrar” colocado logo abaixo do formulário. Este botão, irá chamar o método salvarCli após ser clicado, por esse motivo, no canto direito inferior da foto, podemos localizar o evento onClick do botão chamando o método salvarCli, isso dá início ao processo de transferência de dados para o banco, sem este clique, nenhum dado irá ser passado para o banco. Agora vamos mostrar o que o método salvarCli vai realizar, para entender o que acontece logo após o usuário pressionar o botão “Cadastrar”. Figura 12 – Trecho de código do Método que armazena os dados dos clientes Este método, localizado na classe ClienteActivity, basicamente captura os dados digitados nos campos e os envia para classe cliente. A seguir, vamos descrever o processo com maior detalhamento. OBS: Na IDE Android Studio, cada campo para digitação no formulário de cadastro é chamado de editText. Portanto, o que este método faz é basicamente capturar todos editText’s digitados, utilizar o método getText() para extrair o texto digitado em cada um deles, e converter para String, pois a classe que vai tratar esses dados espera que uma variável do tipo String seja passada para trabalhar corretamente. Todas essas recém formadas String’s são passadas para um método Set da classe Cliente para que elas já sejam setadas. Depois disso, é invocado o método salvar() da classe cliente. Na antepenúltima linha de código do método, this.cliente.salvar(); fazemos com que o método salvar() seja executado logo depois que todas as String’s estejam setadas. OBS: O objeto da classe Cliente foi criado acima do método salvarcli, portanto, não foi mostrado na imagem. Agora vamos averiguar o que acontece com essas Strings na classe Cliente. Figura 13 – Variáveis e método construtor da classe cliente Como podemos ver, são criadas as variáveis na parte superior da imagem e o método construtor inicializa as variáveis no método construtor localizado na parte inferior da imagem. Na próxima imagem podemos ver a inserção dos dados no banco, o método salvar da classe Cliente é responsável por inserir todos os editText’s convertidos para String na tabela de clientes, cada string em sua respectiva coluna no banco. Figura 14 – Inserção no banco de dados O mesmo processo, com a única diferença de um campo a mais, é feito para o cadastro de funcionários no sistema, portanto, não há necessidade de reescrever todo o processo. Até o momento, vimos como funciona o processo de inserção no banco, ou seja, um INSERT no banco de dados, agora vamos ver como funciona o processo de busca no banco de dados, ou seja a utilização de um SELECT, que vai apenas buscar os dados de acordo com os filtros utilizados na consulta realizada. A seguir, segue o exemplo de um SELECT utilizado para buscar funcionários através de uma especialidade digitada pelo usuário. Figura 15 – Busca por especialidade no banco de dados Neste trecho de código, podemos ver o resultSet recebendo um SELECT realizado na tabela usuário, onde é feita a comparação do campo “nomeproprietario” com a variável bus, o campo “nomeproprietario”, como já foi mencionado anteriormente, na versão atual do aplicativo está sendo utilizado para guardar a especialidade do funcionário, portanto, estamos comparando o que foi digitado pelo usuário na busca por especialidade, com o que foi gravado no banco pelos profissionais que realizaram o cadastro na aplicação. Observe também, que o comparador utilizado não é o esperado “==” para a comparação de String’s em Java e sim o “like” que é um comparador que encontra String’s parecidas e com isso, a aplicação aumenta suas chances de encontrar o funcionário correto para a busca que o usuário está realizando. Para que isso fique melhor ilustrado, segue abaixo uma imagem do local em que a busca é realizada pelo usuário na aplicação. Figura 16 – Imagem do campo de busca da aplicação Neste capítulo, foram listadas as funcionalidades que incluem qualquer tipo de inserção ou comparação de dados com o banco de dados utilizado pela aplicação, resumidamente, uma instância de um banco de dados PostgreSQL, denominada como uma PostgreSQL RDS Instance. A instância do banco de dados é hospedada na nuvem da Amazon Web Services, a aplicação possui os parâmetros para acesso ao banco dentro de variáveis setadas via código de programação, o que permite que essa instância possa ser utilizada por qualquer usuário no mundo que possua a aplicação instalada em um dispositivo compatível com a aplicação e acesso a internet. 4.3 CASOS DE USO DA APLICAÇÃO Antes de avançarmos para o estudo das telas do sistema, vamos analisar alguns casos de uso que irão ilustrar a interação de funcionários e clientes com a aplicação. Primeiramente, vamos apresentar o diagrama relativo às operações que o cliente pode realizar na aplicação. A seguir, vamos mostrar o diagrama que irá ilustrar as ações que devem ser tomadas pelo funcionário em questão, para que ele possa ser encontrado com facilidade por seus clientes. 4.4 TELAS DO SISTEMA Neste capítulo, será descrito todo o funcionamento da aplicação,fazendo isso através da visualização e explicação do funcionamento das telas do sistema. O objetivo é entender a aplicação de forma clara e objetiva, utilizando screenshots tiradas diretamente da aplicação em funcionamento. Esta primeira tela é a principal do aplicativo, a seguir vamos listar todas as opções que o usuário tem ao acessar esta tela. Clicando na caixa de texto superior, o usuário pode digitar uma busca por tipo de serviço que ele procura, tais como encanador, eletricista, carpinteiro, entreoutros. Ao clicar no botão “Buscar” a aplicação carrega automaticamente na tela todos os funcionários que possuem aquela habilidade e seus respectivos dados para que o usuário possa entrar em contato com o profissional e agendar seu serviço. Segue abaixo, uma imagem com a tela principal da aplicação, onde podemos visualizar todos os botões da aplicação e consequentemente, todas as funcionalidades realizadas pela mesma. Figura 17 – Tela principal da aplicação Após o usuário realizar a busca, uma tela com os resultados e as informações sobre os funcionários que realizam aquele tipo de serviço é aberta, segue abaixo um exemplo dos resultados encontrados na busca. Figura 18 – Tela de resultados da busca por especialidade Podemos ver que apenas digitando a especialidade desejada pelo usuário, a aplicação já é capaz de retornar todos funcionários que realizam aquele serviço que estejam cadastrados no sistema, com isso o usuário já fica com caminho livre para entrar em contato e agendar o serviço diretamente com o funcionário. Dando continuidade, logo abaixo do botão buscar, temos o botão “Funcionários Próximos”. Quando o usuário clica neste botão a aplicação imediatamente mostra um mapa onde o usuário pode realizar diversas tarefas. Uma dessas tarefas é clicar no ícone de localização GPS, que fará com que a aplicação obtenha a localização do usuário (o celular do usuário deve estar com os serviços de localização ativo) e mostre no mapa todos os funcionários cadastrados no sistema que estejam próximos a ele. Seguem abaixo, algumas fotos relativas ao processo de busca por funcionários próximos ao usuário utilizando a aplicação. Figura 19 – Tela de mapas capturando localização do usuário Nesta tela, o aplicativo captura a localização do usuário e mostra todos os funcionários que estão que estão próximos a sua localização atual. Além disso, por a aplicação possuir uma conexão direta com a API do Google Maps, o usuário vai poder verificar informações sobre a localização, rotas para o local desejado, informações sobre o trânsito no momento, entre outras diversas informações fornecidas pela API. Outro detalhe importante, é que o usuário pode navegar livremente pelo mapa, procurando por funcionários de seu interesse, e quando desejar voltar para sua localização atual, basta clicar no botão no canto superior direito. Seguem abaixo, mais algumas imagens que mostram como o processo de localização funciona em conjunto com a API do Google. Figura 20 – Tela de mapas mostrando rota até o funcionário Esta tela é aberta automaticamente quando o usuário deseja ter acesso a uma rota até um funcionário de seu interesse. Podemos ver que ele terá acesso a todas as informações fornecidas pelo Google para levar o usuário até o profissional de sua escolha. O usuário, neste momento, pode obter informações relativas a trajetos, trânsito, informações sobre a localidade que está se deslocando, informações sobre os meios de transporte disponíveis e mais diversas opções todas fornecidas diretamente pela Google. Caso o usuário esteja utilizando a rota fornecida pelo Google e deseje retornar para a aplicação principal, basta clicar no botão voltar do dispositivo e o aplicativo será aberto novamente, exatamente na página que ele foi deixado. A seguir, iremos observar o funcionamento da tela de cadastro de clientes, nesta tela, basta o cliente preencher os dados exigidos pela aplicação e clicar no botão “cadastrar” com isso, o a aplicação já vai enviar os dados relativos ao cadastro daquele cliente para o banco de dados. Além disso, o sistema envia uma confirmação via Toast de que o cadastro foi realizado corretamente. Figura 21 – Tela de cadastro de clientes Na tela a seguir, o sistema carrega e mostra para o usuário todos os funcionários cadastrados no sistema, para que o usuário possa escolher qualquer funcionário de sua escolha. Ao clicar no botão “Como chegar” o mapa é aberto e o usuário irá obter as informações no mapa para encontrar o funcionário escolhido por ele. Figura 22 – Tela com a lista de todos os funcionários cadastrados Na tela a seguir, o funcionário vai poder se cadastrar para que os clientes possam encontrá-lo e agendar serviços. Para que o funcionário possa efetuar o cadastro, basta que ele digite seu nome, sua(s) especialidades, telefone para contato, e-mail, senha, cidade e endereço. Após a digitação dos dados, basta o funcionário clicar sobre o botão “Cadastrar Funcionário” e será enviada uma mensagem de confirmação de cadastro, indicando que o cadastro foi realizado corretamente. Segue abaixo, uma imagem ilustrando o formulário que deve ser preenchido pelo usuário. Figura 23 – Tela de cadastro de funcionários Com isso, finalizamos toda a parte de telas do sistema, é através destas telas que o usuário da aplicação irá navegar para utilizar as funcionalidades da aplicação. 4.4 GOOGLE MAPS API Neste capítulo, vamos falar sobre a conexão com a API do Google Maps que permite ao usuário da aplicação, localizar no mapa, profissionais próximos a sua localização atual. A decisão de realizar essa conexão com a API foi tomada antes do início do desenvolvimento da aplicação, pois uma das funções mais importantes do aplicativo, é localizar profissionais próximos ao usuário. Tendo em vista que o objetivo da aplicação é ajudar clientes a encontrarem profissionais que realizam serviços domésticos de forma rápida, indispensavelmente, a conexão com essa API precisava ser feita. A seguir, vamos descrever como essa conexão com a API é feita, utilizando exemplos que irão envolver fotos no mapa e trechos de linhas de código. Nesta primeira foto, vamos observar um trecho de código que envia para a API do Google uma chave de autenticação, que irá liberar para a aplicação, o uso dos serviços disponibilizados pela ferramenta. Figura 24 – Trecho de código enviando chave de API para o Google Esse trecho de código contendo a chave, deve ser inserido no arquivo Android Manifest, um arquivo gerado automaticamente quando criamos um projeto de aplicativo no Android Studio. Nesta próxima imagem, podemos ver outras duas linhas de código indispensáveis para o funcionamento da aplicação. Estas linhas concedem ao aplicativo, a permissão para utilizar os serviços de internet e localização do dispositivo do usuário. Figura 25 – Trecho de código com permissões para internet e GPS Na primeira linha da imagem, temos a permissão de acesso a internet do dispositivo do usuário, na segunda linha temos a permissão para acesso a localização do dispositivo, utilizada para localizar o usuário e mostrar a ele, funcionários próximos. Para toda a parte de código que será responsável por realizar alguma interação com o mapa, utilizamos o objeto “mMap” do tipo GoogleMap, por esse motivo todos os código relativos aos mapas utilizam essa variável. Na próxima imagem, vamos mostrar, diretamente da classe MapsActivity, classe responsável por toda a parte de mapas da aplicação, como é capturada de fato, a localização do usuário. Figura 26 – Trecho de código que captura localização do usuário Este trecho de código é responsável pelo funcionamento de um botão no canto direito superior no mapa, que faz com que o mapa vá até a localização do usuário, a imagem abaixo mostra o botão que realiza esta operação. Figura 27 – Botão utilizado para abrir mapa na localidade do usuário Com isso, concluímos os detalhes de implementação mais relevantes para estabelecer a conexão entre a API e a aplicação. 5 CONSIDERAÇÕES FINAIS A conclusão ou considerações finais é a parte final do texto, o fechamento do trabalho, onde se apresentam de forma clara, sintética e ordenada as deduções tiradas da discussão, e se os objetivos foram ou nãoalcançados. O termo considerações finais deve ser usado nos Trabalhos de Conclusão de Curso (TCC) e em monografias, em razão do trabalho não ter uma profundidade que o leve a produzir conclusões, enquanto que o termo conclusão deve ser utilizado nas dissertações e teses. Portanto, através desta aplicação, com absoluta certeza, o objetivo inicial definido pôde ser alcançado. A aplicação em sua versão atual, permite que os clientes consigam, de forma ágil e simples, encontrar profissionais próximos a ele ou realizar uma busca por tipo de serviço. Através da experiência de desenvolver esta aplicação, uma das maiores deduções seria sentir como criar aplicações pode ser uma coisa palpável e totalmente viável, desde que você se dedique. No início do desenvolvimento, as coisas aconteciam em um ritmo muito devagar, pois existiam muitos medos e dificuldades que pareciam intransponíveis. Com o tempo, com o andar do desenvolvimento, você acaba verificando que tudo que você imaginou para a sua aplicação é possível, com isso, tudo começa a fluir de uma forma muito mais ágil e bem organizada, o entendimento do funcionamento de toda a aplicação traz uma sensação de surrealismo, algo que você não acreditava ser possível e hoje funciona perfeitamente na palma de sua mão. A experiência adquirida transpondo as barreiras de desenvolvimento da aplicação é inestimável. Lidar com a mudança do banco de dados local para uma instância na nuvem, criar todo o código de acesso ao banco de dados, conectar a aplicação a uma API do Google, todo o aprendizado na hora de transpor essas barreiras necessárias para o sucesso da aplicação trouxeram de fato, grande experiência e crescimento como desenvolvedor em geral. A expectativa para o futuro da aplicação é a renovação do plano de hospedagem do banco de dados, algumas melhorias relativas ao layout, além de um aumento na quantidade de informações transmitidas ao usuário. Após isso, a hospedagem da aplicação no Google Play se torna viável e é até mesmo possível que isto se torne lucrativo em um futuro próximo. Contudo, a aplicação que pode ser disponibilizada via download já é capaz de funcionar perfeitamente e atender a necessidade de muitos clientes e profissionais da área. REFERÊNCIAS Amazon Relational Database Service (Amazon RDS), disponível em <https://aws.amazon.com/pt/rds/>, acesso em 04/04/2016. Guia do usuário - Conheça o Android Studio, disponível em https://developer.android.com/studio/intro/index.html?hl=pt-br, acesso em 21/04/2016. Google Maps para Android, disponível em <https://developers.google.com/maps/android/?hl=pt-br>, acesso em 06/05/2016. Windows installers PostgreSQL, disponível em https://www.postgresql.org/download/windows/ acesso em 22/03/2016. Acesso a Documentação do Banco de Dados PostgreSQL, disponível em <https://www.postgresql.org/docs/> Notas de aula da disciplina Orientação a Objetos 1, do Curso de Análise de Sistemas Informatizados / FAETERJ-Rio, 2015. Notas de aula da disciplina Orientação a Objetos 2, do Curso de Análise de Sistemas Informatizados / FAETERJ-Rio, 2015. Notas de aula da displina Implementação de Banco de dados, do Curso de Análise de Sistemas Informatizados / FAETERJ-Rio, 2014. ARNOLD, K.; GOSLING,J.; HOLMES,D. The Java Programming Language, 4. Ed. 1996. Tecmundo, disponível em https://www.tecmundo.com.br/ acesso em 03/09/2016.
Compartilhar