Índice
INTRODUÇÃO 3
LISTA DE MATERIAL 4
PORQUÊ? 5
TECNOLOGIAS 5
ANDROID 5
MESA TOUCH E COMPONENTES 5
PULSEIRA BLUETOOTH 5
PONTOS DE ACESSO BLUETOOTH 6
SISTEMA DE VIGILÂNCIA 6
ROOTER 6 ECRÃ EXTERNO 7 PLATAFORMAS 7 ADOBE ILLUSTRATOR CS5 7 WEBSTORM 2.1 7 CODA 7 MYSQL WORKBENCH 7 ECLIPSE 8
CCV (COMMUNITY CORE VISION) 8
XAMPP (X APACHE MYSQL PHP PIER) 8
WOWZA MEDIA SERVER 8
REAL PRODUCER 9
LINGUAGENS DE PROGRAMAÇÃO 9
JAVASCRIPT + JPOOKY 9
HTML+CSS+PHP 9
SQL (STRUCTURED QUERY LANGUAGE) 9
JAVA 10
REQUISITOS FUNCIONAIS + TECNOLOGIAS = PROJETO 10
FRONTOFFICE 10 BACKOFFICE 13 REFERÊNCIAS 16
Introdução
Após definidos os requisitos funcionais é necessário refletir de que maneira é que cada um deles vai ser implementado, utilizando que tecnologias e programando em que linguagens.
Primeiro decidimos definir qual a lista de material necessário, incluindo o software e as linguagens de programação escolhidas, a fim de, com base neste, conseguir implementar corretamente todos os requisitos propostos.
De seguida vai ser justificada a utilização de cada um dos materiais, bem como do software e das linguagens de programação escolhidas.
Por fim vamos então relacionar as tecnologias a utilizar com os requisitos em questão.
Lista de material
Para por em prática o projeto PlaySafe vão ser necessários os seguintes materiais.
Table 1 -‐ Lista de materiais necessários
Vão ser também necessárias algumas plataformas de desenvolvimento para programar o jogo, a aplicação Android e a página web (para o registo), nas respectivas linguagens de programação.
Table 2 -‐ Lista dos programas e respectivas linguagens de programação
Plataforma Linguagem/Plug-‐in Adobe Illustrator CS5 -‐ WebStorm 2.1 JavaScript Plug-‐in jPooky Coda HTML CSS JavaScript PHP MySQL Workbench SQL Eclipse Java CCV (Community Core Vision) -‐ XAMPP -‐
Wowza Media Server -‐
Real Producer -‐
Tecnologia Dispositivo/Material
Android Telemóvel com sistema Android Jogo Mesa touch
Sensores emissores e receptores de infra-‐vermelhos Câmara PlayStation Eye
Projetor Mac Mini
Localização Pulseira emissora de sinal Bluetooth Pontos de acesso Bluetooth
3 Câmaras de vídeo wi-‐fi 1 Câmara fotográfica wi-‐fi Wireless Rooter
Por fim vamos ainda utilizar dois WebServices, um para monitorizar os pontos de acesso Bluetooth e outro para o envio de SMS, para implementar o sistema de notificação por SMS.
Porquê?
Nesta secção vamos explicar e justificar a nossa escolha face às várias tecnologias a implementar, linguagens de programação, programas e outros materiais.
Tecnologias
Android
Tal como justificado no Estado da Arte e no Briefing, secção Tecnologias, colocados no post #entrega01, optámos pelo sistema operativo móvel Android, face ao sistema operativo iOS.
Mesa touch e componentes
Como suporte para o jogo, decidimos utilizar uma superfície touch, visto ser uma tecnologia inovadora, interativa e cativante para o utilizador.
Tal como justificado no post #investigação04, optámos, no que diz respeito à superfície táctil, ou não, que irá servir de suporte ao jogo, pela utilização da mesa touch.
Relativamente aos componentes da mesa touch, sensores infravermelhos, câmara PlayStation Eye, projetor e Mac mini, vamos utilizá-‐los pois são os elementos originais da construção da mesa touch.
A única alteração que poderemos fazer é na estrutura física da mesa, aplicando assim a ideia da construção do iglu.
Pulseira Bluetooth
Para o sistema de localização da criança, optou-‐se por escolher uma pulseira que transmitisse um sinal Bluetooth. O facto da escolha ter sido uma pulseira resulta da sua portabilidade, facilidade de aquisição e facilidade de utilização por parte das crianças.
Quando à questão do tipo de sinal wireless a utilizar para a localização, tal como indicado no post #reunião02, decidimos utilizar a tecnologia Bluetooth. Logo a pulseira escolhida teria que suportar esta mesma tecnologia.
Pontos de acesso Bluetooth
De forma a captar o sinal emitido pelas pulseira Bluetooth é necessária a incorporação de pontos de acesso Bluetooth, auxiliando assim também o cálculo da localização relativa da criança.
Tal como no caso da pulseira, a escolha por pontos de acesso Bluetooth prende-‐ se com a questão do sinal escolhido para todo o sistema de localização de PlaySafe.
Sistema de vigilância
Para que, na aplicação Android, os pais/responsáveis possam visualizar a criança enquanto esta disfruta do espaço PlaySafe, é necessário a implementação de um sistema de vigilância. Este é composto pela utilização de 3 câmaras de vídeo, para filmar o movimento das crianças e para que o utilizador da aplicação possa usufruir da visualização de múltiplos ângulos, e pela utilização de uma máquina fotográfica, para que, em vários intervalos de tempo sejam enviadas para a aplicação imagens da criança no espaço PlaySafe.
No que diz respeito às câmaras de vídeo a utilizar necessitamos de uma câmara que tivesse a capacidade de transmitir via wireless a imagem. Tínhamos duas hipóteses: utilizar uma câmara normal com o auxílio de um cartão SD (Secure Digital) Eye-‐fi [1] para a transmissão wireless; ou utilizar uma câmara de vídeo wi-‐fi.
Analisando então as duas hipóteses podemos constatar que, face às câmaras wi-‐ fi, o sistema câmara+Eye-‐fi teria um custo mais reduzido, no entanto não era compatível com o nosso sistema, uma vez que o sistema Eye-‐fi necessita de ter um emissor (o cartão SD) e um receptor (software para computador) [1] e no nosso caso como necessitamos de várias câmaras iria gerar conflitos pois o receptor apenas pode captar o sinal de uma câmara de cada vez.
Em relação à câmara fotográfica a utilizar optámos por uma câmara wi-‐fi, como por exemplo a Sony Cyber-‐shot DSC-‐G3 [2] pois necessitamos de uma transmissão rápida e autónoma de forma a que, consequentemente, também o sistema PlaySafe o seja.
Rooter
É necessário para os telemóveis com sistema Android acederem à informação da base de dados localizada no servidor web do Mac Mini. É também essencial para a comunicação entre as câmaras wi-‐fi e o Mac Mini. No contexto real, o rooter estará já implementado nos centros comerciais, como parte da sua rede wireless interna.
Ecrã externo
Para que os pais/responsáveis pelas crianças se possam registar na base de dados de PlaySafe é necessária a existência de um dispositivo digital com que estes possam interagir. Uma vez que o próprio sistema já inclui a utilização de um Mac Mini, optámos por incluir um ecrã externo, conectado ao mesmo.
Plataformas
Adobe Illustrator CS5
Para a construção do grafismo dos jogos, irá ser utilizado o programa Adobe Illustrator, programa da Adobe para construir imagens vectoriais.
A utilização deste programa deve-‐se ao facto dos elementos do grupo já estarem familiarizados com o mesmo, facilitando a construção da interface gráfica dos jogos e evitando assim a adaptação a um novo programa.
WebStorm 2.1
WebStorm 2.1 [3] é um IDE (Integrated Development Environment), ou seja, um ambiente integrado para desenvolvimento de software, para programação em JavaScript.
A razão porque optámos pela sua utilização foi o facto de alguns elementos do grupo estarem bastante familiarizados com o seu ambiente. Outra razão que nos levou a escolher este IDE foi o seu estatuto face a plataformas semelhantes.
Coda
Para a programação da página Web para o registo dos pais/responsáveis, optámos pelo Coda. O Coda é especializado para programação para Web, permitindo a escrita em várias linguagens de programação: HTML, CSS, JavaScript e PHP.
Escolhemos este programa pois, contrariamente a outros semelhantes no mercado como por exemplo o Dreamweaver CS5, da Adobe, permite uma maior autonomia ao utilizador, tornando todo o processo muito mais simples e independente.
MySQL Workbench
Para a construção da base de dados do PlaySafe é necessária a utilização de um ambiente de desenvolvimento. Escolhemos o MySQL Workbench por vários motivos: primeiro, e talvez o mais importante no contexto real, é gratuito e de livre utilização; segundo, é versátil pois permite criar as tabelas da base de
dados, estruturá-‐las e relacioná-‐las visualmente, e ainda realizar queries; e por fim, é familiar para os vários elementos do grupo.
Eclipse
A fim de programar e desenhar a aplicação para o sistema operativo Android, foi necessário escolher uma plataforma de desenvolvimento que suportasse a linguagem Java (utilizada na programação de aplicações Android).
Segundo o livro Learn Java for Android development [4], o Eclipse é um bom programa de desenvolvimento para Java, pelo que foi o programa utilizado em alguns testes já realizados na linguagem referida. Por essa razão e pela familiaridade de um elemento do grupo com o mesmo, optámos por programar Java no Eclipse.
CCV (Community Core Vision) [5]
Para conseguir recolher e identificar os pontos de toque do utilizador na mesa é necessária a utilização de um software, neste caso, do CCV. A razão porque escolhemos este programa foi o facto de ser gratuito e de livre acesso e utilização e porque foi o programa utilizado em projetos anteriores do mesmo âmbito.
XAMPP (X Apache MySQL PHP Pier)
De forma a podermos testar e utilizar o servidor Web Apache e o servidor SQL a fim de colocar a base de dados no servidor e poder construir e interagir com uma página Web dinâmica é necessário utilizar o servidor XAMPP. A razão da escolha do XAMPP face a outros servidores semelhantes é por mera familiarização com o mesmo.
Wowza Media Server
Como pretendemos que os utilizadores do tipo 2 (da aplicação Android) visualizem em direto as crianças no espaço PlaySafe, necessitamos de um software que realize streaming de vídeo.
O Wowza Media Server 3 [6] é um software que permite transmitir vídeo por streaming até 10 Gbps, tanto em direto como em diferido.
Optámos por este software pois permite uma elevada quantidade de tráfego, permite transmissão em direto e possui um trial de 30 dias para testes, não necessitando assim de o adquirir.
Real Producer
Para que possamos comprimir os ficheiros de vídeo provenientes das várias câmaras precisamos de um encoder. Decidimos utilizar o Real Producer pois é um encoder de fácil acesso e de elevada popularidade.
Linguagens de programação
Tal como referido em cima na tabela das plataformas, cada plataforma permite programar numa ou mais linguagens. No geral, optámos programar nas linguagens principais de cada programa.
JavaScript + jPooky
Vamos utilizar a linguagem de programação JavaScript porque é uma linguagem que permite realizar jogos e com a qual os elementos de grupo se sentem mais à vontade e, consequentemente, permite ao grupo conseguir um melhor cumprimento dos objetivos.
O plugin jPooky [7] é um plugin para a biblioteca de JavaScript jQuery que possibilita a interação multi-‐touch com websites e que por essa mesma razão é essencial para o desenvolvimento dos jogos.
HTML+CSS+PHP
A linguagem HTML (HyperText Markup Language) é necessária para desenhar e criar a estrutura das páginas de registo dos utilizadores.
A linguagem de estilo CSS (Cascading Style Sheets) vai ser utilizada para formatar e personalizar a estrutura das páginas de registo feitas com HTML.
A linguagem de programação PHP (Personal Home Page) vai ser utilizada para gerar conteúdo dinâmico, ou seja, para tratar e apresentar ao utilizador a informação proveniente da base de dados, após a realização de queries.
SQL (Structured Query Language)
A linguagem SQL serve para realizar queries à base de dados, ou seja, pesquisar/filtrar a informação na mesma.
O motivo pelo qual se optou por esta linguagem deveu-‐se ao fato de esta ter sido leccionada nas aulas de Laboratório Multimédia 5 logo, os elementos do grupo têm experiência e conhecimento sobre a mesma.
Java
Para a programação para aplicações para Android, vamos utilizar a linguagem de programação Java porque é esta a linguagem utilizada no sistema operativo Android.
Requisitos funcionais + Tecnologias = Projeto
Após a definição dos requisitos funcionais e a justificação das tecnologias a utilizar, resta relacioná-‐los a fim de compreender de facto o que é que cada requisito vai implicar e em que é que cada tecnologia vai ser útil.
De forma a representar essa mesma ligação, decidimos construir várias tabelas que indicassem, face às tecnologias, programas e linguagens de programação, em que requisitos eram utilizados, distinguindo ainda entre frontoffice e backoffice.
Frontoffice
Nota: Por motivos de dimensão das tabelas, apenas se encontram na página seguinte.
Backoffice
Referências
[1] Eye-‐Fi, I. (2011). "Eye-‐fi memory cards wireless photo and video uploads straight from your camera to your computer & the web." Retrieved 29.02.2012, 2012, from http://uk.eye.fi/.
[2] Review, D. P. "Sony Introduces Wi-‐Fi enabled Cyber-‐Shot DSC-‐G3: Digital Photography Review." Retrieved 2.03.2012, 2012, from
http://www.dpreview.com/news/2009/1/8/sonycybershotdscg3.
[3] JetBrains. "The best JavaScript IDE with HTML Editor for Web Development :: JetBrains WebStorm." Retrieved 01.03.2012, from
http://www.jetbrains.com/webstorm/.
[4] Friesen, J. (2010). Learn Java for Android development. New York City, Apress: 636.
[5] CCV. "CCV." Retrieved 22.02.2012, from http://ccv.nuigroup.com/.
[6] Wowza Media Systems, I. (2012). "Media Server & Media Streaming | Wowza Media Systems." Retrieved 02.03.2012, 2012, from http://www.wowza.com/.
[7] Pooky (2012). "Pooky Wiki . JPooky." Retrieved 10.02.2012, 2012, from http://pooky.sourceforge.net/wiki/JPooky.