• Nenhum resultado encontrado

Biblioteca Digital do IPG: Relatório de Projeto - AutoRadio para dispositivos Android

N/A
N/A
Protected

Academic year: 2021

Share "Biblioteca Digital do IPG: Relatório de Projeto - AutoRadio para dispositivos Android"

Copied!
52
0
0

Texto

(1)
(2)

Instituto Politécnico da Guarda

Escola Superior de Tecnologia e Gestão

AutoRadio para dispositivos Android

Ivo Rocha - no 1009255

Projeto Aplicado no Curso

de Engenharia Informática em contexto de estágio

(3)

Instituto Politécnico da Guarda

Escola Superior de Tecnologia e Gestão

AutoRadio para dispositivos Android

Ivo Rocha - no 1009255

Projeto Aplicado no Curso

de Engenharia Informática em contexto de estágio

Supervisor: António Gil Diretor Geral da empresa Dom Digital

-Consultoria e Serviços Internet

Docente Orientador: Mestre Paulo Jorge Costa Nunes, Professor

Adjunto da Unidade Técnico-Cientíca de Informática da ESTG.

(4)

Agradecimentos

O desempenho no desenvolvimento deste projeto em contexto de estágio não teria sido o mesmo sem o apoio de algumas pessoas, às quais gostaria de aqui expressar o meu reconhecimento.

Um agradecimento aos professores da Unidade Curricular Projeto de Informática, Prof. Paulo Nunes e Prof. Noel Lopes.

Um agradecimento à Diretora da Escola Superior de Tecnologia e Gestão, Professora Doutora Maria Clara Silveira pelo seu apoio e disponibilidade.

Um agradecimento ao Diretor da empresa Dom Digital, António Gil pelo apoio, liderança e pela forma como me integrou na equipa.

Um agradecimento a todos os colegas de equipa da Dom Digital com os quais tive o privilégio de trabalhar, em especial ao Pedro Ribeiro e ao Paulo Fonseca.

Finalmente, um agradecimento muito especial à minha namorada pela compreensão, paciência, carinho e apoio que sempre demonstrou.

(5)

Resumo

A evolução tecnológica permitiu que os dispositivos móveis se tenham integrado na vida das pessoas, e hoje é muito comum um simples telemóvel ter acesso GPS, TV, jogos, acesso à internet e muito mais, tal como um computador, e, desta forma, o crescimento para desenvolver aplicações móveis para estes dispositivos, tem vindo a aumentar bastante.

Este documento descreve o trabalho realizado no âmbito da disciplina Projeto de Informática na Licenciatura em Engenharia Informática da Escola Superior de Tec-nologia e Gestão no Instituto Politécnico da Guarda.

O trabalho consistiu no desenvolvimento de uma aplicação para dispositivos móveis, nomeadamente para tablet's embutidos em automóveis, com o sistema operativo Android, permitindo ao utilizador ter acesso a conteúdos da Rádio Nacional An-tena3, tal como: ouvir a rádio, ouvir podcasts, consultar a programação, partilhar em redes sociais, telefonar para a rádio, etc. Também foi criada uma plataforma de gestão, apenas direcionada para a rádio, onde será guardada toda a informação sobre os ouvintes que utilizam a aplicação.

(6)

Abstract

The technological evolution allowed mobile devices integration in people's lives, and today is a very common mobile access to GPS, TV, games, Internet access and much more, such as a computer, and therefore, growth to develop mobile applications to these devices, has increased considerably.

This document describes the work done within the discipline of "Projeto de Infor-mática"with a degree in Engenharia Informática from Escola Superior de Tecnologia e Gestão da Guarda.

The work consisted to develop an application for mobile devices, particularly for tablets embedded in cars, with the Android operating system, allowing the user to access the contents of the Nation Radio Antena3, as listening to the radio, listen to podcasts, see the schedule, share on social networks, call to the radio, etc. .. It was also created a management platform only directed to the radio where all information will be stored about the listeners who use the application.

(7)

Conteúdo

1 Introdução 11 1.1 Instituição de acolhimento . . . 12 1.2 Motivação . . . 12 1.3 Solução . . . 12 1.4 Estrutura do documento . . . 12

2 Denição do problema e objetivos previstos 14 2.1 Denição do problema . . . 14

2.2 Objetivos previstos . . . 15

3 Metodologia e resultados esperados 16 3.1 Metodologia . . . 16

3.2 Descrição das tarefas . . . 16

3.3 Resultados esperados . . . 17

4 Tecnologias utilizadas 18 4.1 Sistema operativo Andoid . . . 18

4.2 Programação Android . . . 18

4.3 API com a rede social Facebook . . . 19

4.4 API com a rede social Twitter . . . 20

4.5 RSS feeds . . . 20

4.6 Serviços web . . . 21

4.6.1 Serviço web da musiXmatch . . . 22

4.6.2 Serviço web Twilio . . . 23

4.7 Salesforce.com . . . 23

4.8 Android Crash Reports . . . 24

5 Trabalho realizado 26 5.1 Ciclo de vida de uma aplicação Android . . . 26

5.1.1 Máquina de estados . . . 27

5.2 FrontOce - A aplicação Android . . . 29

5.2.1 Arquitetura das tecnologias utilizadas . . . 29

5.2.2 A aplicação Android . . . 30

5.2.2.1 Activity principal - Modo Interativo . . . 31

5.2.2.2 Activity principal - Modo Radio . . . 33

5.2.2.3 Activity Podcasts . . . 34

5.2.2.4 Activity Trânsito . . . 34

(8)

5.2.2.5 Activity Programas . . . 34

5.2.2.6 Activity Settings . . . 36

5.2.2.7 Janela de diálogo Call Radio . . . 38

5.2.2.8 Janela de diálogo Lyrics . . . 38

5.2.2.9 Janela de diálogo MyRecords . . . 38

5.3 BackOce . . . 40

5.3.1 Base de Dados . . . 40

5.3.1.1 Descrição das tabelas . . . 40

5.3.2 Páginas de visualização de dados . . . 42

5.3.3 Grácos . . . 43

6 Conclusões e trabalho futuro 45 6.1 Conclusões . . . 45

6.2 Trabalho Futuro . . . 45

(9)

Lista de Figuras

3.1 Mapa de Gantt. . . 17

4.1 Letra música Burn It Down e artista Linkin Park. . . 22

5.1 Ciclo de vida de uma aplicação Android [1] . . . 28

5.2 Serviços na aplicação. . . 29

5.3 Activity em modo de rádio interativa. . . 31

5.4 Activity em modo de rádio . . . 34

5.5 Activity Podcasts . . . 35

5.6 Activity Transito . . . 35

5.7 Activity Programas. . . 36

5.8 Activity Settings. . . 37

5.9 Diálogo Call Radio. . . 37

5.10 Diálogo Lyrics . . . 38

5.11 Diálogo MyRecords . . . 39

5.12 Base de dados - Relações entre tabelas . . . 40

5.13 Salesforce - Lista de ouvintes recentes. . . 42

5.14 Salesforce - Detalhes de um ouvinte. . . 43

5.15 Salesforce - Mapa de audiência. . . 44

5.16 Salesforce - Gráco músicas mais ouvidas . . . 44

A.1 Interactive Radio . . . 49

(10)

Lista de Tabelas

4.1 Métodos da API do Facebook. . . 19 4.2 Métodos da API Twitter4j. . . 20 4.3 Métodos do serviço web musiXmatch. . . 22

(11)

Lista de listagens

1 Exemplo de uma aplicação Android. . . 19

2 Função de partilha de uma mensagem na rede social Facebook. . . 20

3 Função de partilha de uma mensagem na rede social Twitter. . . 20

4 Exemplo de documento de feed [14]. . . 21

5 Obter o lyrics de uma música. . . 22

6 Código para efetuar uma chamada através da Internet com o Twilio. . 23 7 Código para inserir um registo na tabela SocialActivity no Salesforce. 24 8 Código de exemplo para implementar o sistema de relatórios de erro. 25

(12)

Glossário

• Activity  É uma classe interface que gera e controla a interface gráca do utili-zador no sistema operativo Android.

• ACRA  Application Crash Report for Android - É uma library que permite às aplicações Android enviarem automaticamente relatórios de erros para um formulário GoogleDocs.

• API  Application Programming Interface - É um conjunto de funções e padrões estabelecidos por um software para a utilização das suas funcionalidades em aplica-ções.

• Blog  É um site cuja estrutura permite a atualização rápida a partir de acréscimos dos chamados artigos, ou posts.

• Classe  Modelo abstrato para criar objetos.

• CRM  Customer relationship management (Gestão de relação com o Cliente) • Eclipse  É um IDE desenvolvido em Java, seguindo um modelo open source de

desenvolvimento de software.

• Feeds  É um formato de dados, usado em formas de comunicação, com conteúdo atualizado frequentemente.

• Frictionless Sharing  Termo utilizado para descrever a partilha de recursos em redes sociais, sem interação do utilizador após este a permissão deste.

• GPS  Global Positioning System - Sistema de posicionamento global - É um sistema de navegação por satélite que fornece a um aparelho recetor móvel a posição geográca do mesmo.

• IDE  Integrated Development Environment - Ambiente Integrado de Desenvolvi-mento - É um programa que reúne características e ferramentas de apoio ao desen-volvimento de software com o objetivo de agilizar o processo.

• Interface  Em Java, uma interface é um conjunto de tipos de métodos que as classes podem implementar.

• Internet  O maior conjunto de redes de dados do mundo, tendo em comum apenas a utilização do protocolo TCP/IP.

• IP  Internet Protocol - É um protocolo de comunicação usado entre duas ou mais máquinas em rede para encaminhamento de dados.

• Java  É uma linguagem de programação orientada a objetos da Sun Microsystems.

(13)

10

• Library  Coleção de subprogramas utilizados no desenvolvimento de software. • Lyrics  Letra de uma música.

• NetBeans  É um IDE gratuito e de código aberto para desenvolvimento nas linguagens Java, C, C++, PHP, etc.

• RTSP  Real Time Streaming Protocol - É um protocolo a nível de aplicação, para controlo na transferência de dados com propriedades de tempo real.

• SDK  Software Development Kit - Kit de Desenvolvimento de Software. • SO  Sistema Operativo.

• Trigger  É um recurso de programação, tipicamente usado em base de dados, executado sempre que o evento associado ocorrer.

• Plugin  É um programa de computador usado para adicionar funcionalidades a outros programas maiores, provendo alguma funcionalidade especial ou muito espe-cíca.

• XML  Extended Markup Language - É uma linguagem de descrição documental para utilização em ambientes de Internet.

(14)

Capítulo 1

Introdução

O presente relatório descreve o projeto em contexto de estágio desenvolvido pelo aluno Ivo Tiago Ramos Rocha, na empresa Dom Digital - Consultoria e Serviços Internet, no âmbito da disciplina de Projeto de Informática na Escola Superior de Tecnologia e Gestão no Instituto Politécnico da Guarda.

O projeto consistiu em desenvolver uma aplicação para o sistema operativo Android denominada AutoRadio. Esta aplicação destina-se nomeadamente aos automobilis-tas ouvintes da Rádio Nacional Antena3 pela Internet. Para uso da aplicação Auto-Radio é necessário um equipamento que funcione com o sistema Android, como por exemplo, um smartphone ou um tablet.

O conceito de tablet surgiu em 1968 por Alan Kay, cientista americano da computa-ção e pioneiro em áreas como interfaces grácas e programacomputa-ção orientada a objetos [12]. O fenómeno dos tablets, que parece ser a principal aposta da indústria de tecnologia a partir do ano 2010 [9], impulsionado pelo sucesso do modelo da Apple, tornou possível o aparecimento de tablets em diferentes versões, tamanhos, cores e funcionalidades de diversas empresas, tais como Asus, Samsung e Sony. Segundo os dados da Gartner, em 2010 existiam aproximadamente 20 milhões de tablets comer-cializados, e até 2014 são esperados mais de 208 milhões de aparelhos no mercado. Atualmente, a industria automóvel está a incluir tablets nos seus automóveis, da mesma forma como incluiu o navegador GPS, o leitor de MP3, o leitor de CD o leitor de cassetes e o rádio. A inclusão de um tablet num automóvel permite aos seus ocupantes usufruir de muitos serviços com grande facilidade, como por exemplo, acesso a emissões, quer de estações de rádio, quer de televisão, acesso à internet, chamadas telefónicas por internet, acesso a conteúdos de áudio e vídeo.

O projeto enquadra-se no âmbito e complexidade adequada às competências adqui-ridas no curso:

• Autonomia e capacidade de denir objetivos • Capacidade de modelação de problemas

• Saber elaborar relatórios de análise, desenho e implementação de soluções • Gestão do tempo e cumprimento de prazos

(15)

CAPÍTULO 1. INTRODUÇÃO 12

O projeto realizado obedeceu às seguintes condições:

• Ter a duração de aproximadamente três meses e uma carga horária com a opção de combinação projeto/formação entre a instituição de acolhimento e o aluno. O estágio teve inicio no dia 3 de Março de 2012 e terminou a 10 de Julho de 2012.

• Ter um orientador docente da Unidade Técnico-Cientíca de Informática da ESTG do Instituto Politécnico da Guarda, ou outro, assim como um supervisor direto na empresa.

• Ter um plano de desenvolvimento aprovado pelo diretor de curso.

1.1 Instituição de acolhimento

A Dom Digital é uma empresa que presta serviços tendo como base a infra-estrutura da Internet. Foi fundada em Janeiro de 1997 na cidade da Guarda. Esta é uma empresa que acredita no futuro, onde as tecnologias da Internet farão cada vez mais parte da vida das empresas. Tem como missão criar soluções criativas, com base em tecnologia ável, que cria valor acrescentado ao negócio dos seus clientes; prestar serviços de excelência e contribuir para o desenvolvimento da Internet portuguesa na sua componente social.

1.2 Motivação

A principal motivação para o desenvolvimento deste projeto é a possibilidade de poder trabalhar com novas tecnologias, com as quais nunca tive oportunidade de trabalhar, principalmente para o desenvolvimento de aplicações móveis para o sis-tema operativo Android. Também a possibilidade em poder reforçar a marca da Rádio, alargar a sua audiência para uma escala global, delizar a audiência atual, conhecer melhor as audiências e agregar facilmente outros conteúdos de qualidade.

1.3 Solução

A solução proposta consiste em desenvolver uma aplicação para tablets Android com um FrontOce, onde os ouvintes da rádio poderão consultar conteúdos únicos da Rádio Nacional Antena3, entre outras funcionalidades e um BackOce em que permitirá, aos administradores da rádio, obter um conjunto de dados sobre as suas audiências, gostos musicais e distribuição geográca dos seus ouvintes, entre muitas outras.

1.4 Estrutura do documento

Este documento está organizado da seguinte forma:

(16)

CAPÍTULO 1. INTRODUÇÃO 13

• Capítulo 2 - Denição do problema e objetivos - apresentação do problema e dos objetivos do projeto.

• Capítulo 3 - Metodologia e calendarização - apresentação das metodologias usadas no desenvolvimento do trabalho realizado e a sua calendarização. • Capítulo 4 - Tecnologias utilizadas - neste capítulo são abordadas com algum

detalhe as tecnologias utilizadas na implementação do projeto.

• Capítulo 5 - Trabalho realizado - descrição detalhada do trabalho realizado e das tecnologias utilizadas durante o projeto.

• Capítulo 6 - Conclusões e trabalho futuro - considerações nais sobre o traba-lho desenvolvido e possível trabatraba-lho futuro.

(17)

Capítulo 2

Denição do problema e objetivos

previstos

2.1 Denição do problema

Desenvolver uma aplicação para dispositivos móveis, nomeadamente para tablets embutidos em automóveis, com o sistema operativo Android, permitindo aos utili-zadores ter acesso à emissão online da Rádio Antena3. A aplicação deve fornecer as seguintes funcionalidades: ouvir podcasts, consultar a programação, partilhar em redes sociais, telefonar para a rádio, etc. Também foi criada uma plataforma de ges-tão apenas direcionada para a rádio, onde será guardada toda a informação sobre os ouvintes que utilizam a aplicação.

Para o desenvolvimento deste projeto, será preciso ultrapassar alguns problemas para obter a informação a disponibilizar na aplicação. Todo o conjunto destas informações terá que ser obtido através do acesso da aplicação à Internet.

Os principais problemas a resolver são os seguintes:

• Como obter os dados da música ou programa que está atualmente a tocar na rádio;

• Como reproduzir o que está a ser reproduzido na rádio, na aplicação; • Como obter os diversos podcasts e programação da rádio;

• Como obter a letra da música que está a tocar no momento; • Como integrar a aplicação nas redes sociais;

• Como centralizar toda a informação dos ouvintes num único lugar para esta-tísticas da rádio;

• Como permitir à aplicação efetuar chamadas através da Internet para a rádio; • Como obter informações da situação das estradas, por exemplo: obras,

sinis-tralidade, tráfego, etc. e disponibilizá-las num mapa.

(18)

CAPÍTULO 2. DEFINIÇÃO DO PROBLEMA E OBJETIVOS PREVISTOS 15

2.2 Objetivos previstos

A seguir segue uma lista dos principais objetivos denidos no início deste projeto. Dependendo de vários fatores estes poderão ser ou não implementados.

Objetivos a atingir:

• Desenvolver uma aplicação móvel em Android para a rádio Antena3; • Integrar a informação da rádio na aplicação;

• Relacionar os dados dos ouvintes, como por exemplo, gostos musicais, músicas mais ouvidas, etc. para estatísticas da rádio através de relatórios e grácos; • Permitir aos ouvintes partilhar o que ouvem na aplicação nas redes sociais; • Integrar um sistema de chamadas VoIP permitindo aos ouvintes falar com os

locutores da rádio, de forma gratuita;

(19)

Capítulo 3

Metodologia e resultados esperados

3.1 Metodologia

Para o desenvolvimento deste projeto foi utilizada uma metodologia ágil, que consis-tiu em ter, todas as semanas, uma versão para entrega na empresa, e apenas no nal, documentar tudo. Então, a metodologia utilizada para desenvolver, implementar e testar a aplicação móvel é a seguinte:

1. Análise de sistema dos requisitos do projeto denindo as funcionalidades da aplicação móvel;

2. Implementação do projeto;

3. Realização de testes e análise da eciência e abilidade da aplicação; 4. Documentação do projeto num relatório.

3.2 Descrição das tarefas

As principais tarefas foram:

• Tarefa 1  Análise dos requisitos;

• Tarefa 2  Estudo do ciclo de vida de uma aplicação no sistema operativo Android;

• Tarefa 3  Aquisição e estudo das várias API's necessárias para o projeto; • Tarefa 4  Implementação da solução proposta;

• Tarefa 5  Testes da aplicação; • Tarefa 6  Elaboração do relatório.

O agendamento das tarefas é apresentado na gura 3.1.

(20)

CAPÍTULO 3. METODOLOGIA E RESULTADOS ESPERADOS 17

Figura 3.1: Mapa de Gantt.

3.3 Resultados esperados

No m deste projeto, espera-se que a aplicação esteja terminada e pronta para ser disponibilizada ao público. A aplicação deverá ser capaz de:

• Permitir a um ouvinte ouvir a rádio e saber o que está a tocar;

• Permitir que o ouvinte possa partilhar nas redes sociais denidas, o que está a ouvir, onde e como;

• Permitir que o ouvinte possa telefonar para a rádio;

• Permitir ao ouvinte consultar a programação da rádio e ouvir podcasts; • Permitir ao ouvinte denir o quê, e com quem pretende partilhar a informação

da aplicação;

• Permitir ao ouvinte gravar um programa/música para mais tarde ouvir de novo;

• Permitir ao ouvinte usar o sistema de GPS para consultar o estado das estra-das.

Na plataforma de gestão online deverá ser possível, para os administradores da rádio:

• Consultar relatórios e grácos com estatísticas dos seus ouvintes;

• Consultar um mapa de audiência permitindo saber onde se encontram distri-buídos os seus ouvintes em Portugal e no mundo;

(21)

Capítulo 4

Tecnologias utilizadas

O desenvolvimento da aplicação AutoRadio requer a utilização de diversas tecnolo-gias, descritas nas secções seguintes. Para cada uma delas é apresentado um pequeno exemplo de utilização com código escrito na linguagem de programação Java.

4.1 Sistema operativo Andoid

O Android é um sistema operativo baseado em Linux, para dispositivos móveis como smartphones e tablets, desenvolvido pela Open Handset Alliance, liderada pela empresa Google [5]. A primeira versão do Android foi apresentada em 20 Setembro de 2008, e atualmente encontra-se na versão 4.1 dada pelo nome Jelly Bean, lançada a 10 de Julho de 2012.

A Open Handset Alliance é um consórcio de 84 rmas que desenvolvem standards abertos para dispositivos móveis [4].

4.2 Programação Android

Para desenvolver aplicações para Android, normalmente é utilizada a linguagem de programação Java. No desenvolvimento de aplicações que requerem melhor de-sempenho, pode-se recorrer à linguagem de programação C para otimizar algumas funcionalidades.

As aplicações podem ser desenvolvidas, utilizando o ambiente de programação Eclipse e NetBeans, entre outros, sendo necessário recorrer à instalação de plugins e o SDK Android.

A listagem 1 apresenta um exemplo de uma aplicação de Hello World. Esta aplicação contém uma EditText, que é uma caixa para introdução de texto, um botão e uma TextView para apresentar uma mensagem. Após introduzir um nome na caixa de texto e premindo o botão, na TextView será apresentada uma mensagem de boas vindas.

(22)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 19

Listagem 1 Exemplo de uma aplicação Android. package android.ivo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView;

public class HelloWorld extends Activity { private EditText nameEditText;

private Button buttonSubmit; private TextView textViewMessage; @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

nameEditText = (EditText) findViewById(R.id.nameEditText); buttonSubmit = (Button) findViewById(R.id.buttonSubmit); textViewMessage = (TextView) findViewById(R.id.textViewMessage); buttonSubmit.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

textViewMessage.setText("Hello " + nameEditText.getText() + "!"); }

}); } }

4.3 API com a rede social Facebook

Para poder integrar a aplicação no Facebook, em primeiro lugar, foi preciso registá-la, seguindo certos passos necessários, para que tudo no m, funcione perfeitamente. Para tal, foi usado um tutorial disponibilizado na página de documentação da API, no Facebook [2].

Esta API utiliza o método SSO (Single Sign-On), que faz com que os utilizadores, que já tenham a aplicação Android do Facebook instalada nos seus dispositivos, não tenham que introduzir o username e password numa aplicação de externos (como é o caso da aplicação do projeto).

Alguns dos métodos disponibilizados pela API são apresentados na tabela 4.1.

Método Parâmetros de entrada Parâmetros de saída logout contexto:Context result:String isSessionValid result:Boolean

request graphPath:String, param:Bundle, http:String

Tabela 4.1: Métodos da API do Facebook.

A listagem 2, apresenta uma função em Java, que permite publicar uma mensagem no perl do utilizador. É através do método request, que todos os pedidos e envios são efetuados para o Facebook.

(23)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 20

Listagem 2 Função de partilha de uma mensagem na rede social Facebook. ...

public static AsyncFacebookRunner facebookAsyncRunner; ...

private void partilhaFacebook(String mensagem) { Bundle params = new Bundle();

params.putString("message", mensagem);

params.putString("name", "AutoRadio Antena3");

facebookAsyncRunner.request("me/feed", params, "POST", new postOnWallListener(), null); }

public class postOnWallListener extends BaseRequestListener {

public void onComplete(final String response, final Object state) { showToast("Atividade publicada no Facebook.");

}

public void onFacebookError(FacebookError error) {

showToast("Ocorreu um erro ao publicar a sua atividade no Facebook."); }

}

4.4 API com a rede social Twitter

O Twitter, atualmente, ainda não disponibilizou uma API proprietária para o sis-tema operativo Android, e após uma breve pesquisa, foram encontradas algumas, desenvolvidas pela comunidade. A API usada denomina-se Twitter4j [15].

A listagem 3 exemplica uma função com o m de partilhar uma mensagem no Twitter.

Listagem 3 Função de partilha de uma mensagem na rede social Twitter. private void partilhaTwitter(String mensagem) {

try {

twitter.updateStatus(mensagem);

showToast("Tweet publicado no seu Twitter."); } catch (TwitterException te) {

Log.e("MainActivity", "Ocorreu um erro ao publicar tweet: " + te); showToast("Ocorreu um erro ao publicar o seu tweet.");

} }

Alguns dos métodos disponibilizados pela API são apresentados na tabela 4.2.

Método Parâmetros de entrada Parâmetros de saída createFriendship userID:long beFriendUser:User getAccountSettings settings:AccountSettings

updateStatus status:String lastStatus:Status

Tabela 4.2: Métodos da API Twitter4j.

4.5 RSS feeds

Um feed é um formato de dados usado em formas de comunicação com conteúdo frequentemente atualizado [6]. Em sites onde ocorrem muitas atualizações, tais como

(24)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 21

blogs, sites de notícias, etc., é frequente terem feeds, e assim os utilizadores poderão subscrevê-los e então, passarão a ter toda a informação num único sítio, evitando que estes visitem frequentemente os sites.

A listagem 4 ilustra um exemplo de um documento de feed da Rádio Antena3, que contém as últimas músicas tocadas na rádio, referentes à data 2012-07-26 e hora 21:34:52.

Listagem 4 Exemplo de documento de feed [14].

<rss xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:t="http://www.rtp.pt" version="2.0"> <channel>

<title>

<![CDATA[ Antena3 / Últimas Músicas ]]> </title>

<link>http://www.rtp.pt</link> <name>Antena3</name>

<description>

<![CDATA[ Últimas músicas Antena3 ]]> </description>

<language>pt-pt</language>

<lastBuildDate>Thu, 26 Jul 2012 20:40:46</lastBuildDate> <category>Antena3 Rss</category>

<copyright> c 2011 RTP.PT, Gabinete Multimedia</copyright> <item>

<title>

<![CDATA[ These Boots Are Made For Walking ]]> </title>

<author>

<![CDATA[ Legendary Tigerman & Maria de Medeiros ]]> </author> <durationInt>221</durationInt> <durationTime>00:03:41</durationTime> <start_timeDate>2012-07-26T21:34:52.848</start_timeDate> <start_timeTime>21:34:52</start_timeTime> <hora>496444</hora> </item> <item> <title>

<![CDATA[ Lovers Lollypops ]]> </title>

<author>

<![CDATA[ Long Way To Alaska ]]> </author> <durationInt>177</durationInt> <durationTime>00:02:57</durationTime> <start_timeDate>2012-07-26T21:32:03.614</start_timeDate> <start_timeTime>21:32:03</start_timeTime> <hora>2028331</hora> </item> </channel> </rss>

4.6 Serviços web

Um serviço web é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aqueles que já existem. Como cada aplicação pode ter a sua própria "linguagem", esta é traduzida para uma linguagem universal XML [7].

(25)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 22

4.6.1 Serviço web da musiXmatch

O serviço web disponibilizado pela musiXmatch permite obter a letra de uma música (lyrics), com base no título e artista da música. Alguns dos métodos disponibilizados pelo serviço web [13] são apresentados na tabela 4.3. Este serviço fornece uma API, desenvolvida em Java, para facilitar as pesquisas e o tratamento de resultados.

Método Parâmetros de entrada Parâmetros de saída getMatchingTrack trackName:string, artistName:string track:Track

getLyrics trackID:int lyricBody:Lyric

Tabela 4.3: Métodos do serviço web musiXmatch.

A listagem 5 ilustra um exemplo da utilização do método getMatchingTrack para obtenção da letra da música com o título Burn It Down e artista Linkin Park. Na gura 4.1 é apresentado o resultado, ou seja a letra da referida musica.

Listagem 5 Obter o lyrics de uma música. ...

try {

Track track = musixMatch.getMatchingTrack("Burn It Down","Linkin Park"); TrackData data = track.getTrack();

Lyrics lyrics = musixMatch.getLyrics(data.getTrackId()); String lyricBody = lyrics.getLyricsBody();

} catch (MusixMatchException e) {

Log.e("MusicMatch", "Lyrics da música não foi encontrado"); }

...

The cycle repeated

As explosions broke in the sky All that I needed

Was the one thing I couldn't find And you were there at the turn Waiting to let me know We're building it up To break it back down We're building it up To burn it down We can't wait

To burn it to the ground The colors conflicted

As the flames climbed into the clouds I wanted to fix this

But couldn't stop from tearing it down ...

***** This Lyrics is NOT for Commercial use *****

(26)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 23

4.6.2 Serviço web Twilio

O Twilio é um serviço que disponibiliza API's para várias plataformas, sendo uma delas o Android [11]. Com o Twilio é possível efetuar chamadas sobre a rede IP, para a rede móvel, enviar mensagens de texto, chamadas de conferência, criar call center's, etc. Para utilizar este serviço é necessário efetuar um registo de utilizador. Para efeitos não comerciais é possível realizar chamadas gratuitas limitadas no tempo. Na aplicação AutoRadio é utilizado apenas o serviço de chamadas de voz do Twilio. A seguir, segue um exemplo na listagem 6, de uma função que efetua uma chamada para um determinado número de telefone, recebido como parâmetro da função. É através do método device.connect(), que a chamada é efetuada, recebendo como parâmetro, um número de telefone e uma Interface Listener para se programar os estados da chamada.

Listagem 6 Código para efetuar uma chamada através da Internet com o Twilio. public void connect(String phoneNumber) {

if (phoneNumber == null) { isInACall = false;

Log.e(TAG, "Numero de telefone nao pode ser null."); return;

}

Map<String, String> parameters = new HashMap<String, String>(1); parameters.put("PhoneNumber", phoneNumber);

connection = device.connect(parameters, new ConnectionListener(){

public void onDisconnected(Connection inConnection, int inErrorCode, String inErrorMessage) { Log.i(TAG, "DISCONNECTED_ERROR: " + inErrorMessage + " Code:" + inErrorCode);

isInACall = false; }

public void onDisconnected(Connection inConnection) { Log.i(TAG, "DISCONNECTED");

isInACall = false; }

public void onConnecting(Connection inConnection) { Log.i(TAG, "CONNECTING");

}

public void onConnected(Connection inConnection) { Log.i(TAG, "CONNECTED");

} });

if (connection == null) {

fireAfterErrorOcurred("Failed to create new connection"); this.isInACall = false; } else { this.isInACall = true; } }

4.7 Salesforce.com

O Salesforce é uma empresa líder de mercado mundial, em CRM. Esta plataforma na cloud, bastante exível, permite a uma empresa, gerir toda a sua relação com o cliente, desde a área comercial até ao atendimento [10].

(27)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 24

Neste projeto, o Salesforce foi usado para guardar toda a informação recebida pela aplicação Android. Para isto, o Salesforce fornece uma API para o sistema operativo Android, no qual permite enviar a informação da aplicação para a plataforma [8]. Na listagem 7 é exemplicado o envio de dados para a tabela SocialActivity em Salesforce, através de uma aplicação Android.

Listagem 7 Código para inserir um registo na tabela SocialActivity no Salesforce. public static void insertSalesforceSocialActivity(String mensagem, String socialNetwork) {

if (!(socialNetwork.equals("Facebook") ^ socialNetwork.equals("Twitter"))) { Log.d(TAG, "socialNetwork desconhecido");

return; }

SObject obj = new SObject(); obj.setType("Social_activity__c");

HashMap<String, String> requestFields = new HashMap<String, String>(); requestFields.put("listener_id__c", salesUserID);

requestFields.put("social_message__c", mensagem); requestFields.put("Social_Network__c", socialNetwork); obj.setFields(requestFields);

ArrayList<SObject> objs = new ArrayList<SObject>(); objs.add(obj);

Salesforce.create(objs, new Salesforce.ResponseListener() { public void onSforceError(ApiFault apiFault) {

String msg = apiFault.getExceptionMessage();

String code = apiFault.getExceptionCode().getValue(); if (code.equals(ExceptionCode._INVALID_FIELD)) {

Log.e(TAG, "Query: Invalid field"); }

Log.e(TAG, "ERRO: " + msg); }

public void onException(Exception e) { Log.e(TAG, "Exception:", e); }

public void onComplete(Object response) {

ArrayList<SaveResult> resultArray = (ArrayList<SaveResult>) response; for (SaveResult sr : resultArray) {

if (sr.isSuccess()) {

Log.d(TAG, "social message inserted"); } else {

Log.d(TAG, "Record insert failed.");

for (com.sforce.android.soap.partner.Error error : sr.getErrors()) { Log.d(TAG, "Custom Error: " + error.getMessage());

} } } } }); }

4.8 Android Crash Reports

Android Crash Reports (ACRA) é uma library que permite às aplicações Android enviar, automaticamente, relatórios de erros para um formulário do GoogleDocs [3], para ajudar os programadores a obter a informação que levou a aplicação a um erro.

(28)

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 25

Para se poder usar esta library basta colocá-la dentro do projeto, e adicionar umas linhas de código na classe de aplicação. O exemplo na listagem 8, mostra o que é necessário colocar nessa classe.

Listagem 8 Código de exemplo para implementar o sistema de relatórios de erro. import org.acra.*;

import org.acra.annotation.*;

@ReportsCrashes(formKey = "dGVacG0ydVHnaNHjRjVTUTEtb3FPWGc6MQ") //form-key do formulário do GoogleDocs public class MyApplication extends Application {

@Override

public void onCreate() { ACRA.init(this); super.onCreate(); }

(29)

Capítulo 5

Trabalho realizado

A aplicação Android, com o recurso ao SDK Android, foi desenvolvida no ambiente de programação Eclipse. O Eclipse é um IDE desenvolvido em Java, seguindo um modelo open source de desenvolvimento de software.

O sistema de gestão para a administração, foi desenvolvida em Salesforce.com, per-mitindo ter toda a informação armazenada na cloud.

Para a integração da aplicação nas redes sociais Facebook e Twitter, foi preciso, em primeiro lugar, obter as API's necessárias e depois realizar um breve estudo de como estas funcionariam.

Todos os conteúdos da rádio a apresentar na aplicação, foram obtidos através de feeds disponibilizados pela rádio.

Também foi necessário recorrer às tecnologias da Google, mais propriamente aos mapas, para serem apresentados na aplicação.

Para obter a letra da música (lyrics), foi utilizado um web service da Musixmatch, e nalmente, para chamadas através da Internet, usou-se a API do Twillio.

5.1 Ciclo de vida de uma aplicação Android

Para o desenvolvimento desta aplicação foi preciso primeiro entender o ciclo de vida de uma activity no sistema operativo Android. Isto é muito importante para garantir a criação de uma aplicação robusta.

A responsabilidade do ciclo de vida da aplicação é do sistema operativo. Quando uma activity está a ser executada, esta vai para o topo da pilha de atividades. Uma activity pode assumir vários estados:

• Em execução; • Interrompida; • Em segundo plano; • Destruída.

(30)

CAPÍTULO 5. TRABALHO REALIZADO 27

No momento em que uma activity é interrompida em segundo plano, o sistema operativo pode, de acordo com a necessidade, libertar os recursos da memória e com isso, encerrar o processo da aplicação. É neste ponto, que pode ser necessário guardar algumas informações da aplicação para que seja possível o retorno da aplicação ao mesmo ponto em que foi deixada.

5.1.1 Máquina de estados

A activity possui métodos que auxiliam o programador a controlar o estado da aplicação. De seguida será feita uma descrição de cada método:

• OnCreate  É apenas executado uma vez quando a activity é iniciada e logo após a sua execução o método onStart é chamado.

• OnStart  Pode ser executado após o onCreate ou o onRestart, e após a sua execução o método onResume é chamado.

• onResume  É chamada quando uma activity está a ser executada. É cha-mada após o onStart.

• onRestart  Este método é chamado quando a activity estava no estado de interrompida em segundo plano e volta a ser executada.

• onPause  É executado quando a activity é interrompida. Aqui o programa-dor deve guardar o estado da aplicação para que seja possível uma recuperação pelo método onResume.

• onStop  É chamado quando a activity está a ser terminada. • onDestroy  Aqui a activity é terminada.

(31)

CAPÍTULO 5. TRABALHO REALIZADO 28

(32)

CAPÍTULO 5. TRABALHO REALIZADO 29

5.2 FrontOce - A aplicação Android

O FrontOce do projeto refere-se à aplicação em si, ou seja, tudo o que o utilizador nal tem acesso. Entende-se por utilizadores nais, os ouvintes da rádio que irão utilizar a aplicação para uso próprio. Esta é a parte visual a que o utilizador tem acesso através do que lhe é apresentado pela aplicação.

5.2.1 Arquitetura das tecnologias utilizadas

Grande parte da aplicação utiliza serviços web, para obtenção dos dados necessários e ligação a redes sociais. A gura 5.2, representa a ligação destes serviços com a aplicação.

Figura 5.2: Serviços na aplicação. Utilização de cada serviço:

• Twilio  Este serviço foi utilizado na aplicação para permitir aos ouvintes ligar para a rádio sem qualquer custo.

• Twitter e Facebook  As API's destes serviços foram utilizadas para par-tilha de conteúdos nas respetivas redes sociais.

(33)

CAPÍTULO 5. TRABALHO REALIZADO 30

• musiXmatch  Utilizado para obter a letra da música que está a tocar na rádio.

• Rádio Antena3  A rádio Antena3 disponibilizou vários links de feed's para obter informações tais como: programação da rádio, lista de podcast's, o que está atualmente a tocar na rádio, links para streaming da rádio, etc..

• Salesforce  O "coração"da aplicação. É no Salesforce.com que ca toda a informação dos ouvintes guardada, tal como o que ouviu, quando e onde, o que partilhou nas redes sociais, quando ligou para a rádio, etc.. Basicamente torna a aplicação num "Big Brother".

• Crash Reports  Este último, não é bem um serviço, pois não fornece nada à aplicação. Este apenas permite ajudar-me como programador, a detetar problemas que ocorram quando a aplicação já está disponibilizada ao público. Sempre que ocorra um problema na aplicação que a leve a um crash, esta informação será enviada para um documento no GoogleDocs para posterior análise e correção de bugs.

5.2.2 A aplicação Android

Nesta secção são apresentados todos os menus da aplicação e todas as suas funcio-nalidades ilustradas, a seguir:

• Modo Interativo  Ouvir rádio ∗ Através de stream RTSP  Record e MyRecords ∗ Registados em Salesforce  Call Radio

∗ Utilização da API Twilio  Lyrics

∗ Utilização da API musiXmatch  Partilhas Sociais

∗ Utilização das API's Facebook e Twitter  Like e Unlikes

∗ Registados em Salesforce  Settings

∗ Login Facebook ou Twitter · Username

· Password ∗ Partilhas

· Com a rádio

· Com a rede social Facebook e Twitter  Auto-mode

(34)

CAPÍTULO 5. TRABALHO REALIZADO 31 • Modo Rádio  Ouvir rádio • Podcasts  Lista de podcasts  Ouvir podcasts

 Obtidos através de feed's • Trânsito

 Google Maps

 Posicionamento GPS  Tráfego

• Programas

 Lista de programação diária da rádio  Obtidos através de feed's

5.2.2.1 Activity principal - Modo Interativo

Figura 5.3: Activity em modo de rádio interativa.

Este é o menu, apresentado na gura 5.3, que aparece quando a aplicação é exe-cutada pela primeira vez pelo ouvinte. Através deste, é possível aceder a todas as funcionalidades da aplicação.

Na primeira vez que o utilizador abre a aplicação, esta irá registar o ouvinte na plataforma Salesforce, com um identicador único. O registo deste ouvinte implica que o dispositivo tenha um e-mail associado; se não o ouvinte cará registado como anónimo, até que seja associado um e-mail ao dispositivo.

(35)

CAPÍTULO 5. TRABALHO REALIZADO 32

O registo do ouvinte acontece uma única vez, e se o ouvinte possuir mais dispositi-vos que possam usar esta aplicação (ou outras, por exemplo a aplicação Interactive Radio desenvolvida também por mim, que irei falar um pouco no nal deste relató-rio), estes ligar-se-ão á conta do mesmo utilizador, desde que o e-mail associado ao respetivo dispositivo seja o mesmo em todos os dispositivos.

Logotipo da marca

No topo da aplicação aparece a marca de automóveis no qual esta está integrada. Devido a burocracias, ainda não foi denida a marca que irá utilizar esta aplicação, por isso, e de maneira a continuar a realizar o projeto, foi colocado o logo da "Mer-cedes Benz", que puderá ser mudado ou mantido mais tarde.

Auto-mode

De seguida, mesmo á direita do logotipo da marca, é apresentada a funcionalidade Auto-mode. Esta é uma funcionalidade muito interessante, mas com muita pena minha, ainda não foi implementada da forma pretendida. Isto é, esta funcionali-dade se estiver em modo ON, fará com que a aplicação mude de estado conforme o veículo esteja em andamento ou não. Se o veículo estiver em andamento este menu deixará de ser apresentado e passará ao modo de rádio (que irá ser apresentado na secção seguinte), não permitindo que o ouvinte esteja a conduzir e ao mesmo tempo a interagir com a aplicação. Se estiver em modo OFF, o ouvinte tem a possibilidade de escolher o ecrã que desejar.

Esta funcionalidade ainda não foi implementada, pois como referido atrás, ainda não foi decidida a marca de automóveis que irá adotar esta aplicação. Então, para efeitos de apresentação da aplicação, decidi colocar um temporizador nesta funcionalidade, e então, quando este esteja ON, de x em x segundos, a aplicação irá alternar entre modos automaticamente, e assim simular o automóvel quando em andamento ou parado.

Botão Lyrics

Este botão permite abrir uma janela de diálogo onde irá apresentar a letra da música que está atualmente a ser reproduzida pela rádio, caso exista na base de dados do site da musiXmatch. Esta janela de diálogo será apresentada mais à frente, pela gura 5.10.

Botão Record

Este botão permite fazer uma gravação da música ou programa que está atualmente em reprodução na rádio. Toda a lista de gravações do ouvinte cará guardada online na plataforma Salesforce.com.

(36)

CAPÍTULO 5. TRABALHO REALIZADO 33

Mais a frente será apresentada pela gura 5.11, a janela de diálogo que aparecerá ao pressionar este botão.

Botão Settings

Este botão permite abrir uma janela de diálogo, com todas as congurações que existem na aplicação.

Caixa de informações do que está a ser reproduzido

Nesta caixa, é apresentada a hora de início e m da música/programa que está atu-almente a ser reproduzido na rádio, e por baixo desta, uma barra de progresso que permite ao ouvinte saber o estado da duração do que está em reprodução. Esta informação aqui apresentada é obtida através de um feed disponibilizado pela Rádio Antena3.

Mais abaixo, existe uma barra de volume para controlar o volume do áudio da apli-cação.

Botão Tweet

Este botão, como o nome também indica, permite ao utilizador publicar no seu Twitter, o que está a ouvir na rádio e onde o está a ouvir. Nos Settings da aplicação é possível congurar o que o ouvinte deseja ou não partilhar no seu Twitter.

Botão Share

Este botão, permite também publicar, mas no Facebook, o que o ouvinte está a ouvir e onde. Também é possível congurar isto tudo nos Settings. Este botão tal como o do Tweet, pode ser dispensado caso o ouvinte ativar nos Settings a opção de publicar automaticamente no seu mural da rede social.

Botão Like e Dislike

Estes dois botões servem para estatísticas da rádio. Serão submetidos "gosto"e "não gosto"ao que está atualmente a ser reproduzido na rádio. Esta informação será envi-ada e guardenvi-ada no Salesforce. É preciso esclarecer que estes botões serão "gostos"do segundo (tempo) da música/programa que está a tocar, e não um "gosto"global da música/programa.

Botão Call Radio

Este botão permite abrir uma janela de diálogo, mais a frente apresentada, possibi-litando efetuar chamadas através da Internet, para a Rádio Antena3.

5.2.2.2 Activity principal - Modo Radio

Este é um modo, no qual o ouvinte pouco interage com a aplicação. Este apenas terá a possibilidade de parar e tocar o stream de rádio.

(37)

CAPÍTULO 5. TRABALHO REALIZADO 34

Figura 5.4: Activity em modo de rádio

Este modo é ativado sempre que o automóvel esteja em andamento, caso o ouvinte tenha a opção de Auto-mode ligada.

Neste modo também continua a ser apresentada a informação da música/programa que está atualmente em reprodução.

5.2.2.3 Activity Podcasts

Nesta activity, representada pela gura 5.5, o ouvinte poderá consultar e ouvir todos os podcasts disponibilizados pela rádio. A informação aqui apresentada é obtida através de vários feed's.

Estes podcasts estão agrupados pelo programa da rádio, recorrendo a uma lista e uma sub-lista para cada podcast do programa respetivo.

5.2.2.4 Activity Trânsito

Nesta activity, representada pela gura 5.6, é apresentado um mapa, e com recurso ao GPS do dispositivo é possível determinar a posição do ouvinte. Aqui será possível vericar qual o percurso que o ouvinte poderá tomar caso haja incidentes na zona do seu percurso rodoviário. Também com recurso aos dados fornecidos pelo GoogleMaps, é possível consultar o estado do tráfego nas principais estradas do país.

5.2.2.5 Activity Programas

Nesta activity, representada pela gura 5.7 apenas é apresentada toda a progra-mação do dia, da rádio, através de uma lista. Esta inforprogra-mação é obtida através de um feed disponibilizado pela rádio.

(38)

CAPÍTULO 5. TRABALHO REALIZADO 35

Figura 5.5: Activity Podcasts

(39)

CAPÍTULO 5. TRABALHO REALIZADO 36

Figura 5.7: Activity Programas.

5.2.2.6 Activity Settings

Esta activity, representada pela gura 5.8, apresentada sob a forma de uma janela de diálogo, permite ao utilizador efetuar o seu login nas redes sociais Facebook e Twitter e congurar o que pretende ou não partilhar.

O ouvinte pode partilhar no Facebook e Twitter: • A sua localização;

• O que está a ouvir.

O ouvinte pode partilhar com a rádio: • A sua localização;

• O que está a ouvir;

• As chamadas que efetuou para a rádio; • As suas partilhas nas redes sociais.

Esta informação partilhada com a rádio, será guardada na plataforma Salesforce. Neste menu ainda é possível, com a permissão do ouvinte, ativar a opção de publicar automaticamente, nas redes sociais denidas, tudo o que faz na aplicação, sem ter que, por exemplo, no menu interativo ter que carregar no botão de Tweet ou Share. A isto dá-se o nome de Frictionless Sharing.

Exemplo de uma mensagem de partilha nas redes sociais: "Estou a ouvir Linkin Park - Burn It Down na aplicação AutoRadio, na Rua Xanana Gusmão, Guarda.

(40)

CAPÍTULO 5. TRABALHO REALIZADO 37

Figura 5.8: Activity Settings.

(41)

CAPÍTULO 5. TRABALHO REALIZADO 38

5.2.2.7 Janela de diálogo Call Radio

Nesta janela de diálogo, representada pela gura 5.9, o ouvinte poderá efetuar chamadas pela Internet, com recurso à API do Twilio, sem qualquer custo, para a rádio, podendo assim, participar em passatempos da rádio, etc.

Na plataforma Salesforce, será possível alterar o número de telefone para o qual a chamada será estabelecida.

5.2.2.8 Janela de diálogo Lyrics

Figura 5.10: Diálogo Lyrics

Nesta janela de diálogo, o ouvinte poderá consultar a letra da música em reprodução. As letras das músicas são obtidas pelo web-service da musiXmatch.

Nem sempre é possível obter todas as letras, pois podem não estar disponíveis, e nem sempre a rádio está a passar músicas.

5.2.2.9 Janela de diálogo MyRecords

Nesta janela de diálogo, representada pela gura 5.11, são apresentadas todas as gravações que o ouvinte efetuou através do botão Record. A lista de gravações ca guardada na plataforma Salesforce.

Atualmente ainda não é possível ouvir as gravações, pois não cou decido na empresa qual seria a melhor abordagem para implementar esta funcionalidade. Se gravar o som obtido pelo stream da rádio, ou arranjar um serviço, que mediante uma música

(42)

CAPÍTULO 5. TRABALHO REALIZADO 39

Figura 5.11: Diálogo MyRecords

fornecida, devolvesse o cheiro de áudio. Esta será uma funcionalidade a terminar mais tarde.

(43)

CAPÍTULO 5. TRABALHO REALIZADO 40

5.3 BackOce

O BackOce foi desenvolvido em Salesforce. Nesta plataforma são guardados todos os dados que são enviados pela aplicação. Todo o conteúdo nesta plataforma é direcionado para os administradores da rádio.

5.3.1 Base de Dados

Os dados são armazenados numa base dados desenvolvida para o efeito na plataforma Salesforce. Na gura 5.12 é apresentado o modelo relacional da base de dados.

Figura 5.12: Base de dados - Relações entre tabelas

As ligações a vermelho, denominadas em Salesforce por Master-Detail Relationship, indicam obrigatoriedade, ou seja, para um registo existir na tabela respetiva, é obrigatório existir registos ao qual se ligarão em outras tabelas, enquanto que as azuis, Lookup Relationship, não têm obrigatoriedade.

5.3.1.1 Descrição das tabelas Listener

Esta tabela contêm toda a informação relativa aos ouvintes: Endereço email, Id's nas redes sociais, nome, última vez que entrou na aplicação, etc.

(44)

CAPÍTULO 5. TRABALHO REALIZADO 41

Music

Esta tabela contêm todas as músicas que vão passando pela rádio. Como a rádio não pode estar sempre a introduzir músicas nesta tabela, então quem introduz os dados é a aplicação. Para não serem introduzidas músicas repetidas, criou-se um trigger que sempre que uma música é introduzida, este verica se já existe ou não.

Music Listened

Aqui cam guardadas todas as músicas ouvidas por cada ouvinte.

Record

Nesta tabela, cam guardadas todas as músicas que um determinado ouvinte gra-vou. Assim, sempre que o ouvinte se ligue noutro dispositivo, terá sempre as suas gravações disponíveis.

Music Like

Esta é uma tabela que não é usada por esta aplicação, mas sim pela Interactive Radio. Aqui cam registados todos os Likes que os ouvintes submetem para as músicas. Este é um Like a um todo, ou seja, um like da música em geral.

RealTime Like

Nesta tabela cam guardados todos os instantes de likes e unlikes submetidos pela aplicação. Estes dados, por agora, não estão a ser tratados de nenhuma maneira. Fica ao dispor da rádio tomar decisões com eles. Um real time like, como já descrito anteriormente, é um like de algo que está num certo instante a passar na rádio.

Call

Aqui cam registadas todas as chamadas efetuadas pelos ouvintes. Isto se o ouvinte permitir nas denições da aplicação a partilha desta informação com a rádio.

Social Activity

Nesta tabela ca registada toda a atividade feita pelos ouvintes na aplicação, com as redes sociais Facebook e Twitter. Esta informação também só é partilhada com a rádio se o ouvinte assim o permitir.

Gps position

Esta tabela contém a informação GPS obtida pela aplicação, ou seja, onde o ou-vinte está a utilizar esta aplicação. Esta tabela será usada para criar um mapa de audiência (apresentado mais à frente). A aplicação submete dados para esta tabela de três em três minutos, com a permissão do ouvinte.

App Settings

Nesta tabela apenas são guardadas informações relativas à aplicação, como chaves de acesso ao Facebook, Twitter, Twilio, musiXmatch, número de telefone, etc. Decidiu-se criar esta tabela, pois assim, Decidiu-sempre que algo tenha que Decidiu-ser alterado, basta Decidiu-ser

(45)

CAPÍTULO 5. TRABALHO REALIZADO 42

alterado nesta tabela e não no source-code da aplicação, e assim, não sendo necessá-rio que os ouvintes tenham que atualizar a aplicação para obter o resultado destas alterações.

Radio

Esta é uma tabela que por agora não está a ser utilizada pela aplicação. Futu-ramente esta tabela permitirá que aplicação se torne multi-rádio, não só para a Antena3 como também para outras rádios.

Phone

Finalmente, esta tabela, irá guardar os números de telefone de cada uma das rádios, na tabela Radio.

5.3.2 Páginas de visualização de dados

Para cada tabela existe uma página que lista todo o conteúdo recente destas (ou total), e selecionando cada registo, é aberta uma outra página com os respetivos detalhes.

A gura a seguir mostra a lista de ouvintes recentes registados na aplicação.

Figura 5.13: Salesforce - Lista de ouvintes recentes. A gura a seguir mostra os detalhes de um ouvinte.

Todas as outras páginas são similares, usando sempre o mesmo estilo de apre-sentação dos dados.

A gura a seguir, apresenta o mapa de audiência, com recurso ao GoogleMaps. Nesta página é possível visualizar todos os ouvintes que estão no momento a uti-lizar a aplicação. Também é possível recuar no tempo e mostrar os ouvintes que estiveram online na última hora, no último dia, ou desde sempre. Ao clicar no pin que representa a posição do ouvinte, aparecerá um "balão"com o nome do ouvinte

(46)

CAPÍTULO 5. TRABALHO REALIZADO 43

Figura 5.14: Salesforce - Detalhes de um ouvinte.

e foto. Estes dados são obtidos através do perl de uma das redes sociais ao qual o ouvinte se tenha ligado na aplicação.

5.3.3 Grácos

Com a criação de relatórios de dados é possível criar vários grácos com os dados que as tabelas contêm. Devido ao escasso tempo para a criação dos mesmos, apenas tive a possibilidade de criar dois. Um gráco com as músicas mais ouvidas, durante um determinado período de tempo, como também os autores de músicas mais ouvidos. A gura 5.16 mostra um gráco das músicas mais ouvidas num determinado dia. É claro que, como a aplicação ainda não está disponível ao público, este gráco representa muito pouco do que será quando já estiver disponível.

Muitos mais grácos serão possíveis de criar com os dados que existem nas tabelas, tais como por exemplo:

• Quais os países ou cidades com mais ouvintes que usam a aplicação? • Quais as músicas que os ouvintes mais gostam ou não?

• Quais as horas do dia que têm uma maior ou menor audiência?

A plataforma Salesforce contém inúmeras funcionalidades que ainda poderiam ser utilizadas para este projeto. Talvez no futuro possa tirar uma certicação em Salesforce e aprender tudo o que esta plataforma tem de bom para dar.

(47)

CAPÍTULO 5. TRABALHO REALIZADO 44

Figura 5.15: Salesforce - Mapa de audiência.

(48)

Capítulo 6

Conclusões e trabalho futuro

6.1 Conclusões

Durante o período do projeto em contexto de estágio, tive a oportunidade de tra-balhar com um conjunto diversicado de tecnologias que revolucionaram, e ainda estão a revolucionar, o mercado.

Quase todas as funcionalidades previstas no início do projeto foram implementadas, algumas mais difíceis de implementar que outras. Mas, resumidamente, estou muito satisfeito com o que consegui implementar neste curto tempo de estágio.

As maiores diculdades na realização deste projeto deveram-se à plataforma Sales-force, pois foi a primeira vez que trabelhei com esta, e o modelo de base de dados é um pouco diferente, pois utiliza uma simbologia diferente do que foi lecionado nas disciplinas de Base de Dados no curso. Mas devido à ajuda e boa vontade da empresa, algumas das diculdades foram logo superadas.

Com a realização deste projeto, aprendi a trabalhar com várias tecnologias, e prin-cipalmente o que mais me agradou foi trabalhar com o sistema operativo Android. Programar para este SO era uma das minhas ambições já há muito tempo.

6.2 Trabalho Futuro

De todos os objetivos previstos, não foi terminada a funcionalidade de gravação. A aplicação apenas guarda o que o ouvinte pretendeu gravar mas não é possível ouvir mais tarde a gravação. Isto será uma funcionalidade a terminar mais tarde. Esta funcionalidade não foi implementada, pois não foi decidido como efetuar as grava-ções. Também não foi possível concluir a parte de navegação com os mapas, para representar nele pontos críticos nas estradas, tal como, obras, sinistralidade, tráfego, etc., devido a não ter sido encontrado nenhum serviço web que disponibilizasse tal informação.

Uma futura funcionalidade que poderá ser implementada na aplicação é uma fun-cionalidade capaz de analisar as expressões faciais do condutor e gerar sinais de alarme se fossem detetados sinais de cansaço, ou mesmo captar sorrisos e cruzar essa informação com o que está atualmente a ouvir na rádio.

(49)

CAPÍTULO 6. CONCLUSÕES E TRABALHO FUTURO 46

Também poderiam ser implementados controlos por voz, pois as tecnologias Google já o permitem, para efetuar ações na aplicação sem ter que tocar no ecrã do dispo-sitivo. Por exemplo, dizer simplesmente "Gosto"e seria submetido um "Like"para o que o ouvinte estaria atualmente a ouvir.

Estas e mais algumas, foram as ideias que tive para um trabalho futuro a implemen-tar na aplicação, e claro, isto poderá ser possível se eu puder continuar a trabalhar em conjunto com a empresa Dom Digital.

Fora do âmbito do projeto descrito neste relatório. estive envolvido noutro projecto que consiste no desenvolvimento de uma aplicação para smartphones Android, com as mesmas e outras funcionalidade da aplicação AutoRadio, apresentada em anexo.

(50)

Bibliograa

[1] Activity lifecycle. http://developer.android.com/reference/android/ app/Activity.html, 2012.

[2] Android tutorial - programadores do facebook. https://developers. facebook.com/docs/mobile/android/build/, May 2012.

[3] Application crash report for android - google project hosting. http://code. google.com/p/acra/, 2012.

[4] Faq. http://www.openhandsetalliance.com/oha_faq.html, 2012.

[5] Philosophy and goals. http://source.android.com/about/philosophy. html, 2012.

[6] Rss. http://en.wikipedia.org/wiki/RSS, May 2012.

[7] Web service. http://en.wikipedia.org/wiki/Web_service, 2012.

[8] Sandeep Bhanott. Getting started with the mobile sdk for an-droid. http://wiki.developerforce.com/page/Getting_Started_with_ the_Mobile_SDK_for_Android, 2012.

[9] Richard Cameron. Chegamos ao m da primeira década 100% digital. http: //www.nvidia.com.br/object/prbr_011311.html, April 2012.

[10] Conversion. Salesforce crm. http://www.conversion.com.br/salesforce/, 2012.

[11] Twilio Inc. Twilio client android sdk. http://www.twilio.com/docs/client/ android, 2012.

[12] informacaoetecnologia.net. Evolução dos tablets. http://www. informacaoetecnologia.net/2011/07/evolucao-dos-tablets.html, April 2012.

[13] musiXmatch. musixmatch lyrics api. https://developer.musixmatch.com/ documentation, 2012.

[14] Antena3 RTP. Antena3 on air feed. http://feeds.rtp.pt/EPG/rssepgradio. php?canal=antena3&dia=0, 2012.

[15] Twitter4j. Twitter4j a java library for the twitter api. http://twitter4j.org/ en/index.html, 2012.

(51)

Anexo A

Projeto Interactive Radio

Esta é uma aplicação para smartphones Android que foi desenvolvida num curto período de tempo, no qual contêm quase todas as funcionalidades que o projeto AutoRadio tem. Isto também graças ao BackOce em Salesforce já existente do projeto realizado. Ainda falta muito para esta aplicação estar concluída pois irá conter muitas funcionalidades.

De seguida deixo algumas caraterísticas que a aplicação tem e terá: • Seguir emissões em direto

• Interagir com o locutor ou programa • Efetuar partilhas com amigos

• Avaliar ao segundo tudo o que decorre na emissão • Votar em músicas favoritas

• Gravar playlist's com os conteúdos para o ouvinte ouvir quando e onde quiser • Seguir as letras dos temas

• Comprar músicas ou álbuns • Denir alarmes para programas • Karaoke

• e muito mais...

(52)

ANEXO A. PROJETO INTERACTIVE RADIO 49

Referências

Outline

Documentos relacionados

Analisando as relações do volume minuto e volume corrente, observou-se os valores no PRÉ uma diferença significante quanto ao grupo intervenção em relação ao grupo controle,

Considering that the historical knowledge is of great importance for the education of this professional, this text has been organized in three segments: the first

Produzir e caracterizar materiais a base de céria, que irão atuar como suporte para nanopartículas de paládio estabilizadas em ciclodextrina para serem aplicadas

Ambas as espécies de caruru avaliadas (A. viridis), apresentaram em suas folhas e grãos níveis significativos de nutrientes de interesse como lipídeos, proteínas,

Como o PDCI/UFSM propõe a realização de avaliação de reação em todos os cursos de treinamento realizados na Instituição, esse artigo tem como objetivo principal identificar como

Usando ArcMap e ArcGIS Online, você trabalhará com mapas SIG, explorará dados e analisará mapas e dados à medida que aprender conceitos fundamentais.. subjacentes à

Por fim, no capítulo IV será apresentada a pesquisa empírica de caráter qualitativo, bem como as análises das informações coletadas junto à comunidade jovem da cidade;

Os valores da Densidade Mineral Óssea (DMO) da extremidade distal do metacarpo de 120 ovinos, sendo 60 machos e 60 fêmeas da raça Santa Inês e mestiços da raça Santa Inês, de