====== Computação Móvel ====== A chamada ‘revolução móvel’ começou em 2007 com o lançamento do iPhone da Apple. Em muito pouco tempo milhões de pessoas adquiram dispositivos móveis criando a procura necessária ao rápido desenvolvimento de toda uma tecnologia e indústria de software associadas. O conceito já existia há vários anos e até os dispositivos capazes de o suportarem como os PDAs (‘Personal Digital Assistants’), mas só nessa altura ganhou o peso necessário para se tornar no grande sucesso que é hoje. Tendo surgido mais de um ano depois do lançamento do primeiro iPhone, o sistema operativo móvel Android teve sucesso imediato, não tendo parado de crescer desde então. Atualmente é, de longe, o sistema móvel mais utilizado, estando a caminho dos 1000 milhões de dispositivos ativos. Hoje em dia os dispositivos móveis possuem elevadas capacidades de computação, comunicação, armazenamento e possibilidade de interfaces sofisticadas e de fácil utilização. As aplicações estendem- -se por cada vez mais campos desde o entretenimento e redes sociais até às utilidades pessoais e trabalho empresarial. Este módulo visa a aquisição de conhecimento e prática dos conceitos essenciais do projeto, arquitetura e implementação de aplicações em dispositivos móveis, utilizando a API do sistema Android, de grande divulgação corrente, e sem exigências especiais ao nível das ferramentas e sistemas de desenvolvimento. São problemas e desafios a vencer, mesmo na mesma plataforma de desenvolvimento, a grande diversidade de capacidades e formas de interação dos dispositivos móveis atuais. A lecionação deverá ter duas componentes essenciais executadas de forma integrada nas sessões programadas: - Exposição teórica dos conceitos, complementada com a apresentação de exemplos e pequenas demonstrações; - Desenvolvimento prático de diversos tipos de exercícios, como tutoriais guiados e pequenos projetos de aplicações completas. ===== Conteúdos===== * A Computação Móvel * Dispositivos móveis, suas categorias e características * Plataforma para dispositivos móveis e tipos de aplicações * Arquitetura genérica das aplicações móveis * Conetividade e partilha de recursos * Padrões de desenho fundamentais * Alguns ‘frameworks’ de desenvolvimento genéricos * O sistema Android * Características gerais do software e hardware * Componentes e arquitetura * As aplicações e processo de construção * Componentes das aplicações * Ativação dos componentes e ‘intents’ * Ferramentas de desenvolvimento * Desenvolvimento de Aplicações Android * Ciclo de vida e as atividades * Outros componentes * Desenho e implementação das interfaces * Layouts, ViewGroups, Views, menus e outros recursos das interfaces * Eventos e interação * Caixas de diálogo * Rotação e preservação de estado * Entrada de informação, toques e teclado * Gráficos 2D e Views gráficas * Gráficos 3D e o OpenGL ES * Utilização de sensores * Serviços em Android * Processamento concorrente e threads * Utilização e desenvolvimento de serviços Android * Execução em ‘background’ * Alarmes e notificações * Armazenamento local persistente * Utilização de serviços externos ===== Pré-requisitos ===== Conhecimento e alguma prática da linguagem Java ===== Bibliografia ===== Nos últimos anos foi publicado um enorme volume de títulos cobrindo os diversos tópicos da Computação Móvel, pelo que não é difícil encontrar elementos de estudo adequados. Indicam-se alguns títulos representativos: * Dino Esposito, “Architecting Mobile Solutions for the Enterprise”, Microsoft Press, 2012. ISBN: 978-0-7356-6302-2 (arquitetura geral e padrões de desenho de arquitetura) * Theresa Neil, “Mobile Design Pattern Gallery”, O’Reilly, 2012. ISBN: 978-1-449-31432-3 (padrões para interfaces móveis) * Satya Komatineni, Dave MacLean, “Pro Android 4”, Apress, 2012. ISBN: 978-1-4302-3930-7 (desenvolvimento em Android, cobrindo inúmeros aspetos) * Maximiliano Firtman, “Programming the Mobile Web”, 2nd Edition, O’Reilly, 2013. ISBN: 978-1-449-33497-0 (aplicações web para dispositivos móveis) ===== Recursos adicionais ===== * Disponíveis [[recursos:start|aqui]] (apenas para participantes)