Você está na página 1de 10

IV SRST – SEMINÁRIO DE REDES E SISTEMAS DE TELECOMUNICAÇÕES

INSTITUTO NACIONAL DE TELECOMUNICAÇÕES – INATEL


ISSN 2358-1913
AGOSTO DE 2016

Desenvolvimento de uma aplicação de Quiz


Game na plataforma Android
Carlos Eduardo Ki Lee1, João Marco de Paula Santana2

publicidade ou em forma de compras dentro dos aplicativos,


Abstract— This paper addresses the use of Android technology ganha com o valor gasto na abertura de uma conta de
in a Quiz Game project conception that have a variety of desenvolvedor no Google que custa 25 dólares [1]. Mais
questions and five answers each, having content update by Web importante do que o retorno financeiro com os aplicativos, o
Service and using Facebook’s gameplay solutions: Authentication,
Score and Ranking. This paper focus in following parts of the
Google ganha por deixar sua plataforma móvel, Android, mais
project: SQLite database, Facebook API, Google Cloud atrativa e interessante, competindo assim, com outras
Endpoints API and Relative Layouts plataformas.
Index Terms— Android, Facebook, Google Cloud Endpoints Para quem deseja desenvolver aplicativos Android, o
SQLite. Google disponibiliza o Integrated Development Environment
Resumo—Este artigo aborda a utilização da tecnologia (IDE) Android Studio [2], uma Application Programming
Android na concepção de um projeto de jogo de Quiz Game
Interface (API), diversos tutoriais e uma documentação
contendo diversas perguntas com cinco respostas cada, contando
com atualização de conteúdo via Web Service e utilizando as extensa na Internet [3], provendo assim um grande suporte e
soluções de ‘jogabilidade’ do Facebook: autenticação, pontuação e incentivo para desenvolvedores iniciantes ou avançados. Além
ranking. O artigo tem foco nas seguintes partes do projeto: banco do que, este público conta com diversos outros recursos que
SQLite, API do Facebook, API do Google Cloud Endpoints e auxiliam o desenvolvimento de aplicativos, tais como: código
Relative Layout. fonte do sistema operacional Android [4], APIs e frameworks
Palavras-chave — Android, Facebook, Google Cloud
terceiros voltados à criação de jogos, APIs para integração
Endpoints SQLite.
com redes sociais e sistemas terceiros que auxiliam e agilizam
I. INTRODUÇÃO a confecção dos aplicativos.
Este trabalho preza o estudo de determinadas tecnologias
O mercado de dispositivos móveis vem crescendo muito
adotadas no desenvolvimento de aplicativos Android, tais
ultimamente e, consequentemente, também a demanda por
quais: banco de dados SQLite [5], conexão com Web Service
aplicativos disponíveis em cada plataforma mobile. Sendo esse
usando a API do Google Cloud Endpoints [6], Open Graph
um fator decisivo para a reputação da plataforma e para a
API [7] (proprietária do Facebook) e uso do Relative Layout
escolha do usuário final em qual tipo de smartphone utilizar,
[8], aplicados na concepção de um projeto de jogo de Quiz
seja Android, Windows Phone, IOS, entre outros.
Game, descrevendo as melhores práticas e os passos do
Sendo assim, é importante que as empresas detentoras de
desenvolvimento do projeto.
tais plataformas tornem seus ambientes atrativos, fazendo com
que a quantidade e a qualidade dos aplicativos aumentem,
II. REVISÃO LITERÁRIA
contribuindo assim para a melhora dessa atratividade.
O Google, responsável pela plataforma Android, A. Relative Layout
disponibiliza ambiente de desenvolvimento completo para que
empresas e pessoas físicas possam criar e disponibilizar seus A utilização do Relative Layout se faz muito útil para a
aplicativos ao público em geral, e esses desenvolvedores por criação de interface gráfica no Android, pois ela é altamente
sua vez desenvolvem aplicativos por diferentes objetivos: flexível, permitindo ao usuário confeccionar diversos tipos de
ganho financeiro, divulgação de marca, contribuição à layout de forma bem rápida e fácil. Esse tipo de layout
comunidade, hobby, entre outros. Em contrapartida, além do consiste em posicionar os elementos, que herdam da classe
Google ganhar dinheiro com uma porcentagem do rendimento View, relacionando-se uns com os outros, bem como, com o
de um aplicativo, seja esse rendimento em forma de Layout Parent, que é o layout que se encontra acima

Trabalho de Conclusão de Curso apresentado ao Instituto Nacional de


Telecomunicações, como parte dos requisitos para a obtenção do Certificado
de Pós-Graduação em Engenharia de Redes e Sistemas de Telecomunicações
e Desenvolvimento de Software. Orientador: Prof. João Marco Santana.
Trabalho aprovado em 08/2016.
na hierarquia. bibliotecas e competências que permitem construir uma
No entanto, desenvolver Interface Gráfica usando o Relative solução de aplicação no lado do servidor de forma simples e
Layout pode trazer complicações, pois ao criar layouts com integrada com o Android Studio, o que permite ao
diversos elementos, deve-se observar o posicionamento desenvolvedor trabalhar no backend e na aplicação móvel de
individual relativo de cada elemento, bem como a manutenção forma integrada usando o mesmo ambiente de
dos mesmos. desenvolvimento. Além do que, o desenvolvedor não precisa
se preocupar com a administração, balanceamento de carga,
As Views podem ser posicionadas relativamente ao Layout escalabilidade e manutenção do servidor, pois esse trabalho já
Parent seguindo os seguintes parâmetros: é parte integrada da solução do Google.
A solução de backend do Google Cloud Endpoints
TABELA I - ATRIBUTOS MAIS COMUNS PARA RELACIONAR OS ELEMENTOS EM disponibiliza diversas funcionalidades que podem ser
RELAÇÃO AO LAYOUT PARENT
utilizadas de forma simples:
NOME DESCRIÇÃO
android:layout_alignParentBottom Alinha a parte inferior da View com Datastore: é o banco de dados sem custo que a Google
a parte inferior do Layout Parent disponibiliza para uso. Trata-se de um banco de dados NoSQL
android:layout_alignParentLeft Alinha a borda esquerda da View [10] que provê todas as funcionalidades necessárias para
com a borda esquerda do Layout aplicativos de pequeno e médio porte. Por utilizar a tecnologia
Parent
android:layout_alignParentRight Alinha a borda direita da View com
NoSQL, essa solução não permite relacionamentos entre
a borda direita do Layout Parent tabelas, o que faz com que a mesma não seja ideal para bancos
android:layout_alignParentTop Alinha a borda de cima da View de dados muito complexos.
com a borda de cima do Layout Google Cloud Storage: é a solução do Google para
Parent
armazenamento de arquivos; com ele é possível armazenar,
android:layout_centerInParent Centraliza a View verticalmente e
horizontalmente no Layout Parent fazer upload e download de arquivos para o servidor.
android:layout_centerHorizontal Centraliza a View horizontalmente Mail: Com a utilização do Mail é possível enviar e-mails
no Layout Parent automáticos a partir do Google Cloud Endpoints em nome de
android:layout_centerVertical Centraliza a View verticalmente no sua aplicação.
Layout Parent
Url Fetch: Requisição HTTP ou HTTPs (Web Service).
Task Queue: Ao invés de executar tarefas em plano de
fundo no aplicativo cliente no dispositivo móvel do usuário, é
As Views também podem ser posicionadas relativamente às
possível executar tais tarefas remotamente no servidor
outras Views usando os seguintes atributos:
utilizando o Task Queue do Google Cloud Endpoints.
TABELA II – ATRIBUTOS MAIS COMUNS PARA OS ELEMENTOS
COM RELAÇÃO A OUTROS ELEMENTOS DO LAYOUT B. SQLite
NOME DESCRIÇÃO
android:layout_above Posiciona a View acima da View de SQLite [5] é um banco de dados com código livre e relacional
referência de linguagem SQL que não necessita de servidor nem de
android:layout_bellow Posiciona a View abaixo da View de configuração. Apesar de simples e portável, é bem robusto e
referência
confiável, podendo suportar mais de 100.000,00 transações em
android:layout_alignTop Posiciona o topo da View com o
topo da View de referência um único dia [11].
android:layout_alignBottom Posiciona a borda inferior da View Trata-se do banco de dados adotado nos aplicativos
com a borda inferior da View de Android, tendo em vista sua simplicidade e o fato de não
referência necessitar de configuração. A API do Android possui diversas
android:layout_alignLeft Posiciona a borda esquerda da View
classes já criadas para auxiliar na criação do banco de dados
com a borda esquerda da View de
referência SQLite.
android:layout_alignRight Posiciona a borda direita da View As principais classes usadas para instanciar e manipular um
com a borda direita da View de banco de dados SQLite em um ambiente Android são:
referência
android:layout_aligntoLeftOf Posiciona a borda direita da View
com a borda esquerda da View de
1) SQLiteDatabase.java
referência Essa classe é parte da API Android e possui métodos para
android:layout_aligntoRightOf Posiciona a borda esquerda da View criar, deletar e executar comandos SQL. Ela é a classe de mais
com a borda direita da View de baixo nível que o usuário tem acesso para manipular um banco
referência
de dados SQLite no Android.

2) SQLiteOpenHelper.java
A. Google Cloud Endpoints Essa é a classe mais importante para a manipulação de
O Google Cloud Endpoints consiste em ferramentas, bancos de dados SQLite na API Android. Ela gerencia a
criação e o ciclo de vida de um banco de dados no Android.
Nela são declarados o esquema e os métodos de criação de
todas as tabelas, além do que, normalmente, as queries passam
por essa classe.
C. Facebook
O Facebook utiliza a Open Graph API [7], a qual é baseada
em uma interface HTTP, podendo utilizar os métodos deste
protocolo para realizar chamadas para buscar dados de
usuários, criar posts automáticos na linha do tempo dos
mesmos e criar e atualizar um ranking para uma aplicação,
entre outras funcionalidades. Ela foi desenvolvida para ser
usada em diversas plataformas, como PHP, JavaScript, C#,
Android, entre outros. Porém, neste estudo, será focado o uso
da plataforma Android. O nome da API vem de “social
graph”, que é uma alusão à representação da informação no
Facebook em que a informação é representada por:
Nodes: Representação de algum objeto de interesse ao Figura 1: Exemplo de uso do GraphRequestAsyncTask.java
aplicativo ex.: Usuário, foto, página, comentário, etc.
Edges: Conexões entre os nodes ex.: Página de fotos, lista III. CONCEPÇÃO DO PROJETO
de comentários, etc. O projeto consiste em um jogo de perguntas e respostas no
Fields: Atributos dos nodes ex.: Nome de usuário, qual cada pergunta contém cinco respostas e apenas uma delas
aniversário, nome de uma página. é a correta. Para trazer mais competição ao jogo, foram
A Facebook Open Graph API consiste basicamente em implementadas cinco fases que o usuário precisa passar para
fazer requisições GET sobre a url: graph.facebook.com para terminar o mesmo, sendo que a primeira fase contém seis
fazer leitura, seguindo a seguinte estrutura: perguntas; a segunda fase contém oito perguntas; a terceira
fase contém dez perguntas; a quarta fase contém doze
Requisição de um node: perguntas e a quinta fase contém quatorze perguntas. Haverá
GET graph.facebook.com/{node-id} uma pontuação por usuário, visto que quanto menos ele usar as
“ajudas” disponíveis e quanto mais longe o usuário conseguir
Requisição de um Edge: alcançar, maior será sua pontuação, podendo então ser
GET graph.facebook.com /{node-id}/{edge-name} posicionado entre outros jogadores utilizando o ranking do
Facebook. Além disso, será utilizado o acesso ao Google
Para fazer escrita de dados, é usada a requisição POST, Cloud Endpoints para a atualização, adição e remoção de
passando parâmetros na requisição, e utilizando a mesma perguntas e uma integração com o Facebook para efetuar
chamada acima: login, guardar pontuação, criar ranking de desempenho de
jogadores e efetuar posts automáticos.
Requisição Post de um node: A primeira implementação no aplicativo foi a criação do
Post graph.facebook.com/{node-id} banco de dados SQLite com a tabela de perguntas, em seguida
foram criadas as Activities [9] principais da aplicação: menu
Requisição Post de um Edge: principal, tela de perguntas, tela de fim de jogo, escolha de
Post graph.facebook.com /{node-id}/{edge-name} fases, entre outras. Nessa fase já era possível efetuar testes nas
telas de perguntas. Em seguida, foi implementada a integração
Para facilitar o uso da Open Graph API, a versão com a API do Facebook, integrando a seção de login, registro
desenvolvida para Android conta com a classe de pontos, para que o jogo ficasse mais interessante, e nessa
GraphRequestAsyncTask.java, que encapsula as chamadas fase já foi possível criar a Activity de login da aplicação.
HTTP em uma classe que herda de AsyncTask.java, afim de Finalmente, foi feita a integração com o Google Cloud
não executar requisições HTTP na UI Thread [18], o que é Endpoints para atualizar as perguntas sempre que necessário.
mandatório para esse tipo de requisições no sistema Android. Resumidamente, o diagrama da aplicação é representado
Com esse encapsulamento, fica mais fácil efetuar as conforme a Figura 2.
requisições, economizando tempo por não ser necessário
implementar as próprias requisições.
Dessa forma, um exemplo de uso da classe
GraphRequestAsyncTask.java para acessar informações de
nome e e-mail de uma conta de usuário no Facebook é
representado na Figura 1.
A tabela criada para armazenar as questões não se
enquadrou na primeira forma normal: “A normalização para a
primeira forma normal elimina grupos repetidos” [12]. Optou-
se por essa estrutura, tendo em vista sua simplicidade de
aplicação a qual já atende às necessidades requeridas. A partir
da construção do banco de dados da forma proposta, o
diagrama de classe do projeto do banco é representado
conforme a Figura 3.
.

Figura 2: Diagrama simplificado do projeto

A. SQLite
Foi criada a instância de um banco de dados SQLite para
armazenamento das perguntas. Para tanto, foram criadas três
classes: a classe de contrato QuizContract.java, onde é
armazenado o nome do banco de dados, o nome da tabela e o
Figura 3: Diagrama de Classes do banco de dados
nome de cada coluna da tabela; a classe QuizDbHelper.java,
que estende a classe abstrata da API do Android B. Facebook integration
SQLiteOpenHelper.java, sendo essa a classe principal do A API do Facebook possui diversas funcionalidades, porém,
banco de dados, pois a criação da mesma é mandatória no nesse aplicativo serão utilizadas as seguintes funcionalidades:
Android para o uso do SQLite. Nela insere-se o código de Login, Post e Ranking.
criação de tabelas no método onCreate; e a classe Para fazer a integração com o Facebook, o primeiro passo
QuizDAO.java, que é uma extensão da classe foi adicionar a seguinte linha no arquivo build.gradle do
QuizDbHelper.java, na qual centralizam-se todos os métodos módulo app [22] para adicionar a biblioteca do Facebook ao
públicos que contenham as regras de negócio da aplicação e a projeto.
separação das regras de manutenção do banco de dados, que
ficarão na classe QuidDBHelper.java. A Tabela III mostra a compile 'com.facebook.android:facebook-android-
tabela a ser criada no banco de dados. sdk:4.6.0'
TABELA III – COLUNAS DA TABELA DE PERGUNTAS
Em seguida, adicionou-se a seguinte linha, necessária para
COLUNA TIPO inicializar a API do Facebook. Recomenda-se adicionar essa
INTEGER PRIMARY KEY linha na Activity Lançadora [21] do aplicativo, pois ela é a
ID AUTOINCREMENT
primeira Activity a ser executada:
QUESTION TEXT NOT NULL
ANSWER1 TEXT NOT NULL FacebookSdk.sdkInitialize(getApplicationContext());
ANSWER2 TEXT NOT NULL
1) Login:
ANSWER3 TEXT NOT NULL
A API do Facebook disponibiliza um botão de login, que
ANSWER4 TEXT NOT NULL funciona de forma semelhante ao botão fornecido pela API do
ANSWER5 TEXT NOT NULL Android. Este botão vem com a aparência e os eventos de
RIGHT_ANSWER INTEGER NOT NULL clique implementados com as necessidades de login do
Facebook. Foi adicionado esse botão na tela inicial do
Aplicativo, à classe LoginActivity.java. A adição desse botão linha do tempo do jogador, pois a postagem terá o nome da
de login no XML de layout da Activity é feita de forma aplicação e um link para qualquer pessoa poder obter o
simples, bastando adicionar a tag LoginButton no XML de aplicativo.
layout da Activity, conforme representado na Figura 4. Para efetuar o post na linha do tempo, foi executado um
objeto da classe GraphRequestAsyncTask.java vindo do
método estático newPostRequest da classe GraphRequest.java,
como mostrado a seguir:

Cria-se um objeto JSON com as informações do post


representado na Figura 7.

Figura 4: Tag de LoginButton a ser adicionado no XML de layout da


Activity

Além do que, é necessário adicionar a declaração da Activity


de Login ao arquivo manifest.xml, conforme representado na
Figura 5.

Figura 5: Tag da Activity de login do Facebook


Figura 7: Objeto do tipo JSONObject com as informações do novo Post de
Facebook
A qual corresponde à Activity que o Facebook executará
quando o botão de login for acionado. O evento do botão de A seguir, executa-se um objeto instanciado da classe
login do Facebook precisa ser sobrescrito no código da GraphRequestAsyncTask.java, vindo do método estático
Activity através dos métodos: onSuccess, onCancel e onError newPostRequest da classe GraphRequest.java, como
para adicionar as ações desejadas pelo aplicativo, conforme representado na Figura 8.
representado na Figura 6.

Figura 8: Exemplo de execução do objeto GraphRequest

3) Ranking:
A implementação do ranking via Facebook é dividida em
duas etapas: na primeira, a criação de score do jogador (parte
em que o usuário insere ou atualiza a pontuação) e a segunda,
Figura 6: Método de retorno do login do Facebook
a visualização do ranking (permite visualizar a pontuação
atual do jogador e de seus amigos). É importante observar que,
2) Post:
esta implementação não mostra a pontuação total de todos os
Os posts automáticos na linha do tempo do Facebook serão
jogadores [13].
feitos com o consentimento do usuário, que inclusive, é
mandatório para uso de posts do Facebook em qualquer
4) Criação de score
aplicação [19]. O intuito dessa funcionalidade é oferecer ao
Para criar um score novo, o primeiro passo é criar um
usuário a possibilidade de enviar uma pergunta acertada ou sua objeto JSON com o valor da pontuação, como representado na
pontuação final à sua linha do tempo em sua página pessoal do Figura 9.
Facebook para que seus amigos possam ver. Em contrapartida,
o aplicativo ganhará uma propaganda a cada postagem na
Figura 9: Objeto do tipo JSONObject com o novo score a ser submetido

Em seguida, é feita uma requisição post para a url:


/{userid}/scores como representado na Figura 10.
Figura 12: Tela de escolha do módulo do Google Cloud Endpoints

Com isso, é criada automaticamente a classe


MyEndpoint.java que será usada para escrever os métodos de
Web Service que serão usados na aplicação.
Em seguida foi adicionado o seguinte método que será
usado no Web Service para a atualização de perguntas,
conforme a Figura 13.

Figura 10: Request de um novo score

a) Visualização do ranking
Com o intuito de reaproveitar o ranking em Activities
diferentes, foi implementado o código de mostrar o ranking
dentro de um Fragment [20].
A fim de coletar a lista de nomes e pontuações do ranking, a
seguinte é necessário efetuar uma requisição para a url:
/{appid}/scores como representado na Figura 11.

Figura 13: Requisição de carregamento de novas perguntas via Web


Service

Figura 11: Requisição de ranking para um usuário


D. Relative Layout
Todas as Activities desse projeto foram feitas usando
Essa requisição retornará um objeto JSON contendo a lista Relative Layout, entretanto, nesse trabalho será mostrado
de usuários e pontuações que deve ser usada para montar o apenas o layout mais importante do aplicativo, a tela de
Fragmento de ranking. perguntas, onde existem diversos elementos que foram
disponibilizados. Na execução desse projeto, procurou-se ao
C. Google Cloud Endpoints
máximo evitar o uso de medidas estáticas na parametrização
A adição de uma estrutura de aplicação do lado do servidor da altura e largura dos elementos, fazendo com que o layout
do Google Cloud Endpoints é feita no IDE Android Studio, fique mais flexível e abrangendo diferentes tamanhos de tela.
que é o mesmo IDE utilizado para o desenvolvimento dos A tela de perguntas foi feita inteiramente sem o uso de
aplicativos Android, de forma que o desenvolvedor poderá medidas estáticas, sempre utilizando o início, meio e fim do
trabalhar concomitantemente nos aplicativos e no sistema de Layout Parent ou dos elementos como referência para o
segundo plano. posicionamento de cada um. Inicialmente, a tela foi construída
A adição dessa solução de aplicação do lado do servidor no via Interface Gráfica do Android Studio. Com o aumento do
Android Studio é feita inserindo um novo módulo do tipo: número de elementos, passou-se a alterar diretamente o
Google Cloud Module, conforme mostrado na Figura 12. arquivo de layout no formato Extensible Markup Language
(XML) devido à grande dificuldade na edição via Interface
Gráfica. A figura 14 demonstra a tela de perguntas com os
elementos e como funciona o relacionamento entre eles:
android:layout_alignTop="@+id/buttonCoach
"
10 buttonEscape android:layout_alignParentEnd="true"
android:layout_below="@+id/buttonCoach"
android:layout_alignLeft="@+id/buttonCheeri
ng"
textViewCheeringBu android:layout_alignRight="@+id/buttonChee
11 tton ring"
android:layout_below="@+id/buttonCoach"
android:layout_alignLeft="@+id/buttonCoach
"
textViewCoachButto android:layout_alignRight="@+id/buttonCoac
12 n h"
android:layout_below="@+id/buttonEscape"
android:layout_alignLeft="@+id/buttonEscape
"
textViewEscapeButt android:layout_alignRight="@+id/buttonEsca
13 on pe"

IV. RESULTADOS
Foram encontradas grandes dificuldades no uso da API do
Facebook devido aos termos de política de privacidade, falta
de documentação e complexidade no uso da API Open Graph,
além de que poucos desenvolvedores utilizam essa API,
complicando a pesquisa por resoluções de problemas e por
melhores práticas. Além disso, o Facebook requer um controle
bastante rigoroso para implantar o aplicativo em produção,
Figura 14: Tela de perguntas usando Relative Layout requerendo até a confecção de um vídeo para liberar seu uso
[14]. Em contrapartida, encontrou-se grande facilidade no uso
A tela de perguntas apresentada acima foi criada utilizando da API do Google Cloud Endpoints. De início, a integração
os seguintes parâmetros nos elementos da tela: com o Android Studio auxilia bastante e seu uso é facilitado
por classes semiprontas entregues no momento da criação do
módulo do Google Cloud EndPoints. O uso do Relative
TABELA IV – ELEMENTOS DA TELA DE PERGUNTAS Layout é sem dúvida uma facilidade para a confecção de
Nro ID Parâmetros layouts da Interface Gráfica no Android. No entanto, seu uso
textViewRoundNum de forma indiscriminada pode causar maiores complicações.
1 ber android:layout_alignParentStart="true" Montar um Relative Layout pela interface gráfica do Android
android:layout_alignParentTop="true" Studio apresenta certa dificuldade quando o número de
android:layout_alignParentRight="true"
android:layout_toEndOf=
elementos se torna grande, nesse ponto alguns exemplos
2 card_view_question "@+id/textViewRoundNumber" seriam em posicionar os elementos nos pontos exatos, visto
android:layout_alignParentStart="true" que tais elementos começam a se posicionar em locais que o
android:layout_alignParentEnd="true" desenvolvedor não teve a intenção. Outro complicador refere-
card_view_radio_an android:layout_below=
se à hora de alterar os layouts já concluídos, seja para remover
3 swers "@+id/card_view_question"
android:layout_below= ou alterar a posição de determinados elementos. Como os
"@+id/card_view_radio_answers" elementos encontram-se relacionados reciprocamente, as
4 textViewScore android:layout_alignParentStart="true" mudanças em alguns deles fazem o layout inteiro se desajustar.
android:layout_below= Em muitos casos foi necessário alterar os Relative Layouts
"@+id/card_view_radio_answers"
android:layout_alignEnd=
manualmente no XML a fim de encontrar a posição ideal para
5 button_answer "@+id/card_view_radio_answers" determinados elementos ou para alterar a posição dos mesmos.
android:layout_below="@+id/button_answer"
android:layout_alignParentEnd="true"
6 adView android:layout_alignParentStart="true"
android:layout_below="@+id/adView"
7 textViewHelp android:layout_alignParentStart="true"
android:layout_below="@+id/textViewHelp"
8 buttonCheering android:layout_alignParentStart="true"
android:layout_alignTop="@+id/buttonCheeri
ng"
9 buttonCoach android:layout_centerHorizontal="true"
Abaixo seguem algumas telas mais relevantes ao trabalho C. A tela principal do aplicativo contém as fases que o
referente ao jogo concluído. usuário pode escolher, conforme mostrado na Figura 17.
A. O jogo inicia com a tela de login onde o usuário pode
escolher entre efetuar a autenticação via Facebook ou
efetuar o login anônimo conforme mostrado na Figura 15.

Figura 17: Tela de seleção de rodadas

Figura 15: Tela de Login da aplicação D. A tela de jogo é a tela principal da aplicação, a qual
contém as perguntas e as respostas do Quiz, conforme
B. A tela principal do aplicativo, apresenta um Menu mostrado na Figura 18.
lateral com opções de compartilhar, visualizar ranking, chat
da torcida, limpar score e logout, conforme mostrado na
Figura 16.

Figura 18: Tela de perguntas


Figura 16: Menu lateral com funcionalidades da aplicação
E. A tela de pergunta errada contém um Fragmento com o [6] Google Cloud Platform. Overview of Cloud Endpoints.
https://cloud.google.com/appengine/docs/java/endpoints/. (acesso em
Ranking do Facebook e um botão para fazer o post da
junho/2016)
pergunta no Facebook, conforme mostrado na Figura 19. [7] Facebook for developers. Visão geral da Graph API. Disponível na
Internet. https://developers.facebook.com/docs/graph-api/overview/.
(acesso em março/2016)
[8] GRIFFITHS, Dawn; GRIFFITHS, David. Head First Android
Development. Ed. O’Reilly Media, 2015
[9] Android Developer. Activity. Disponível na Internet.
https://developer.android.com/guide/components/activities.html. (acesso
em junho/2016)
[10] NoSQL. Your Ultimate Guide to the Non-Relational Universe.
http://nosql-database.org. (acesso em junho/2016)
[11] SQLite. Appropriate Uses for SQLite. Disponível na Internet.
http://www.sqlite.org/whentouse.html (acesso em março/2016)
[12] HURT, Robert. Sistemas de Informações Contábeis. Conceitos, 3 ed.
[13] Facebook for developers. Pontuações e Conquistas. Disponível na
Internet. https://developers.facebook.com/docs/games/services/scores-
achievements (acesso em abril/2016)
[14] Facebook for developers. Revisão da Open Graph. Disponível na
Internet. https://developers.facebook.com/docs/apps/review/opengraph
(acesso em abril/2016)
[15] GitHub. About Github. https://github.com/about. (acesso em
junho/2016)
[16] Lee, Carlos Eduardo. Cori_quiz. https://github.com/ckilee/cori_quiz.
(acesso em junho/2016)
[17] Lee, Carlos Eduardo. Corinthians Quiz Game.
https://play.google.com/store/apps/details?id=frolic.br.coriquiz. (acesso
em junho/2016)
[18] Android Developer. Communication with the UI Thread.
https://developer.android.com/training/multiple-threads/communicate-
ui.html. (acesso em junho/2016)
Figura 19: Tela de resposta errada
[19] Facebook for developers. Post/{post-id}. Disponível na internet.
https://developers.facebook.com/docs/graph-api/reference/v2.6/post/
V. CONCLUSÕES (acesso em março/2016)
[20] Android Developer. Fragmentos.
O resultado do projeto foi a criação de um jogo na https://developer.android.com/guide/components/fragments.html?hl=pt-
plataforma Android disponibilizado no Google Play. Foi feito br (acesso em junho/2016)
um aplicativo do tipo jogo de perguntas e respostas (Quiz [21] Android Developer. Especificar a atividade da tela de início do
aplicativo. https://developer.android.com/training/basics/activity-
Game) utilizando o tema “time do Corinthians” contendo lifecycle/starting.html#launching-activity. (acesso em junho/2016)
conceitos básicos do Android, bem como, uso de APIs [22] Android Developer. Configure Your Build.
específicas do Google Cloud Endpoints e da API do https://developer.android.com/studio/build/index.html (acesso em
junho/2016)
Facebook. O código do projeto possui suas versões
controladas no site GitHub [15] e pode ser acessado por meio
do link [16]. O aplicativo oficial pode ser acessado na Google Carlos Eduardo Ki Lee nasceu em São Paulo,
Play Store por meio do link [17]. SP, em 24 de março de 1984. Formado em
Este trabalho serviu de base para a criação da primeira técnico em eletrônica pelo Liceu de Artes e
Ofícios e Engenheiro de Computação pela
versão em produção. O aplicativo continuará sendo atualizado Universidade Federal de São Carlos, além do
com o tempo, tendo o seu escopo aumentado de acordo com o MBA em Gestão de Projetos e Negócios pela
número de downloads e opiniões dos usuários. FIA-Fundação Instituto de Administração. Desde
então, trabalhou em empresas de tecnologia como
Especialista em Sistema, Engenheiro de Software
REFERÊNCIAS e Analista de Sistemas. Atualmente trabalha como Analista de Sistemas
[1] SANTINO, Renato. Como o Google ganha dinheiro com o Android? sênior na empresa Tata Consultancy desenvolvendo projetos de tecnologia no
(on-line). Disponível na Internet. cliente Mapfre. Possui vasta experiência com gestão e desenvolvimento de
http://olhardigital.uol.com.br/noticia/como-o-google-ganha-dinheiro- projetos de sistemas, além do que desenvolve aplicativos Android nos
com-o-android/47580. (acesso em maio/2016) momentos livres.
[2] Android Studio. Android Studio - The Official IDE for Android.
https://developer.android.com/studio/index.html. (acesso em
junho/2016) João Marco de Paula Santana nasceu em
[3] Android Developer. Package Index. Disponível na Internet. Três Corações, MG, em 7 de março de 1990.
http://developer.android.com/reference/packages.html. (acesso em Possui os títulos: Bacharelado em Sistemas de
junho/2016) Informação (FAI, 2011), Curso de Pós-
[4] Android, Downloading the Source. Disponível na Internet. graduação em Desenvolvimento Ágil de
https://source.android.com/source/downloading.html. (acesso em Aplicativos para Web e Dispositivos Móveis
junho/2016) (FAI, 2014).
[5] SQlite, About SQLite. Disponível na Internet. De 2011 a 2014, trabalhou na Leucotron
http://www.sqlite.org/about.html. (acesso em junho/2016) como analista de software. Atualmente é
especialista em sistemas no Instituto Nacional
de Telecomunicações (Inatel) e desenvolvedor de aplicativos móveis. Tem
experiência com desenvolvimento de software em Java e tecnologias web
tanto para aplicações corporativas quanto para aplicativos móveis. Possui
vários aplicativos na loja do Google e projetos open-source no Github.

Você também pode gostar