UNIVERSIDADE DO SUL DE SANTA CATARINA ROBERTO DE SOUSA ANTUNES FILHO CUSTOMIZAÇÃO DA PLATAFORMA ANDROID - PDF
UNIVERSIDADE DO SUL DE SANTA CATARINA ROBERTO DE SOUSA ANTUNES FILHO CUSTOMIZAÇÃO DA PLATAFORMA ANDROID
Download "UNIVERSIDADE DO SUL DE SANTA CATARINA ROBERTO DE SOUSA ANTUNES FILHO CUSTOMIZAÇÃO DA PLATAFORMA ANDROID"
Isadora Coelho Borba
1 UNIVERSIDADE DO SUL DE SANTA CATARINA ROBERTO DE SOUSA ANTUNES FILHO CUSTOMIZAÇÃO DA PLATAFORMA ANDROID Palhoça 2013
2 ROBERTO DE SOUSA ANTUNES FILHO CUSTOMIZAÇÃO DA PLATAFORMA ANDROID Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Ciência da Computação da Universidade do Sul de Santa Catarina, como requisito parcial à obtenção do título de Bacharel em Ciência da Computação. Orientador: Prof. Saulo Popov Zambiasi, Dr. Palhoça 2013
3 ROBERTO DE SOUSA ANTUNES FILHO CUSTOMIZAÇÃO DA PLATAFORMA ANDROID Este Trabalho de Conclusão de Curso foi julgado adequado à obtenção do título de Bacharel em Ciência da Computação e aprovado em sua forma final pelo Curso de Graduação em Ciência da Computação da Universidade do Sul de Santa Catarina. Palhoça, 21 de junho de 2013.
4 Dedico este trabalho aos meus pais que estiveram sempre ao meu lado e me proporcionaram, através do seu suor, a oportunidade de realizar o sonho de cursar uma universidade.
5 AGRADECIMNTOS Agradeço a minha querida mãe, ao meu falecido pai, a meus irmãos Amanda e Raian e a minha namorada Thayse, todos sempre me deram muita força e me incentivam sempre a dar o meu melhor em tudo que faço. Agradeço também ao professor Saulo e a professora Maria Inês pela ajuda e paciência durante a elaboração deste trabalho.
6 Ernest Henley, 1875). Eu sou o mestre da minha alma. Eu sou o capitão do meu destino. (William
7 RESUMO O custo de se criar um sistema operacional específico para um hardware próprio para uma pequena empresa ou uma empresa de pequeno porte pode ser muito grande, pois uma tarefa dessa magnitude exigiria um número considerável de pessoas, recursos e tempo envolvidos. Tendo em vista todas estas dificuldades, pode-se vislumbrar todo o potencial que uma plataforma pronta como o Android oferece, com sua variedade de recursos, consolidação no mercado, por ser livre, de código aberto, de distribuição gratuita e manutenção feita por desenvolvedores de várias empresas de renome como Google, Sony, Motorola e Samsung, que uniram forças para trabalhar em um sistema operacional para dispositivos móveis para ser utilizados por todas. A criação desta plataforma vem se mostrando bom para as empresas e para os consumidores, haja visto o constante crescimento do número de usuários e empresas que aderiram à plataforma. Levando em consideração a crescente evolução e disseminação da tecnologia VoIP (Voz sobre IP), o crescimento do mercado de telefonia corporativo mundial, juntamente com o potencial comercial e tecnológico de uma plataforma consolidada no mercado como o Android, este trabalho propõe uma customização da plataforma Android de modo que o sistema seja adequado a ser utilizado em um telefone de mesa para ambientes corporativos, com a substituição do sistema de ligações celular por um sistema totalmente VoIP. Como resultado deste trabalho, elaborouse um tutorial que tem como objetivo demostrar passo-a-passo todo o processo do desenvolvimento da customização da plataforma, desde a configuração do ambiente de desenvolvimento até a execução do código fonte customizado em dispositivos. Palavras-chave: Android. Customização. Dispositivos Móveis.
8 ABSTRACT The cost to develop an operating system for specific hardware for a small company can be very large, because a task of this magnitude would require a considerable number of people, resources and time involved. Given all these difficulties, one can envision the potential that a ready platform as Android offers, with its variety of resources, market consolidation, being free, open source, free distribution and maintenance done by developers of various reputed companies like Google, Sony, Motorola and Samsung, that have joined forces to work on an operating system for mobile devices default to all. The creation of this platform is proving to be good for business and for consumers, seen the growth of number of users and companies that have joined the platform. Taking into account the growing evolution and spread of VoIP technology (Voice over IP), the growth of corporate telephony market worldwide, along with commercial and technological potential a consolidated platform like Android, this paper proposes a customization of the platform Android so that the system is suitable to be used in a desk phone for enterprise environments, with the replacement of the original system of calls by a system fully VoIP. As a result of this work, was elaborated a tutorial that aims to demonstrate step-by-step the entire process of developing the customization of the platform, from the configuration of the development environment, to the execution of the source code for customized devices. Keywords: Android. Customization. Mobile devices.
9 LISTA DE ILUSTRAÇÕES Figura 1 - Telas do ios Figura 2 - Telas do Windows Phone Figura 3 - Arquitetura da solução Figura 4 - Tela do emulador do Android Figura 5 - Tela do Google Play acessado através de um navegador web (à esquerda) e tela do aplicativo Play Store para sistemas Android (à direita) Figura 6 - Aparelhos descontinuados da linha Nexus. Nexus One (esquerda), Nexus S (centro) e Galaxy Nexus (direita) Figura 7 - Visões do Google Nexus 4 fabricado pela LG Figura 8 - Telas customizadas do CyanogenMod Figura 9 - Telas customizadas do AOKP Figura 10 - Telas customizadas do Miui Figura 11 - Telas customizadas do Paranoid Figura 12 - Telas do Linphone para Android Figura 13 - Telas do CSipSimple para Android Figura 14 - Telas do SipDroid Figura 15 - Etapas metodológicas Figura 16 - Capturas de telas das animações de boot de algumas versões da plataforma Android. Android 2.3 (esquerda), Android 4.0 (centro) e Android 4.1 (direita) Figura 17 - Tela de boot do Linux Figura 18 - Tela de boot do Windows Figura 19 - Captura de tela da animação de boot proposta Figura 20 - Papel de parede padrão da versão 4.0 do Android Figura 21 Papel de parede proposto para a customização Figura 22 - Demonstração da visualização do papel de parede nas telas do Android Figura 23 - Informações das aplicações Telefone e Mensagens Figura 24 - Informações da aplicação Linphone Figura 25 Screenshots da interação entre plataforma e aplicação de Telefone nativa Figura 26 Screenshot do site para download dos binários de hardwares Figura 27 - Screenshot do arquivo telephony.mk Figura 28 - Screenshot do site para download do Linphone para Android
10 LISTA DE TABELAS Tabela 1 Market Share mundial de sistemas operacionais para smartphones do ano de 2012 e previsão para Tabela 2 - Tipos mais comuns de Builds da plataforma Android Tabela 3 - Tipos mais comuns de Buildtypes da plataforma Android Tabela 4 - Sequência de teclas para os dispositivos da linha Nexus Tabela 5 - Lista de versões recomendadas de acordo com o dispositivo utilizado
11 SUMÁRIO 1 INTRODUÇÃO PROBLEMÁTICA OBJETIVOS Objetivo geral Objetivos específicos JUSTIFICATIVA ESTRUTURA DA MONOGRAFIA PESQUISA BIBLIOGRÁFICA SISTEMAS OPERACIONAIS Componentes e objetivos Arquitetura dos sistemas operacionais SISTEMAS EMBARCADOS Sistemas embarcados Linux PRINCIPAIS PLATAFORMAS MÓVEIS CONCORRENTES DO MERCADO ios Versões do ios Características do sistema operacional Windows Phone Versões do Windows Phone Resumo ANÁLISE DOS SISTEMAS OPERACIONAIS PARA DIPOSITIVOS MÓVEIS Participação no mercado Análise de viabilidade para customização PLATAFORMA ANDROID Arquitetura Kernel Linux Bibliotecas Android runtime Applications framework Applications... 39
12 Interface Aplicações Google Versões do Android Google Nexus CUSTOMIZAÇÕES EXISTENTES NO MERCADO CyanogenMod Android Open Kang Project Miui Paranoid SOFTPHONES LIVRES Linphone CSipSimple SipDroid MÉTODO CARACTERIZAÇÃO DO TIPO DE PESQUISA ETAPAS METODOLÓGICAS ARQUITETURA DA SOLUÇÃO DELIMITAÇÕES MODELAGEM DA PROPOSTA MODELAGEM DA CUSTOMIZAÇÃO DA PLATAFORMA Alteração da identidade visual da plataforma Substituição de aplicação de telefonia celular por módulo VoIP Modificação na camada de aplicação DESENVOLVIMENTO INICIALIZANDO O AMBIENTE DE DESENVOLVIMENTO ESCOLHENDO UMA VERSÃO CONFIGURANDO UM AMBIENTE DE COMPILAÇÃO PARA LINUX Instalando o JDK Instalando pacotes necessários para o Ubuntu Configurando o acesso USB Configurando a ferramenta CCache BAIXANDO OS ARQUIVOS DO CÓDIGO-FONTE... 75
13 5.4.1 Instalando o Repo Inicializando um cliente Repo Baixando os arquivos COMPILANDO O ANDROID Inicializando Escolhendo um destino Compilando o código-fonte Executando o Android COMPILAÇÃO PARA DISPOSITIVOS Compilando o Fastboot e ADB e iniciando o Fastboot Desbloqueando o bootloader Obtendo os binários proprietários Compilando para um dispositivo especifico Gravando em um dispositivo Restaurando um dispositivo ao seu estado original de fabrica VALIDANDO AS CUSTOMIZAÇÕES Modificando a animação de boot inicial Alterando o papel de parede padrão do sistema Substituindo a aplicação Telefone padrão e removendo a aplicação Mensagens CONSIDERAÇÕES CONSIDERAÇÕES FINAIS E SUGESTÕES PARA TRABALHOS FUTUROS SUGESTÕES PARA TRABALHOS FUTUROS REFERÊNCIAS APÊNDICES APÊNDICE A CRONOGRAMA DE ATIVIDADES DO PROJETO
14 14 1 INTRODUÇÃO Tanenbaum (2009) afirma que um computador sem um software adequado nada mais é do que uma peça sem utilidade, o mesmo se aplica a um telefone e a grande maioria dos hardwares modernos. Entretanto, quando equipado com o software adequado, ele é capaz de armazenar, processar e de engajar seu usuário em muitas outras atividades bastante produtivas. Para Tanenbaum (2009), os softwares de modo geral são divididos em duas categorias distintas, os programas de sistema que gerenciam o próprio computador, e os programas de aplicação que resolvem problemas para seus usuários. O mais importante programa do sistema é o chamado sistema operacional, que controla todos os recursos do computador, e fornece a base sobre a qual os programas aplicativos são descritos. Até pouco tempo atrás, os sistemas operacionais para dispositivos móveis e para hardwares embarcados eram muito específicos, ou seja, haviam muitos, não havia um padrão, pois cada empresa possuía o seu e até a mesma empresa possuía varias versões para diferentes modelos. Segundo Lecheta (2009), com o aquecimento do mercado de celulares e smartphones essa ideia começou a mudar. Em 2005 a empresa americana Google 1 adquiriu uma pequena empresa chamada Android Inc. que estava desenvolvendo uma plataforma para dispositivos móveis. Posteriormente se aliou a um grupo de organizações do mercado de telefonia como HTC 2, LG 3, Motorola 4, Sony 5 e Samsung 6. Elas formaram a Open Handset Aliance, que é liderada pela Google. Juntos, trabalham em um sistema operacional para dispositivos móveis que batizaram de Android. Sendo assim, se vislumbrou a possibilidade de estabelecer um padrão, o que posteriormente se mostrou bom para as empresas e para os consumidores. Segundo Android Open Source Project (2013), o Android é uma plataforma de software para dispositivos móveis. O Android Open Source Project (AOSP), liderado pela Google, é encarregado da manutenção e desenvolvimento do Android. O objetivo principal 1 Empresa multinacional de serviços e software norte-americana. Mais informações em: 2 Empresa multinacional de smartphones taiwanesa. Mais informações em: 3 Empresa multinacional de eletrônicos sul-coreana. Mais informações em: 4 Empresa multinacional de telecomunicações norte-americana. Mais informações em: 5 Empresa multinacional de eletrônicos japonesa. Mais informações em: 6 Empresa multinacional de eletrônicos sul-coreana. Mais informações em:
15 15 deste projeto é construir uma excelente plataforma de software para usuários comuns do diaa-dia. Uma série de empresas disponibilizaram muitos engenheiros para atingir este objetivo, e o resultado é um produto pronto para o consumo, cujo código-fonte é aberto para customização e portabilidade. Segundo Lecheta (2009) outra vantagem do Android é que pelo fato de ser livre, não é preciso pagar nada para utilizá-lo e pode ser distribuído e vendido livremente. Além disso, utiliza a licença Apache Software Foundation (ASF) que permite que alterações sejam efetuadas na plataforma para a criação de produtos customizados e não é preciso disponibilizar essas customizações para ninguém. Segundo a Info Escola (2013), customizar é uma das modas destes tempos pósmodernos. Na busca incessante da identidade, cada um quer vestir algo que reflita um pouco de sua personalidade. Daí a onda de apropriar o figurino ao estilo pessoal ou à demanda do consumidor. Assim, é possível mudar, converter ou complementar em uma extensão do jeito de ser da pessoa ou consumidor. Assim, bordando uma peça já usada, criando desenhos ou pintando sua superfície, cortando mangas ou decotes, o indivíduo está imprimindo a personalidade ao seu traje. A expressão customizar provém do idioma inglês custom, que tem o significado de personalizado, elaborado sob medida. Ela também pode se referir à atitude de converter algo pronto em outra coisa totalmente diferente. 1.1 PROBLEMÁTICA De acordo com Lecheta (2009) o Android possui um grande potencial comercial e já está consolidado como uma das maiores plataformas para telefonia móvel. Pelo fato de já estar no mercado há algum tempo, também apresenta uma forte tendência de aceitação, pois suas funcionalidades e modo de operação já são conhecidos por muitos usuários. Para uma empresa seria muito vantajoso utilizar a plataforma do Android em seus produtos, mas para que isso se torne uma realidade, poderia ser necessária uma série de customizações na plataforma original, desde a parte visual e a integração com os outros produtos já oferecidos pela empresa até modificações em drivers do sistema, assim como grandes empresas do setor de tecnologia já fizeram como Motorola, HTC e Samsung.
16 OBJETIVOS São apresentados, a seguir, os objetivos deste projeto Objetivo geral Este trabalho tem como objetivo avaliar e validar a customização da plataforma do sistema operacional Android, tendo como enfoque a adequação do sistema para telefones de mesa em ambientes corporativos com a substituição do sistema de ligações celular, por um sistema VoIP Objetivos específicos Como objetivos específicos para este trabalho, são almejados alcançar os seguintes itens: Agregar um conjunto de informações a respeito das plataformas e customizações consolidadas no mercado e verificar as possibilidades que a plataforma Android pode fornecer. Pesquisar informações sobre o estado da arte da customização do Android para outros dispositivos. Definir um modelo com os requisitos necessários para estrutura a ser fomentada. Apresentar um roteiro passo-a-passo como tutorial para a customização do sistema. 7 Sigla em inglês: Voice over IP. Protocolo para transmissão de voz através de redes que utilizam o protocolo IP, como a internet.
17 17 Alterar aspectos da identidade visual da plataforma, adequando-se a identidade de uma empresa fictícia. 1.3 JUSTIFICATIVA O custo de se criar um sistema operacional específico para um hardware próprio, para uma empresa de pequeno porte é grande, pois uma tarefa dessa magnitude exigiria um número considerável de pessoas, recursos e tempo envolvidos. Tendo em vista todas estas dificuldades, pode-se vislumbrar todo o potencial que a plataforma Android oferece, com sua variedade de recursos, consolidação no mercado, por ser livre, de código aberto, de distribuição gratuita e manutenção feita por várias empresas e desenvolvedores do mundo todo. Sendo assim é sem dúvida uma opção muito atraente para qualquer empresa. Segundo Lecheta (2009) o Android tem muitos diferenciais interessantes como a sua arquitetura realmente flexível, não existe diferença entre uma aplicação nativa da plataforma e uma feita ou customizada pelo usuário. É possível integrar aplicações nativas e feitas por terceiros de uma forma simples. A integração é uma das palavras-chave em aplicações corporativas, e a arquitetura do Android foi criada justamente pensando nisso. Hoje já é possível encontrar muitos aparelhos que utilizam o Android, mas em sua grande maioria utilizam o código sem alterações de grande impacto, apenas com alterações visuais e aplicativos nativos diferentes. Existem também customizações não oficiais que infringem acordos comerciais e disponibilizam aplicações e funcionalidade de forma ilegal. O diferencial da customização deste trabalho seria uma mudança no sistema de telefonia da plataforma juntamente com uma mudança de temas e uma integração com os serviços já disponibilizados por outros produtos de uma empresa.
18 ESTRUTURA DA MONOGRAFIA O capítulo um apresenta o tema principal do trabalho, bem como o problema e a justificativa do por que tratar do assunto em questão. Neste capítulo, também, são apresentados os objetivos que se pretendem alcançar com o desenvolvimento do projeto. O segundo capítulo visa o desenvolvimento teórico do tema proposto com base em referências bibliográficas. O tema do trabalho trata a customização de uma plataforma chamada Android para um telefone de mesa corporativo. Com base nisso, o capítulo dois deve abordar um breve estudo sobre a plataforma identificando suas características e parâmetros a serem desenvolvidos no projeto. No terceiro capítulo, é apresentado o método de desenvolvimento utilizado neste trabalho, assim como a arquitetura do sistema e as delimitações desta customização. O quarto capítulo, descreve a etapa de modelagem da customização proposta, descrevendo cada customização desejada para o sistema. No capítulo cinco, é descrita a etapa de desenvolvimento e validação das customizações propostas, assim como a apresentação em forma de tutorial das etapas necessárias para a customização da plataforma Android. No sexto capítulo, é apresentada a conclusão do trabalho, assim como dificuldades encontradas para a realização do mesmo e algumas considerações para possíveis projetos futuros.
19 19 2 PESQUISA BIBLIOGRÁFICA Neste capítulo é abordada a fundamentação teórica da monografia, apresentando temas como sistemas operacionais, sistemas embarcados, características do Android, customizações pré-existentes e softphones de código livre. 2.1 SISTEMAS OPERACIONAIS Segundo Tanenbaum (2009), o sistema operacional é o mais importante entre os programas do sistema, pois é através dele, que são controlados todos os recursos de hardware de um computador. É o sistema operacional também que fornece a base sobre a qual os programas de aplicativos são escritos e executados. A definição do sistema operacional como sendo o software que controla o hardware não está mais de acordo com a realidade, pois o panorama dos sistemas computacionais evoluiu de uma forma significativa nas últimas décadas, exigindo-se uma descrição mais rica e detalhada (DEITEL, 2005). Machado (2002) afirma que atualmente o hardware executa uma grande variedade de aplicações. Para aumentar a utilização do hardware de maneira mais eficiente, as aplicações passaram a ser executadas de forma concorrente. Se elas não forem cuidadosamente programadas poderão interferir umas nas outras. Esse panorama resultou na existência de uma camada de software chamada sistema operacional, que separa as aplicações do hardware que elas acessam e também fornece serviços que permitem que as aplicações sejam executadas de forma segura e efetiva. Segundo Oliveira (2001), o conceito de sistema operacional é de um software que habilita as aplicações a interagir com o hardware de um equipamento. O software que contém os componentes centrais do sistema operacional é denominado núcleo. Sistemas operacionais podem ser encontrados em dispositivos dos mais variados tipos, desde telefones celulares, automóveis, computadores pessoais e computadores de grande porte. Para Tanenbaum (2009), um sistema de um computador moderno é composto basicamente por um ou mais processadores, uma memória principal, discos magnéticos,
20 20 interfaces de rede e um conjunto de dispositivos de entrada e saída. Isto forma um sistema extremamente complexo, pois deve tomar conta de todos estes componentes, fazendo com que eles trabalhem de maneira correta e otimizada. Há algum tempo ficou claro que deveria encontrar-se uma maneira de afastar o usuário da complexidade do hardware. A forma encontrada, que vem evoluindo gradualmente, foi a de criar uma camada de software em cima do hardware, para que se possam gerenciar todos os componentes do sistema, apresentando-se ao usuário com uma interface simples de entender e de programar, essa camada de software nada mais é do que o sistema operacional (MACHADO, 2002). Para Tanenbaum (2009) a principal função do sistema operacional é esconder toda a complexidade do sistema, oferecendo ao programador um conjunto de instruções mais convenientes para o desenvolvimento de seu trabalho. Na grande maioria dos sistemas operacionais um usuário requisita ao computador que realize uma determinada tarefa, como por exemplo, executar uma aplicação para imprimir um documento, e o sistema operacional gerencia o software e o hardware para que a tarefa requisitada seja realizada. Deitel (2005) afirma que, acima do sistema operacional ficam os demais aplicativos do sistema, como os interpretadores de comando, compiladores e editores. Tais programas não fazem parte do sistema operacional, apesar de muitos fabricantes fornecerem eles juntamente. O sistema operacional é a porção de software que roda em modo kernel 8 ou modo supervisor, que tem como objetivo proteger o hardware da ação direta do usuário final da máquina, ação essa que pode ser desastrosa. Os demais componentes do sistema rodam no chamado, modo usuário e dependem do sistema operacional para terem acesso às funções dos hardwares da máquina. Segundo Machado (2002), para grande parte dos usuários, o sistema operacional é uma caixa-preta entre as aplicações e o hardware sobre o qual funciona, esse sistema assegura o resultado correto dadas as entradas adequadas. Sistemas operacionais são primordialmente gerenciadores de recursos, sejam eles de hardware ou de software. A interface entre o sistema operacional e os programas de usuário é feita através de uma série de instruções estendidas que o sistema operacional proporciona. Essas instruções são tradicionalmente conhecidas como chamadas de sistema, que podem ser implementadas de várias maneiras e variam de sistema operacional para sistema operacional, embora os 8 Módulo central de um sistema operacional. É a parte do sistema que é carregada em primeiro lugar, pois fornece todos os serviços essenciais do sistema.
21 21 conceitos tenham a tendência a serem na maioria dos casos semelhantes (TANENBAUM, 2009). Segundo Oliveira (2001), os sistemas operacionais liberam os desenvolvedores de software da obrigação de lidar com detalhes de hardware e outras operações. O sistema oferece uma série de chamadas a interfaces de programação de aplicativos também conhecidas como API 9 que os programadores utilizam para fazer manipulações do hardware e outras operações. A API fornece chamadas ao sistema pelas quais um programa instrui o sistema operacional a trabalhar, cabe ao desenvolvedor saber as rotinas que deve chamar para executar as tarefas específicas que deseja. Se um sistema operacional apresentar um ambiente propício ao desenvolvimento rápido e fácil de aplicações, ele e seu hardware têm maior probabilidade de aceitação no mercado. Um exemplo claro disso é o MS-DOS 10 que incentivou o desenvolvimento de milhares de aplicações, o que, por sua vez incentivou o mercado a adquirir computadores IBM 11 e compatíveis Componentes e objetivos seguintes: Segundo Deitel (2005), os componentes centrais de um sistema operacional são os Escalonador de processo, que determina quando e por quanto tempo um processo é executado em um processador. Gerenciador de memória, que determina quando e como a memória é alocada aos processos e o que fazer quando a memória principal estiver cheia. Gerenciador de entrada e saída, que atende as solicitações de entrada e saída dos dispositivos de hardware. Gerenciador de comunicações interprocessos ou IPC, que permite que os processos se comuniquem uns com os outros. 9 Sigla em inglês: Application Programming Interface. Consiste em um conjunto de rotinas, protocolos e ferramentas criadas para a construção de softwares. 10 Sigla em inglês: Microsoft Disk Operating System. Sistema operacional para computadores pessoais lançado no ano de 1981, pela empresa norte-americana Microsoft. 11 Empresa multinacional de tecnologia e consultoria norte-americana. Mais informações em:
22 22 Gerenciador de sistemas de arquivos, que organiza as coleções nomeadas de dados em dispositivos de armazenamento e fornece uma interface para acessar os dados nesses dispositivos. Para Tanenbaum (2009), um sistema operacional eficiente alcança um nível alto de rendimento e baixo tempo de retorno. O rendimento mede a quantidade de trabalho que um processador pode concluir em certo período de tempo, como uma das funções do sistema operacional é fornecer serviços a muitas aplicações, um sistema eficiente minimiza o tempo gasto oferecendo esses serviços. Um sistema operacional robusto tem tolerância a falhas e é confiável, logo não falhará devido a erros isolados de aplicações ou até mesmo de hardware e caso venha a falhar, deverá minimizar perdas. O sistema também deve ser escalável, isto é, ser capaz de usar recursos à maneira que são acrescentados e o seu poder deve crescer à medida que estes recursos são adicionados (DEITEL, 2005). Tanenbaum (2009) afirma que um sistema operacional deve ser extensível, adaptando-se bem a novas tecnologias e indo além de seu projeto inicial, deve ser portável de modo tal que possa operar em muitas configurações de hardware e seguro para impedir que usuários e softwares acessem serviços ou recursos sem autorização. Outra característica importante para um sistema operacional é a interatividade, ou seja, o sistema deve permitir que aplicações respondam rapidamente as ações do usuário ou a eventos, tornando-se assim um sistema utilizável que tem potencial para atender a uma grande porção de usuários Arquitetura dos sistemas operacionais Para Deitel (2005), os sistemas operacionais atuais têm uma tendência a serem muito complexos, pois prestam uma quantidade enorme de serviços e suportam uma variedade muito grande de recursos de hardware e software. Uma arquitetura bem elaborada ajuda o projetista e os desenvolvedores a gerenciar essa complexidade organizando os componentes do sistema operacional e especificando privilégios com que cada componente é executado. A arquitetura do tipo monolítica é a mais antiga, mais tradicional e a mais utilizada. Nela, cada componente do sistema operacional é contido no núcleo e pode
23 23 comunicar-se diretamente com qualquer outro componente através de chamadas de sistema. O sistema operacional Linux é em sentido amplo, caracterizado como um sistema operacional monolítico. Essa intercomunicação direta entre componentes é o que torna esses tipos de sistema altamente eficientes. Entretanto, pelo fato de que os núcleos monolíticos agrupam todos os componentes juntos, dificulta o isolamento de algum problema para identificação de erros. Além disso, como todo o código é executado com acesso irrestrito ao sistema, esses tipos de sistemas são particularmente mais suscetíveis a danos provocados por códigos sujeitos a erros e maliciosos (TANENBAUM, 2009). Deitel (2005) afirma que à medida que os sistemas operacionais ficaram maiores e mais complexos, projetos puramente monolíticos mostraram-se intratáveis, então surgiu à abordagem dos sistemas operacionais em camadas. Neste tipo de sistema os componentes que realizam tarefas semelhantes são agrupados em camadas, cada camada comunica-se exclusivamente com as camadas imediatamente acima e abaixo dela. Camadas em nível mais baixo prestam serviços as de nível mais alto, usando uma interface que oculta sua implementação. Neste tipo de implementação, uma requisição de um processo pode passar por varias camadas antes de ser atendida, e essas chamadas adicionais de métodos podem comprometer o desempenho do sistema comparando com os sistemas monolíticos. Muitos dos sistemas operacionais atuais incluindo o Windows XP 12 e o Linux 13 implementam um certo nível de camadas. Tanenbaum (2009) explica que um sistema operacional de micronúcleo fornece somente um número pequeno de serviços na tentativa de manter o núcleo pequeno e escalável. Nesses sistemas, a maioria dos componentes do sistema operacional é executada fora do núcleo com um nível de privilegio mais baixo. Micronúcleos exibem um alto grau de modularidade, o que os torna extensíveis, portáveis e escaláveis. Desta forma, um ou mais componentes podem vir a falhar sem que isso cause uma falha em todo o sistema. Entretanto esse nível de modularidade ocorre à custa de um nível maior de comunicação entre processos, o que pode degradar o desempenho do sistema. Atualmente os sistemas operacionais Linux e Windows 14, por exemplo, contêm componentes modulares. 12 Versão do sistema operacional produzido pela empresa Microsoft para uso em computadores pessoais lançado em agosto de Sistema operacional criado no modelo de software livre. 14 Sistema operacional produzido pela empresa Microsoft para uso em computadores pessoais.
24 SISTEMAS EMBARCADOS Segundo Barr (1999), um sistema embarcado é uma combinação de hardware e software destinada a executar uma função específica. Alguns exemplos são o forno de micro-ondas, um relógio digital ou até mesmo um vídeo game. Para Yaghmour (2009) por definição, todos os sistemas embarcados contêm um processador e um software, além disso, também possuem uma memória RAM, que é responsável por guardar dados temporariamente para que o processador os acesse rapidamente, e a memória ROM, que é utilizada apenas para leitura de dados, pois seus dados são permanentes, sendo que em alguns casos todos esses componentes podem estar agrupados em um único componente. Podem possuir também dispositivos de entrada e saída, para realizar interação com os usuários ou outros dispositivos. Segundo Deitel (2005), no que diz respeito ao sistema operacional, os sistemas embarcados proporcionam um desafio diferente. Estes sistemas embarcados são caracterizados por um pequeno conjunto de recursos especializados que fornecem funcionalidade a dispositivos como telefones celulares e PDAs 15. Em ambientes embarcados, o gerenciamento eficiente de recursos é a chave para a construção de um sistema operacional de sucesso. A capacidade de armazenamento frequentemente é limitada, portanto o sistema operacional deve fornecer serviços usando uma quantidade mínima de código. Considerações como o sobre o gerenciamento de energia (na maioria dos casos é através de bateria ou até mesmo pilhas) e a necessidade de interfaces amigáveis com o usuário criam inúmeros outros desafios para um projeto de sistemas operacionais embarcados Sistemas embarcados Linux Segundo Yaghmour (2009), o termo Linux se refere apenas a um kernel de sistema operacional que foi escrito por Linux Torvalds, este kernel fornece várias estruturas de sistema básicas necessárias para o correto funcionamento de qualquer sistema baseado em 15 Sigla em inglês: Personal Digital Assistant. Consiste em um computador pessoal com dimensões reduzidas.
25 25 Linux. Sendo assim, um sistema Linux pode ser construído de maneira personalizada, ou pode ser baseado em alguma distribuição já disponível. Yaghmour (2009) apresenta que, um sistema Linux embarcado se refere ao sistema completo voltado exclusivamente para dispositivos embarcados. Atualmente, os sistemas embarcados rodando Linux são mais onipresentes do que suas contrapartidas de servidor e estação de trabalho. Para Barr (1999), os sistemas embarcados podem ser classificados por alguns critérios que fornecerão informações reais sobre a estrutura do sistema como o tamanho, restrições de tempo, possibilidade de uso em rede e grau de interação com o usuário pretendido para o sistema final. Segundo Yaghmour (2009), um fato interessante é que o Linux não é controlado por uma única autoridade que dita seu futuro, sua filosofia e sua adoção ou não de uma determinada tecnologia. As comunidades de software livre e código aberto são à base de todo o desenvolvimento do Linux e são os principais agentes na área do Linux embarcado. Esta comunidade é constituída por diversos desenvolvedores que mantém e suportam os mais variados componentes de software que constituem um sistema Linux. Não há uma autoridade oficial dentro desse grupo, embora hajam figuras de referencia representativa, em vez disso há um grupo de indivíduos independentes, cada um com sua especialidade que ajudam a manter o projeto ativo e atualizado. Há muitas motivações para escolher Linux em vez de outro sistema operacional embarcado tradicional. Entre todos estes motivos podemos citar a qualidade e a confiabilidade do código, a disponibilidade de código, o suporte a hardware, os padrões de protocolos e softwares de comunicação, as diversas ferramentas disponíveis, suporte da comunidade, licenciamento, independência de fabricantes e o custo. 2.3 PRINCIPAIS PLATAFORMAS MÓVEIS CONCORRENTES DO MERCADO Este tópico tem como objetivo demonstrar algumas das principais plataformas para dispositivos móveis concorrentes do sistema Android que estão no mercado atualmente, elencando seus principais pontos positivos e suas características peculiares.
26 ios Segundo Apple (2012), o ios é um sistema operacional para dispositivos móveis que foi desenvolvido pela empresa americana Apple 16. Ele é derivado do sistema operacional MAC OS X 17 que é utilizado nos desktops e notebooks comercializados pela Apple. O sistema operacional móvel da Apple foi originalmente desenvolvido com o intuito de ser disponibilizado em sua linha de smartphones denominada iphone. Na figura 1 podemos visualizar alguns screenshots do ios 6. Figura 1 - Telas do ios 6. Fonte: Apple, Segundo Apple (2012), atualmente o sistema ios é utilizado também (com algumas pequenas modificações) em outros produtos da Apple como o tocador de mídia ipod Touch e o tablet ipad. 16 Empresa multinacional de eletrônicos e software norte-americana. Mais informações em: 17 Série de sistema operacionais desenvolvidos e comercializados pela empresa Americana Apple.
27 Versões do ios Segundo IDGNOW (2012), A primeira versão do sistema operacional, denominada ios 1.0, foi lançada em 29 de junho de 2007, juntamente com o smartphone iphone. A segunda versão do sistema operacional foi lançada em 11 de julho de 2008, juntamente com o iphone 3G, foi batizada de ios 2.0 e vinha pré-instalado de fábrica no iphone 3G. Os usuários que possuíam o iphone com a versão 1.0 do ios poderiam atualizar para esta versão através da internet. O ios 2.0, foi a primeira versão do sistema operacional que trouxe consigo o aplicativo App Store, que permite o download de aplicativos de terceiros para o aparelho. De acordo com IDGNOW (2012), a terceira versão do sistema operacional, lançado em 17 de junho de Batizado com o nome ios 3.0, ela foi disponibilizado para todos os modelos de iphone. As principais atualizações foram as novas funções de copiar e colar e a inclusão do suporte a mensagens multimídia. Dispositivos com ios 2.0 poderiam atualizar para este firmware através da internet. A quarta versão do sistema operacional foi lançada em 21 de junho de 2010 e tornou-se disponível ao público para o iphone e também para o ipod Touch. Com a versão ios 3.0, o iphone 3G e ipod Touch 2G tinham funções limitadas, enquanto o novo iphone 4, iphone 3GS, ipod Touch 4G e ipod Touch 3G tinham todas as funções habilitadas, logo, esta foi a primeira versão do ios que não ofereceu suporte integral a todos os dispositivos existentes. Segundo IDGNOW (2012), o ios 5.0 foi apresentado ao público no dia 6 de junho de Esta também foi a segunda versão do ios que não permitiu atualização para dispositivos mais antigos, no caso, o iphone 3G, ipod Touch 2G e versões anteriores dos mesmos, portanto era compatível com os dispositivos iphone 3GS, iphone 4, iphone 4, ipod touch 3G, ipod touch 4G, ipad e ipad 2. Segundo G1 Tecnologia (2012) a sexta e até então a atual versão do ios foi anunciada pela Apple em junho de 2012 e disponibilizada para os seus clientes em 19 de setembro de Um fato importante, é que todos os aparelhos que utilizam o ios podem atualizar para a versão do ios 6.0 e deste modo deixá-los com as suas funcionalidades em dia.
28 Características do sistema operacional Segundo Apple (2013), os principais recursos do ios atualmente são a interface elegante e intuitiva, o fato do hardware e o software serem feitos um para o outro, facilidade de atualização, facilidade no compartilhamento de mídia entre dispositivos da Apple, loja para aplicativos com maior número de aplicativos e com homologação das aplicações mais procuradas pelos seus usuários, segurança do sistema, acessibilidade, notificações via push 18 para atualização de aplicações como Twitter 19, Facebook 20, e agenda, padronização de suas bibliotecas de software, que possibilita que um aplicativo feito inicialmente para o smartphone iphone facilmente rode no tablet ipad ou nos tocadores de mídia ipods e o player de música herdado de seu primo ipod que conquistou o gosto de muitos usuários ao redor do mundo. Segundo Veja Abril (2013) as principais desvantagens do ios são as operações de troca de arquivos que dependem do software exclusivo fornecido pela Apple o itunes 21, em decorrência disso, uma ação simples como enviar uma música para seu aparelho, não pode ser feita segundo o conceito de copiar e colar tornando-se mais complexa, o ios suporta apenas o pareamento com dispositivos Bluetooth 22 da Apple (fones de ouvido, computadores, jogos), a loja de aplicativos é diferenciada por país, o que cria uma variação de quantidade e qualidade de aplicativos entre suas lojas, a falta do suporte a tecnologia Adobe Flash 23 que gera incompatibilidade com muitos sites também é um ponto negativo do ios. O fato de ser um sistema proprietário e fechado impossibilita os usuários de efetuarem customizações no ios, podendo fazer interações com o sistema somente através de aplicativos. 18 Forma de comunicação baseada na internet, onde o pedido de uma determinada transação (notificações) é iniciado por um servidor central. 19 Serviço de rede social on-line e serviço de blog que permite aos seus usuários enviar e ler mensagens de texto de até 140 caracteres. 20 Serviço de rede social on-line com intuito de conectar o usuário com seus amigos e pessoas do seu círculo social. 21 Aplicativo reprodutor de mídia e biblioteca de mídias desenvolvido pela empresa norte-americana Apple. 22 Tecnologia para troca de dados sem a utilização de fios em curtas distâncias. 23 Plataforma multimídia utilizada para interação com vídeo, gráficos e animações desenvolvida pela empresa Adobe.
29 Windows Phone Segundo IDGNOW (2013), o Windows Phone 7 (sigla WP7) é um sistema operacional proprietário desenvolvido pela empresa Microsoft 24. Ele é o sucessor do sistema Windows Mobile 6.5 que não agradou o público de smartphones. Dessa maneira a empresa remodelou totalmente o seu sistema de modo a fazer com que fosse mais amigável e acessível aos usuários. Na figura 2 podemos visualizar alguns screenshots do Windows Phone 7. Figura 2 - Telas do Windows Phone 7. Fonte: Windows Phone, Segundo IDGNOW (2013), os smartphones com este sistema embarcado chegaram ao mercado depois de seus principais concorrentes, seu lançamento deu-se no mês de fevereiro de Atualmente os principais fabricantes de smartphones que embarcam o Windows Phone em seus aparelhos são a Nokia 25 e a HTC. 24 Empresa multinacional de serviços e software norte-americana. Mais informações em: 25 Empresa multinacional de tecnologia finlandesa. Mais informações em:
30 Versões do Windows Phone Segundo Engadget (2013), a primeira atualização foi o Windows Phone 7 de codinome "NoDo". Apresentando melhorias como a função copiar e colar, melhor estabilidade da câmera, conexão Wi-Fi 26, mais agilidade para a ferramenta Outlook 27 e aumento de velocidade do sistema, essa atualização colocou a Microsoft de forma definitiva no mercado de smartphones. Ficou pouco tempo no mercado e antecedeu o grande lançamento da Microsoft. Engadget (2013), afirma que o Windows Phone 7.5, de codinome "Mango", apresentou as primeiras pistas do que poderia ser o futuro do seu sistema operacional para smartphones. Entre diversas novidades, a atualização, apresentou uma versão do Internet Explorer 9 28 com as mesmas características do navegador desenvolvido para o computador, integração com o Twitter e melhoria das ferramentas de troca de mensagens do Facebook e Messenger 29, tudo em conjunto com o acesso ao Windows Live Sky Drive 30, o centro de armazenamento da Microsoft na nuvem. Segundo Engadget (2013), o Windows Phone 7.5, de codinome "Tango" é considerada a última atualização para o WP 7. Porém na época do seu lançamento, notaram-se alguns pequenos problemas, já que os aparelhos mais antigos configurados para trabalhar com o sistema Windows não suportavam todas as funções inseridas na atualização. No entanto, para os aparelhos capazes de aproveitar as novidades do "Tango" ele ampliou a capacidade de enviar mensagens com imagens e vídeos e acrescentou um sistema de controle de roaming internacional. Para Engadget (2013), a versão 7.8 é praticamente um extra da Microsoft para os smartphones antigos, que não suportarão o WP 8. O novo visual da tela de abertura é um dos destaques, além disso, algumas das inovações do WP 8 estarão presentes no Windows Phone 7.8, garantindo uma opção ainda maior de usabilidade. O aplicativo do Skype 31 já deve vir 26 Padrão de tecnologia popular que permite que um dispositivo eletrônico troque dados sem fio com outros dispositivos através de ondas de rádio. 27 Gerenciador de informações pessoais desenvolvido pela empresa Microsoft. 28 Versão do navegador web desenvolvido pela empresa Microsoft. 29 Cliente de troca de mensagens desenvolvido pela empresa Microsoft. 30 Serviço de hospedagem de arquivos na nuvem desenvolvido pela empresa Microsoft. 31 Aplicação e serviços de voz sobre IP proprietária adquirido recentemente pela empresa Microsoft.
31 31 instalado de forma nativa, a navegação na internet deve ser mais veloz e os usuários também poderão usar mais funções simultâneas sem perda de velocidade. Segundo Tecnoblog (2013), atualmente a Microsoft se prepara para o anúncio da versão "Apollo" que de acordo com a mídia especializada, trata-se do Windows Phone 8. Os principais detalhes dessa nova versão serão a convergência total entre esse sistema e novo sistema operacional para desktop da Microsoft, o Windows 8. A inclusão nativa de diversas ferramentas que antes eram produzidas de forma separada, como Skype, o que agrega ainda mais desempenho à nova proposta da empresa americana. Entre os acréscimos que merecem destaque estão o sistema que permite a transmissão de dados sem a necessidade de cabos, o novo Internet Explorer 10 e o uso simplificado do pacote Office Resumo Segundo Tecnoblog (2013), com o Windows Phone a Microsoft criou uma nova interface de usuário, com sua linguagem e design moderno e totalmente diferente de seu antecessor, seguindo o padrão de sua versão para desktop também recém-lançada chamada de Windows 8. Tecnoblog (2013) afirma que, além disso, o software é integrado com serviços e aplicativos de terceiros e da Microsoft, e para a garantia de funcionamento satisfatório, a Microsoft estabeleceu requisitos mínimos para os hardwares no qual o WP é executado isso garante um desempenho mínimo do sistema. Atualmente o requisito mínimo para a plataforma é um dispositivo que possui uma CPU com 800 MHz e 256 MB de memória RAM. Windows Phone (2013) diz que o sistema também conta com uma loja de aplicativos, músicas e vídeos exclusiva para a plataforma WP a Windows Phone Store. Atualmente ela contém cerca de 120 mil aplicativos para download, entre pagos e gratuitos, que não são compatíveis com os aplicativos de seu antecessor o Windows Mobile. De acordo com Techtudo (2013), os principais contras do Windows Phone são a falta de alguns aplicativos muito utilizados por usuários de outros sistemas, isso se deve ao 32 Conjunto aplicações para desktops desenvolvido pela empresa Microsoft.
32 32 fato do lançamento tardio comparado com seus concorrentes, a falta de um gerenciador de arquivos nativos, a impossibilidade de transferir arquivos via Bluetooth e a falta de suporte a multitarefa. 2.4 ANÁLISE DOS SISTEMAS OPERACIONAIS PARA DIPOSITIVOS MÓVEIS Este tópico tem como objetivo, analisar as principais plataformas para dispositivos móveis, listadas no capítulo anterior que estão disponíveis no mercado, fazendo um paralelo com a plataforma Android e justificando sua escolha para a implementação deste trabalho Participação no mercado Segundo pesquisa realizada pela organização Internacional Data Corporation ou IDC sobre o mercado mundial de sistemas operacionais móveis no ano de 2012, apresentada na tabela 1 abaixo, 61% dos usuários utilizam a plataforma Android em seus dispositivos móveis contra 20,5% utilizando ios e 5,2% com Windows Phone. Tabela 1 Market Share mundial de sistemas operacionais para smartphones do ano de 2012 e previsão para Sistema Operacional Market Share 2012 Market Share 2016 Android 61.0% 52.9% Windows Phone 7/Windows Mobile 5.2% 19.2% ios 20.5% 19.0% BlackBerry OS 6.0% 5.9% Others 7.2% 3.0% Total 100.0% 100.0% Fonte: IDC (2013).
33 33 Esta mesma pesquisa, levando em consideração as vendas nos últimos seis anos e perspectivas de especialistas, prevê que no ano de 2016 a plataforma Android continuará líder de mercado com 52,9% dos usuários contra 19% do sistema ios da Apple 19,2% de usuários utilizando o Windows Phone da Microsoft Análise de viabilidade para customização A Apple não permite que o ios seja executado em hardwares de terceiros, ou seja, não é possível legalmente embarcar este sistema em um dispositivo próprio. O seu códigofonte também é fechado e não é disponibilizado ao público. Apenas o desenvolvimento de aplicativos para o ios é aberto ao público, para isso a Apple disponibiliza um kit de desenvolvimento de software (SDK) pago, que pode ser executado apenas em computadores fabricados pela Apple. Além disso, segundo Apple Developer (2013), para poder utilizar a loja de aplicativos oficial do ios, é necessário o pagamento de uma taxa anual e caso o aplicativo for pago, uma porcentagem da receita obtida com a venda, fica com a Apple. Assim como a Apple com o ios, a Microsoft também não liberou o código-fonte de seu sistema para dispositivos móveis o Windows Phone, ou seja, é um sistema proprietário. O desenvolvimento de aplicativos é aberto ao público, para isso o desenvolvedor precisa da ferramenta Windows Phone Developer Tools que pode ser executada somente em sistemas operacionais do tipo Windows, mas possui uma versão gratuita. A postagem de aplicativos na loja oficial funciona da mesma forma que na Apple, é necessário o pagamento de uma taxa anual e caso a aplicação não seja disponibilizada gratuitamente, uma porcentagem da arrecadação fica com a Microsoft. A plataforma Android utiliza uma filosofia diferente de seus principais concorrentes, apesar de ter sido adquirida por uma empresa privada (Google Inc.), ela manteve o projeto como open source e manteve seu código com a licença permissiva Apache, que habilita qualquer pessoa ou organização de modificar e/ou distribuir livremente o software sem nenhuma obrigação legal. Para o desenvolvimento de aplicativos e alterações no sistema operacional, não é necessário nenhum hardware especifico ou a compra de alguma licença. Ambos os processos
34 34 podem ser feitos sem custo, necessitando apenas de conexão com a internet para o download do código-fonte da plataforma ou do SDK para o desenvolvimento de aplicativos. Levando em consideração as informações obtidas, optou-se pelo desenvolvimento e customização da plataforma Android, pois é a única entre as principais plataformas do mercado que disponibiliza seu código livremente e também é a plataforma que mais cresce estatisticamente no mercado. 2.5 PLATAFORMA ANDROID Neste tópico, o objetivo é analisar e descrever de forma mais minuciosa características e peculiaridades específicas da plataforma Android como sua arquitetura, interface entre outros Arquitetura Android Open Source Project (2013) apresenta que o Android pode ter sua arquitetura dividida em quatro camadas: Linux kernel: o Android usa o kernel do Linux com algumas modificações em relação à versão original, com adição de funcionalidades através de módulos do kernel. Bibliotecas e serviços: nesta camada estão as bibliotecas do sistema, estas trabalham com a parte gráfica, manipulação de dados, entre outras funcionalidades. Nesta camada estão também os serviços providos para as camadas superiores, incluindo a Máquina Virtual Java 33 (chamada de Dalvik). A maior parte dessas bibliotecas está escrita em C 34 ou C++ 35 ; 33 Máquina virtual que pode executar bytecodes Java. 34 Linguagem de programação desenvolvida por Dennis Ritchie. 35 Linguagem de programação desenvolvida a partir da linguagem C por Bjarne Stroupstrup.
35 35 Framework: esta camada esta escrita quase que totalmente em Java 36, ela faz a interface com as aplicações do Android. Ela provém um conjunto de bibliotecas que permitem o acesso aos diversos recursos dos dispositivos como, localizador GPS, serviços de telefonia, acesso ao cartão de memória, entre outros. Aplicações: é aqui que ficam as aplicações, escritas em Java para o Android. Hoje existem cerca de 250 mil aplicações disponíveis para dispositivos Android e este número cresce continuamente todo dia. Figura 3 - Arquitetura da solução. Fonte: Android Developer, da plataforma Android. Na figura 3 podemos observar detalhadamente as divisões presentes na arquitetura 36 Linguagem de programação desenvolvida pela empresa norte-americana Sun Microsystems.
36 Kernel Linux Segundo Brahler (2010), o Android utiliza o kernel do Linux para prover vários serviços às aplicações que nele são executadas. Entretanto, esta versão do kernel Linux não é a original, ela foi modificada para melhor atender as necessidades existentes em dispositivos móveis, como a necessidade de gerenciamento de memória, controle de energia e do ambiente de execução. McDermott (2008) descreve o processo de portabilidade do Android 1.0 para um dispositivo da empresa Nokia, evidenciando que o kernel do Android contém 75 arquivos modificados, além de 88 arquivos adicionais com relação ao kernel original. Dentre as modificações estão uma CPU virtual, chamada de Goldfish, que executa instruções ARM926T e é utilizada pelo emulador Android. O sistema de arquivos de alto desempenho para memórias flash YAFFS2 (Yet Another Flash File System) também foi adicionado, além de correções de bugs relacionados ao Bluetooth e adição de funções para controle de acesso e debug. Segundo elinux (2012), o kernel utilizado pelo Android também introduz o Binder, que é um novo mecanismo para a comunicação entre processos e chamada remota de métodos, que permite que um processo possa chamar uma rotina em outro processo, e que é responsável pela identificação do método a ser invocado e da passagem dos argumentos entre os processos. Com relação à memória, o Android introduz o mecanismo Out-of-Memory Handler ou OOM, para terminar processos quando há falta de memória, além dos softwares Ashmem e Pmem, o primeiro é um alocador de memória compartilhada, com melhor suporte a dispositivos com pouca capacidade de memória, já o segundo é um alocador de memória de processo, e é utilizado para o gerenciamento de grandes regiões contíguas de memória física compartilhada entre o espaço dos usuários e drivers do kernel (ELINUX 2012). A elinux (2012) afirma que além das modificações descritas acima, o kernel Linux do Android também recebeu modificações relacionadas ao gerenciamento de energia, devido à própria natureza dos dispositivos móveis, e depuração de erros, com a introdução do Android Debug Bridge ou ADB, que é um protocolo executado sobre um link USB para comunicação com os dispositivos Android, além de um sistema de log separado do sistema do Linux que armazena mensagens no buffer do kernel.
37 Bibliotecas Segundo Pereira e Silva (2009), a camada de bibliotecas carrega consigo um conjunto de bibliotecas escritas nas linguagens C e C++ utilizadas pelo sistema, incluídas nesse conjunto da biblioteca, esta a biblioteca padrão da linguagem C, a Libc. Possui também bibliotecas das aéreas de multimídia, visualização de camadas 2D e 3D, funções para navegadores web, funções para gráficos, funções de aceleração de hardware, renderização 3D, fontes e funções de acesso ao banco de dados. Segundo o Android Open Source Project (2013), a plataforma Android, possui um conjunto de bibliotecas nativas escritas nas linguagens C e C++ que são utilizadas em vários componentes do sistema. Estas bibliotecas podem ser acessadas por frameworks disponibilizados para os desenvolvedores. Abaixo estão listadas algumas das principais bibliotecas do sistema Android, juntamente com um pequeno descritivo de suas funções: System C library: é uma derivação da biblioteca padrão da linguagem C (Libc), que foi adaptada para dispositivos embarcados baseados em Linux. Media Framework: biblioteca que provém o suporte a reprodução e gravação de vários formatos de vídeo, áudio e imagens no sistema como H , MP3 38, JPG 39 e PNG 40. Surface Manager: esta biblioteca gerencia o acesso aos recursos gráficos do sistema em 2D e 3D. Web Kit: prove o suporte ao navegador web utilizado na plataforma Android. FreeType: biblioteca responsável por renderizar as fontes de texto utilizadas no sistema. SQLite: sistema de banco de dados relacional muito utilizado em dispositivos embarcados por ser pequeno e ágil, ele esta disponível para todas as aplicações do sistema. 37 Método de definição de compressão de dados digitais de vídeo. 38 Método de definição de compressão de dados digitais de áudio. 39 Método para compressão com perdas para imagem digital. 40 Método para compressão de imagem digital sem perdas.
38 38 SSL: esta biblioteca fornece o suporte a criptografia do tipo Secure Socket Layer para a plataforma Android runtime Segundo Android Open Source Project (2013), a plataforma Android usa uma implementação customizada da máquina virtual Java (JVM) chamada Dalvik. Em vez de bytecodes Java, esta máquina virtual consome dexcode. Para isso, foi desenvolvida uma ferramenta chamada dx, que converte Java bytecodes (.class) em dexcodes (.dex). Sergio Prado (2012) coloca que desde a versão 2.2, o Android possui uma implementação JIT (Just-In-Time), que compila dexcodes para a arquitetura alvo em tempo de execução, tornando a execução dos processos consideravelmente mais rápida, já que não necessita interpretar dexcodes. Sergio Prado (2012) também afirma que junto com a máquina virtual Dalvik, o Android utiliza o framework Apache Harmony, desenvolvido pela Apache Software Foundation 41 como biblioteca padrão de classes Java Applications framework Segundo Android Developer (2013) ao fornecer uma plataforma de desenvolvimento aberta, o Android oferece também aos seus desenvolvedores a capacidade de construir aplicações extremamente ricas e inovadoras. Os desenvolvedores estão livres para aproveitar o hardware, o acesso às informações de localização do dispositivo, executar serviços em background, definir alarmes, adicionar notificações na barra de status, e muito mais. Segundo Android Developer (2013) os desenvolvedores têm acesso completo as mesmas APIs utilizada pelos aplicativos principais da plataforma. A arquitetura dos 41 Corporação norte-americana da área de software sem fins lucrativos. Mais informações em:
39 39 aplicativos é projetada para simplificar a reutilização de componentes, qualquer aplicação pode publicar suas capacidades e qualquer outra aplicação pode então fazer uso dessas capacidades (sujeito a restrições de segurança impostas pelo framework). O framework de aplicação fornece a todas as aplicações um conjunto de serviços e sistemas, os mais importantes estão listados abaixo: Um conjunto rico e extensível de views que podem ser usados para construir uma aplicação, incluindo listas, grades, caixas de texto, botões, e até mesmo um navegador web embutido. Provedores de Conteúdo que permitem que aplicativos acessem dados de outros aplicativos, como os contatos, ou para compartilhar seus próprios dados. O Resource Manager, que fornece acesso aos recursos como strings localizadas, gráficos e arquivos de leiaute. O Notification Manager que permite que todos os aplicativos exibam alertas personalizados na barra de status. Um Gerenciador de atividade que gerencia o ciclo de vida das aplicações do sistema Applications Segundo Pereira e Silva (2009), acima de todas as camadas citadas anteriormente, esta a camada de aplicativos, na qual se encontram todos os aplicativos, que hoje são fundamentais para plataforma Android. Os principais aplicativos disponíveis são clientes de , aplicativos de mapas, navegadores web, calendários, programa de SMS, gerenciadores de contatos, agendas, entre outros. Lechetta (2012) afirma que uma das vantagens da plataforma Android, é que ao desenvolver aplicativos para a mesma, basicamente são criados aplicativos em Java que serão executados na máquina virtual Dalvik. Dessa forma, para que uma aplicação seja executada na plataforma, ela não precisa ser necessariamente escrita para o Android, pois as aplicações em Java podem ser facilmente incorporadas ao Android.
40 40 Figura 4 - Tela do emulador do Android. Fonte: Android Developer, Segundo Android Developer (2013) os aplicativos são desenvolvidos na linguagem Java utilizando o software do kit de desenvolvimento (SDK). O SDK inclui um conjunto abrangente de ferramentas de desenvolvimento, incluindo um depurador, bibliotecas de software, um emulador (figura 4), documentação, código de exemplo e tutoriais. O ambiente de desenvolvimento suportado oficialmente integrado (IDE) é o Eclipse 42 utilizando o plugin chamado Android Development Tools ou ADT Interface Segundo Android Open Source Project (2013) a interface do usuário da plataforma Android é baseada em manipulação direta, esta é feita através de entradas de toque que correspondem a ações como, passar, tocar, beliscar e manipular objetos na tela. A resposta à entrada do usuário é imediata e fornece uma interface de toque com fluidez. Muitas vezes o recurso de vibração do dispositivo é utilizado para fornecer feedback tátil para o 42 Ambiente de desenvolvimento integrado que suporta vários tipos de linguagens de programação. Mais informações disponíveis em:
41 41 usuário. Hardwares internos, como acelerômetros, giroscópios e sensores de proximidade são usados por alguns aplicativos para responder às ações adicionais do usuário como, por exemplo, ajustar a tela do modo retrato para o modo paisagem dependendo de como o dispositivo é orientado, ou permitindo que o usuário dirija um veículo em um jogo de corrida através da rotação do dispositivo, simulando o controle de um volante. Segundo Android Open Source Project (2013) a tela inicial da plataforma Android, onde se inicia a experiência do usuário, é semelhante ao ambiente de trabalho encontrado em computadores pessoais. A home screen do Android é composta de ícones de aplicativos e widgets. Os ícones de aplicativos servem como um atalho para iniciar o aplicativo associado, enquanto que os widgets servem para exibir em tempo real informações como atualização de conteúdo, a previsão do tempo, do usuário ou notícias diretamente na tela inicial. A tela inicial pode ser composta de várias páginas que o usuário pode deslizar para trás e para frente, desta forma a interface do Android é personalizável, permitindo que o usuário ajuste a aparência do sistema de acordo com o seu gosto. Segundo Pereira e Silva (2009) existem aplicativos de terceiros disponíveis no Google Play ou em outras lojas de aplicativos que imitam a home screen de outros sistemas operacionais, como Windows Phone e ios. A maioria dos fabricantes e algumas operadoras de telefonia móvel personalizam a aparência de seus dispositivos Android para diferenciar-se da concorrência Aplicações Google De acordo com Google Play (2013), a loja Google Play (figura 5), anteriormente conhecida como o Android Market, consiste em uma central digital de distribuição de aplicações para a plataforma Android. Esta central foi desenvolvida e é mantida pela empresa Google. Este serviço permite aos usuários navegar e fazer download de diversas músicas, revistas, livros, filmes, programas de televisão e aplicações que foram publicadas neste serviço da Google. Segundo Google Play (2013), existem aplicações que estão disponíveis gratuitamente e outras que tem um custo, entretanto todas elas podem ser baixadas diretamente para um dispositivo Android através do aplicativo do Google Play ou através de
42 42 um computador pessoal acessando seu site. As aplicações disponíveis nesta central são geralmente direcionadas para usuários com base em um atributo particular de hardware de seu dispositivo, como um sensor de movimento (para o movimento de jogos) ou uma câmera frontal (para chamadas de vídeo). Segundo Gizmodo (2013), apesar de disponibilizar o download de músicas, filmes e programas de tevê, o principal cargo do Google Play são seus aplicativos, em março de 2012, havia mais de 450 mil aplicativos disponíveis para os usuários do sistema Android e cerca de 4,5 bilhões de aplicativos efetivamente instalados. Existem aplicações desenvolvidas por programadores de mais de 32 países. Ao disponibilizar um aplicativo pago neste serviço do Google, o desenvolvedor fica com 70% do preço cobrado pela aplicação e os 30% restantes ficam para os mantenedores. Segundo Google Play (2013), a aplicação utilizada nos aparelhos para ter acesso ao serviço do Google Play se chama atualmente Play Store, esta aplicação foi desenvolvida e é mantida pela Google. O Play Store consegue filtrar a sua lista de aplicativos de modo a apresentar a seus usuários apenas os aplicativos disponíveis para seu dispositivo. Figura 5 - Tela do Google Play acessado através de um navegador web (à esquerda) e tela do aplicativo Play Store para sistemas Android (à direita). Fonte: Google Play, Segundo Google Play (2013), tanto o Google Play quanto a aplicação Play Store não são open source, e dependem de acordos comerciais com as fabricantes dos dispositivos
43 43 para que possam ser instaladas e utilizadas, mas isso não impede que o usuário instale aplicativos de outra loja não oficial ou até mesmo os carregue manualmente no seu dispositivo Versões do Android Segundo Tecnoblog (2013), a primeira versão da plataforma, o Android 1.1, foi lançada em fevereiro de 2009 e incluía as funções de alarme, navegador web, calculadora, câmera, contatos, discador, , mapas, mensagens, música, galeria de imagens e configurações. Tecnoblog (2013) diz que a versão Android 1.5, batizada com o nome Cupcake, foi lançada em maio de Ela veio para mostrar que o sistema deveria ser levado a sério e continha as seguintes novidades em relação à versão anterior, gravação de vídeos, Bluetooth, upload de vídeos para o YouTube 43 e Picasa 44 e função de copiar e colar.. Segundo Tecnoblog (2013), em outubro de 2009 foi lançada a versão 1.6 do Android, batizada com o nome de Donut. Deu-se juntamente com o lançamento do smartphone HTC Hero e foi um dos marcos na história da plataforma, a partir daí que as pessoas começaram a ver o potencial da plataforma, e que a Apple e a Microsoft começaram a perceber que não estavam sozinhas no mercado. As principais novidades foram o novo Android Market para aplicativos, uma interface integrada de câmera, gravação de vídeos e galeria, com multi-seleção e deleção, busca por gestos, busca por voz, integração de aplicativos e grande melhoria no text-to-speech 45. Segundo Tecnologia IG (2013), o Android 2.0 de codinome Eclair, foi lançado em janeiro 2010, nesse momento que o público em geral começou a se perguntar qual eram os apelidos que o Google dava para o Android cada vez que uma versão nova era lançada. Ficou óbvia que era o nome de uma sobremesa. Esta versão adicionou a plataforma, velocidade de 43 Site para compartilhamento de vídeos de propriedade da empresa Google. Mais informações em: 44 Site para organizar, visualizar e compartilhar imagens através da internet de propriedade da empresa Google. Mais informações em: picasa.google.com 45 Software para síntese da fala que converte texto em voz.
44 44 hardware otimizada, mais opções de tamanhos e resolução de telas, uma interface de usuário melhorada, teclados virtuais melhorados, Bluetooth 2.1 e a nova versão do Google Maps 46. Segundo Tecnologia IG (2013) o Android 2.2 FroYo, lançado em Maio de 2010, incluía suporte a tecnologia Adobe Flash 10.1, processamento até 5 vezes mais rápido, home screen melhorada com atalhos dedicados, melhoria da câmera de vídeo com botões de controle na tela, a possibilidade de acender o LED para gravações de vídeo, múltiplas linguagens para teclados, possibilidade de salvar aplicativos no cartão de memória e discagem através de Bluetooth. Tecnologia IG (2013) afirma que o Android 2.3 foi batizado com o nome de Gingerbread e foi lançado em Dezembro de As principais mudanças foram a melhoria na função de copiar e colar, mudança das cores da interface, suporte à tecnologia NFC 47 (Near Field Communications), teclado padrão multitouch, melhorias no controle de aplicações rodando em background, adição do gerenciador de aplicativos no menu da tela principal, gerenciador de downloads e suporte a câmera frontal. Para Tecnoblog (2013), o Android 3.0 de codinome Honeycomb, foi a versão divisora de águas, esta foi feita exclusivamente para tablets. Com um design diferente, ela trouxe melhorias incríveis na plataforma. Algumas das melhorias são o design completamente diferente feito exclusivamente para telas grandes, barra do sistema, que é como a barra de notificações, barra de ações, que muda conforme o aplicativo, e serve para interagir com o aplicativo, multitarefas mais visual, com miniaturas dos aplicativos e mudança no visual dos aplicativos nativos. Android Developer (2013) afirma que Android 4.0 Ice Cream Sandwich foi o primeiro Android feito para uso tanto em tablets como em smartphones. A novidade mais chamativa é que o Android 4.0 ganhou um algoritmo de reconhecimento de face. Ele é capaz de identificar, por meio da câmera frontal, a pessoa que está em frente ao dispositivo. Esse recurso pode ser usado para destravar o dispositivo sem que seja preciso digitar uma senha. Nessa versão, o reconhecimento de voz foi expandido e permite que o usuário fale palavras ao telefone em vez de usar o teclado para escrever. Segundo Android Developer (2013), a tecnologia NFC (Near Field Communications), que permite fazer pagamentos aproximando o smartphone do terminal de caixa, ganha nova utilidade com o Android Beam. Esse recurso, incorporado ao Android 4.0, 46 Aplicativo web de serviço de mapeamento geográfico mantido pela empresa Google. 47 Conjunto de normas para dispositivos semelhantes para que estabeleçam comunicação via rádio ao ficarem próximos ou se encostarem.
45 45 possibilita transferir links, localizações no mapa, contatos e outras informações rapidamente entre dois smartphones ou tablets com Android. Basta aproximá-los e acionar o comando na tela. Tecnologia IG (2013) diz que o Android 4.1 chamado de Jelly Bean foi apresentado em junho de 2012 durante o evento Google I/O. Esta versão é parecida com o Android 4.0, porém o Jelly Bean traz novidades tanto na interação com o usuário como nas tecnologias que ficam ocultas no sistema e tornam o uso do dispositivo mais agradável. Segundo Tecnologia IG (2013), o Jelly Bean inclui um novo menu de acesso rápido bastante personalizável que fica na barra de notificações, aquela que é puxada do topo da tela do aparelho. Além disso, agora ele suporta vários perfis diferentes, cada um com cores e aplicativos variados de acordo com o gosto e a necessidade da pessoa, sendo ideal para quem compartilha o tablet ou smartphone com familiares ou colegas de trabalho, por exemplo. Segundo Tecnoblog (2013), a Google ainda adicionou uma nova forma de escrita no teclado, o Gesture Typing onde em vez de tocar em cada tecla na tela, basta deslizar o dedo por cada letra até formar a palavra. O sistema é bem parecido com o Swype 48, porém parece mais incrementado Google Nexus Segundo Google Nexus (2012) o Nexus consiste em uma linha de dispositivos móveis que utilizam o sistema operacional Android. Esta linha é produzida em conjunto com fabricantes de aparelhos móveis e são ideais para desenvolvedores da plataforma Android. Google Nexus (2012) afirma que o principal diferencial dos dispositivos desta linha para os convencionais é que estes não possuem nenhuma modificação no sistema operacional que geralmente são feitas pelas fabricantes ou por operadoras de telefonia móvel. Também possuem um bootloader destravado que permite ao seu usuário modificar seu firmware. Outra vantagem observada nestes aparelhos é o fato de que estes são os primeiros 48 Teclado virtual desenvolvido pela empresa Swype onde o usuário digita palavras deslizando o dedo ou caneta nas letras para formar a palavra desejada.
46 46 dispositivos a receberem atualizações do Android quando estas são disponibilizadas pela Google. GSM Arena (2012) diz que até o momento, já foram lançadas quatro versões distintas de smartphones da linha Nexus (figura 6). O primeiro foi batizado de Nexus One e foi fabricado pela empresa HTC e lançado em janeiro de Em dezembro de 2010 foi lançado do Nexus S fabricado pela sul-coreana Samsung, seu lançamento coincidiu com o lançamento do Android 2.3 GingerBread. O Galaxy Nexus também foi fabricado pela Samsung e lançado em novembro de O Galaxy Nexus até então, foi o único modelo da linha Nexus que foi comercializado oficialmente no Brasil, só que foi rebatizado aqui com o nome de Galaxy X. Figura 6 - Aparelhos descontinuados da linha Nexus. Nexus One (esquerda), Nexus S (centro) e Galaxy Nexus (direita). Fonte: Google Nexus, Segundo Google Nexus (2012), o smartphone da linha Nexus mais atual lançado em novembro de 2012 foi batizado com o nome Nexus 4 (figura 7). Ele é fabricado pela LG e foi o primeiro dispositivo móvel a utilizar a versão 4.2 Jelly Bean do sistema operacional Android.
47 47 Figura 7 - Visões do Google Nexus 4 fabricado pela LG. Fonte: Google Nexus, Segundo Google Nexus (2012), o Nexus 4 possui uma tela touchscreen de 4,7 polegadas Gorilla Glass, que possibilita uma resolução de 1280 x 768 pixels, o seu processador é um QualComm quad-core de 1,5Ghz, possui câmera frontal de 1,5MP de resolução e câmera traseira com 8 MP, ele também possui a inovadora característica de capacidade de carregamento de sua bateria sem a utilização de fios. 2.6 CUSTOMIZAÇÕES EXISTENTES NO MERCADO Este tópico tem como objetivo demonstrar alguns dos principais projetos que estão no mercado atualmente que visam à disponibilização de versões modificadas da plataforma Android para dispositivos embarcados, elencando seus principais pontos positivos, negativos e comparando-as entre si.
48 CyanogenMod O CyanogenMod consiste em uma distribuição personalizada para dispositivos que trabalham com o sistema operacional Android. Com base no Android Open Source Project, o CyanogenMod tem como objetivo aumentar o desempenho e a confiabilidade em relação aos firmwares liberados pelas fabricantes como Samsung, Sony, LG, etc. O CyanogenMod também oferece uma variedade de recursos e melhorias que não são atualmente encontradas nas versões do Android vindas de fábrica (CYANOGENMOD, 2012). Para CyanogenMod (2012), as principais alterações oferecidas pelo CyanogenMod estão contidas nas funcionalidades de câmera, player de música, travamento de tela, interface de usuário, gerenciamento de permissões e performance. Esta versão modificada está disponível para download diretamente no site da mantenedora. Atualmente o projeto é mantido através de um esforço colaborativo entre desenvolvedores independentes de todo o mundo e pela equipe própria do CyanogenMod. Figura 8 - Telas customizadas do CyanogenMod. Fonte: Cyanogenmod, Segundo Endgadget (2012), a customização fornecida pela CyanogemMod é muito interessante e está disponível para mais de 80 tipos diferentes de aparelhos. Tem como ponto positivo a agregação de funções muito pedidas pelos usuários e é sem dúvida a
49 49 modificação que faz mais sucesso entre os usuários do Android atualmente. Um ponto importante é que ao instalar um firmware de terceiros, automaticamente o usuário perde a garantia de fábrica do aparelho. Outro ponto fraco da utilização desta distribuição é a instalação, que demanda um conhecimento avançado do usuário e existe o risco de algo dar errado e o telefone ficar inutilizado Android Open Kang Project Segundo AOKP (2012), o Android Open Kang Project, também conhecido pela sua sigla AOKP, consiste em uma distribuição personalizada do firmware original do Android criada em novembro de 2011 por um estudante universitário chamado Roman Birg. Trata-se de uma versão criada com base no código-fonte disponibilizado através do Android Open Source Project (AOSP). A atualmente é conduzido como um projeto de software livre e existe uma comunidade que o mantém. Segundo AOKP (2012), o Android Open Kang Project é considerado uma das customizações mais rápidas do mercado e possui um poder de configuração muito maior que o disponibilizado pelo CyanogenMod. Existem mais de 400 mil downloads desta versão modificada do Android. Na figura 9 podemos visualizar alguns screenshots do AOKP. Figura 9 - Telas customizadas do AOKP. Fonte: AOKP, 2012.
50 50 Segundo Droidlife (2012), um dos pontos fracos do AOKP, é a inexistência de um cronograma de atualizações de novas versões e o fato de que está modificação não está disponível para um grande número de aparelhos Miui Segundo Miui (2012), a Miui é uma das customizações do Android disponíveis mais populares. Foi desenvolvida inicialmente pela empresa Xiaomi Tech 49 com licença do tipo código aberto. Miui (2012) afirma que o projeto é atualizado semanalmente baseado nas melhorias e bugs relatados pelos usuários. Originalmente estava disponível apenas no idioma chinês, posteriormente com o aumento do número de usuários e da comunidade de desenvolvedores passou a ter traduções para inglês, espanhol, português, entre outros idiomas. Na figura 10 podemos visualizar alguns screenshots do Miui. Figura 10 - Telas customizadas do Miui. Fonte: Miui, Companhia telefônica chinesa. Mais informações em:
51 51 Segundo Miui Brasil (2012), esta versão customizada promete melhoras na experiência de envio e recebimento de mensagens, uma interface customizável com dezenas de temas e suporte a animações, um sistema de proteção contra ligações e mensagens de spam e um gerenciamento de contatos sincronizado e interativo. Um ponto importante é que ao instalar um firmware de terceiros, automaticamente o usuário perde a garantia de fábrica do aparelho. Outro ponto fraco da utilização desta distribuição é a instalação, que demanda um conhecimento avançado do usuário e existe o risco de algo dar errado e o telefone ficar inutilizado Paranoid Paranoid (2012) afirma que o Paranoid é a única customização da plataforma Android que funciona tanto em smartphones quanto em tablets. Basicamente é uma versão híbrida baseada no código-fonte do CyanogemMod para smartphone que tem suporte para aplicativos de tablets. Segundo Paranoid (2012), as principais modificações efetuadas foram na tela de bloqueio, que foi igualada a usada na versão para tablets, no sistema de notificações e na disposição dos aplicativos que também herdaram as características do sistema para tablets, aproveitando melhor o espaço em celulares com telas maiores. Na figura 11 podemos visualizar alguns screenshots do Paranoid. Figura 11 - Telas customizadas do Paranoid. Fonte: Paranoid, 2012.
52 52 PocketNow (2012) afirma que, como pontos negativos do Paranoid, alguns aplicativos baixados diretamente da loja Google Play, tem um comportamento imprevisível e em alguns aparelhos a experiência de uso desta versão customizada é muito instável com travamentos recorrentes. 2.7 SOFTPHONES LIVRES Este tópico tem como objetivo demonstrar de forma sucinta alguns dos principais projetos de softphones com tecnologia VoIP de código livre e aberto, que estão disponíveis atualmente para compilação e execução na plataforma Android. Estes foram escolhidos com base no número de downloads e nota de qualificação na loja oficial Google Play Linphone Segundo Linphone (2013), o Linphone é um softphone mantido pela empresa francesa BelleDonne Communications 50. Ele é baseado em VoIP com suporte a chamadas de voz, chamadas com vídeo e troca de mensagens instantâneas. Utiliza o protocolo SIP 51 padrão, desta forma, está habilitado a ser utilizado com qualquer operadora VoIP SIP que tenha suporte ao SIP padrão. Linphone (2013) afirma que este softphone está sobre a licença de software livre GNU General Public License 52, logo qualquer pessoa ou empresa pode baixa-lo e redistribuílo gratuitamente. O Linphone atualmente está disponível para os sistemas desktops Linux, 50 Empresa francesa da área de softwares para telefonia. Mais informações em: 51 Protocolo de comunicação de sinalização amplamente utilizado no controle de sessões de comunicação multimídia, como chamadas de voz e vídeo sobre redes IP. Mais informações em: 52 Licença de software livre que garante aos usuários a liberdade de usar, estudar, utilizar, compartilhar e modificar um software.
53 53 Windows e Mac OS X e para dispositivos móveis no Android e IOS. Na figura 12 podemos visualizar alguns screenshots do Linphone para Android. Figura 12 - Telas do Linphone para Android. Fonte: Linphone, Segundo Linphone (2013), entre as principais características do Linphone destacam-se, o suporte aos codecs 53 de áudio G.729, G.711, GSM e ilbc, suporte aos codecs de vídeo H.263, H.264, VP8 e MPEG-4, suporte ao novo protoco IPV6 54, detecção e geração de DTMF, suporte a múltiplas chamadas com espera e música, agenda de contatos integrada com o sistema operacional utilizado e cancelamento de eco CSipSimple Segundo CSipSimple (2013), o software CSipSimple consiste em uma aplicação VoIP que utiliza o protocolo SIP e está disponível apenas para a plataforma Android. Ele foi 53 Programa capaz de codificar e decodificar um fluxo de dados digital ou um sinal. 54 Sigla em inglês: Internet Protocol Version 6. É a mais recente revisão do protocolo de comunicações via internet desenvolvido pela organização IETF. Mais informações em:
54 54 inicialmente criado pelo desenvolvedor Régis Montoya, mas atualmente é mantido por uma base comunitária de desenvolvedores liderados pelo próprio Régis que mantém o aplicativo atualizado constantemente com novas funcionalidades e correção de bugs. CSipSimple (2013) afirma que o software tem seu código mantido sobre uma licença de software livre e está disponível para download no repositório de códigos do Google. É um dos softphones SIP mais populares do Google Play com mais de 500 mil instalações e também possui uma avaliação muito boa dos usuários com a nota média de 4,4 de 5,0 estrelas no total. Na figura 13 podemos visualizar alguns screenshots do CSipSimple. Figura 13 - Telas do CSipSimple para Android. Fonte: CSipSimple, Segundo CSipSimple (2013) este softphone possui suporte para chamadas de áudio e vídeo através do protocolo SIP. Funciona com os principais codecs de áudio e vídeo do mercado como o G.729, G.711, GSM, H.263 e H.264. Possui o recurso de gravação de chamadas, cancelamento de eco, suporte a criptografia, conferência, transferência e temas visuais.
55 SipDroid Segundo SipDroid (2013), o SipDroid consiste em um softphone SIP escrito na linguagem Java criado especificamente para a plataforma Android. Este aplicativo foi criado pelo desenvolvedor Pascal Merle, sua primeira versão foi disponibilizada para o público em abril de Atualmente o SipDroid possui uma licença de software livre e é mantido por um grupo de desenvolvedores liderados pelo próprio Pascal. SipDroid (2013) afirma que Sipdroid utiliza o protocolo SIP padrão, desta maneira, ele está habilitado a ser utilizado com qualquer operadora VOIP que tenha suporte ao SIP padrão. Ele está disponível para download na loja de aplicativos oficial do Android (Google Play), onde possui mais de 500 mil instalações, além da nota 4 de um máximo de 5, recebida através das avaliações dos seus usuários. Na figura 14 podemos visualizar alguns screenshots do SipDroid. Figura 14 - Telas do SipDroid. Fonte: Sipdroid, Segundo SipDroid (2013), o softphone possui suporte a chamadas de áudio e vídeo, suporte a múltiplas contas, aos principais codecs de áudio e vídeo (G.711, GSM, G.722, H.264), suporte as funções de telefonia como chamada em espera e transferência.
56 56 3 MÉTODO Segundo Silva e Menezes (2005), o objetivo da metodologia é mostrar o caminho que a pesquisa irá seguir, é ajudar a refletir com uma nova perspectiva sobre o mundo, de maneira curiosa, indagadora e criativa. Identifica como se processam as operações mentais no processo de pesquisa científica. Mostra como é a abordagem científica pelos métodos: dedutivo, indutivo, hipotético-dedutivo, dialético e fenomenológico. A pesquisa é um trabalho em processo que não é totalmente controlável ou previsível, logo, adotar uma metodologia significa escolher um caminho, um percurso coerente, este por muitas vezes, requer uma revisão etapa por etapa. 3.1 CARACTERIZAÇÃO DO TIPO DE PESQUISA Silva e Menezes (2005, p. 19) conceituam pesquisa como um processo formal e sistemático de desenvolvimento do método científico. O objetivo fundamental de utilizar os procedimentos científicos é auxiliar os passos para alcançar a solução de problemas cuja resposta é desconhecida. Os tipos de pesquisa podem ser classificados do ponto de vista da natureza, do ponto de vista da forma de abordagem do problema, do ponto de vista dos objetivos e do ponto de vista dos procedimentos técnicos. Este projeto é considerado do ponto de vista da sua natureza como uma pesquisa aplicada por buscar uma solução prática para um problema específico. Do ponto de vista dos procedimentos técnicos, assume o tipo de pesquisa documental porque busca toda uma fonte de bibliografias que dão fundamentação aos tópicos levantados no segundo capítulo. Além de ser aplicada e documental, esta pesquisa é qualitativa do ponto de vista da abordagem do problema, pois se trata de uma pesquisa descritiva onde o pesquisador tende a analisar os dados intuitivamente.
57 ETAPAS METODOLÓGICAS Para o desenvolvimento do projeto, estabeleceram-se algumas etapas a serem seguidas para que o resultado final seja satisfatório, estas etapas estão definidas e representadas na figura 15 abaixo. Figura 15 - Etapas metodológicas. Fonte: Autor. De acordo com as etapas metodológicas apresentadas na figura, o trabalho será iniciado pela pesquisa bibliográfica, onde serão levantadas as informações na literatura referentes a sistemas operacionais, sistemas embarcados, plataforma Android entre outros temas relacionados. Finalizada esta revisão, inicia-se a análise dos requisitos do projeto, onde serão levantadas as necessidades para a customização da plataforma Android. A terceira etapa será a elaboração da modelagem da solução, seguida da definição das ferramentas que serão utilizadas para apoio ao desenvolvimento. Após a etapa de desenvolvimento (customização), está previsto uma etapa onde serão aplicados testes e validações, onde serão verificados possíveis equívocos e estabilidade da plataforma
58 58 customizada. O cronograma completo de execução deste trabalho (apêndice A) está localizado nos apêndices deste trabalho. 3.3 ARQUITETURA DA SOLUÇÃO A proposta da solução é customizar apenas alguns módulos da plataforma Android, para tanto não será necessário modificar a arquitetura original da plataforma, haja visto que esta arquitetura é uma solução testada e consolidada no mercado, atualmente é utilizada por um número muito grande de pessoas e foi desenvolvida por uma equipe global de desenvolvedores por mais de cinco anos. 3.4 DELIMITAÇÕES As tarefas a serem desenvolvidas neste projeto, devem ser limitadas a modelagem, customização e desenvolvimento das seguintes funcionalidades. a) validação da alteração da identidade visual; b) elaboração de relatório em forma de tutorial; c) modificação da camada de controle de chamadas; d) modificação da camada de aplicação de telefonia;
59 59 4 MODELAGEM DA PROPOSTA Uma das partes mais importantes de toda atividade que tem relacionamento com desenvolvimento de software é a modelagem da solução. Esta é feita para que se possa obter um panorama melhor do sistema e dessa maneira perceber e visualizar de forma mais prática a arquitetura da solução. Dessa maneira, observando a estrutura e o comportamento desejado do sistema, a simplificação e o reaproveitamento são facilitados, assim como o gerenciamento de riscos (BOOCH e RUMBACH, 2000). De acordo com Bezerra (2002), assim como na construção civil, na construção de sistemas de software também há certo grau de complexidade, sendo extremamente necessário um planejamento inicial, que equivale aos projetos arquitetônicos e estruturais na engenharia civil. Este planejamento tem o mesmo grau de importância nestas duas áreas distintas. Segundo Booch e Rumbaugh (2000), quando modela-se um sistema, identifica-se implicitamente o que esse sistema poderá fazer no futuro. Nesta etapa devem-se tratar as questões funcionais e o fluxo de dados. Desta maneira, esses modelos fornecem uma cópia do projeto de um sistema, que pode abranger planos detalhados, assim como planos gerais com uma visão mais panorâmica do sistema. Em um modelo bem feito, devem-se incluir os componentes que tem mais relevância e omitir os que não são de importância em um determinado nível de abstração. 4.1 MODELAGEM DA CUSTOMIZAÇÃO DA PLATAFORMA Nessa seção é apresentada a etapa de modelagem da validação da customização da plataforma Android. A customização se restringe as propostas descritas nesse capítulo, que servem para validar o conceito de plataforma customizável e elaboração do tutorial. Para ilustrar a proposta da customização, foram utilizadas imagens e artes que representam a identidade visual de uma empresa fictícia. Esta identidade visual pode ser alterada posteriormente de acordo com as orientações descritas no capítulo de desenvolvimento da proposta.
60 Alteração da identidade visual da plataforma A validação da alteração da identidade visual da plataforma proposta por este trabalho se restringe a duas modificações gráficas, a alteração da animação de boot do sistema e a alteração do papel de parede padrão da plataforma. Primeiramente, deve ser alterada a animação original de boot da plataforma. Esta animação, apesar de não ter um propósito funcional, tem como objetivo passar para o usuário do sistema um feedback amigável e atraente durante a inicialização do sistema operacional. Na plataforma Android, esta animação de boot aparece na tela do dispositivo quando o mesmo é iniciado, e sua duração varia de acordo com a rapidez com que o dispositivo inicia o sistema, que por sua vez depende da capacidade do hardware do mesmo (figura 16). Figura 16 - Capturas de telas das animações de boot de algumas versões da plataforma Android. Android 2.3 (esquerda), Android 4.0 (centro) e Android 4.1 (direita). Fonte: DroidLife, Cada sistema operacional possui suas particularidades no que diz respeito ao feedback do processo de boot, enquanto alguns mostram informações em tempo real do processo de inicialização do sistema, como algumas distribuições do Linux (figura 17).
61 61 Figura 17 - Tela de boot do Linux. Fonte: LifeHacker, Outros como a plataforma Android e o sistema operacional Windows (figura 18), apresentam um feedback gráfico ao usuário, não mostrando informações textuais da inicialização do sistema aos seus usuários. Figura 18 - Tela de boot do Windows. Fonte: LifeHacker, 2013.
62 62 Para ilustrar a validação da troca de animação de boot deste trabalho, foi escolhida uma animação previamente existente (figura 19), esta foi retirada de um fórum para customizações da plataforma Android chamado DroidLife 55, neste site são distribuídas diversas animações de forma livre e gratuita e o link para acesso encontra-se nas referencias deste trabalho. Figura 19 - Captura de tela da animação de boot proposta. Fonte: DroidLife, Para atingir por completo os objetivos de validação da customização, o papel de parede padrão da plataforma Android também deve ser alterado por um papel de parede customizado. Segundo LifeHacker (2013) a plataforma Android possui alguns requisitos específicos em relação a exibição de imagens como papel de parede. No Android o papel de parede não é tratado como uma imagem fixa, como acontece em outros sistemas operacionais, o que torna a opção de customizá-lo um pouco mais trabalhosa do que uma simples operação de copiar e colar. 55 Mais informações em:
63 63 Figura 20 - Papel de parede padrão da versão 4.0 do Android. Fonte: Android Developer Segundo LifeHacker (2013), antes de definir um papel de parede customizado para a plataforma Android, é preciso entender como o Android lida com o mesmo, na figura 20 podemos observar um papel de parede padrão do Android. Nos dispositivos Android, a visualização do papel de parede muda de acordo com o movimento entre as tela iniciais do sistema. Por exemplo, em um sistema Android que possui três telas iniciais, a imagem escolhida deve ter duas vezes o tamanho da tela do dispositivo para que se ajuste de forma correta. Para ilustrar a validação da troca do papel de parede padrão da plataforma, foi escolhida uma imagem previamente existente (figura 21). Esta imagem também foi retirada de um site com tutoriais para customizações da plataforma Android chamado DroidLife, o link para acesso encontra-se nas referencias deste trabalho. Na figura a seguir pode-se observar a imagem escolhida.
64 64 Figura 21 Papel de parede proposto para a customização. Fonte: DroidLife, A figura 22 abaixo é uma representação de como deve ficar o papel de parede escolhido para ilustrar a customização da plataforma em cada uma das três telas iniciais do Android. Observa-se que medalhão com o logotipo que aparece integralmente na tela central, aparece de forma parcial nas telas da direita e esquerda, aprimorando para o usuário a sensação de movimento durante as trocas de telas. Figura 22 - Demonstração da visualização do papel de parede nas telas do Android. Fonte: DroidLife, Com modificações.
65 65 O papel de parede da plataforma, apesar de ter sua opção padrão alterada, ainda pode ser alterado pelo usuário. A aplicação do Android responsável pelo gerenciamento dos papéis de parede não deve ser alterada, preservando sua função e desta maneira possibilitando ao usuário a livre escolha entre os papéis de parede disponíveis no sistema Substituição de aplicação de telefonia celular por módulo VoIP A proposta deste trabalho também inclui como um dos objetivos a substituição das aplicações de telefonia celular originais da plataforma por um módulo puramente dedicado a telefonia VoIP. Para tal, as aplicações que dependem da conexão com os serviços das operadoras de telefonia celular, devem ser substituídas por outra semelhante, porém que dependem apenas de conexão a internet. Na figura 23 abaixo podemos visualizar algumas informações das aplicações de Telefone e Mensagens. Figura 23 - Informações das aplicações Telefone e Mensagens. Fonte: Autor.
66 66 As aplicações padrões de Android denominadas Telefone e Mensagens devem ser removidas, pois elas mantêm comunicação e dependem do sistema de telefonia celular. Segundo Android Developers (2013) a aplicação Telefone tem como principais funções monitorar informações básicas da rede de telefonia como o tipo de rede, estado da conexão, manipulação de sequências de números de telefone e a realização e recebimento de chamadas. A aplicação Mensagens tem como principais funções o gerenciamento das operações de mensagens, o envio de dados e controle do serviço de mensagens. Ao trocar as aplicações de Telefone e Mensagens por uma aplicação VoIP, é acrescentada à plataforma Android uma nova característica, o acesso ao sistema de telefonia VoIP. Esta alteração também exclui a necessidade de conexão com operadoras de telefonia celular para a realização e recebimento de chamadas telefônicas, dependendo apenas de conexão com a internet para habilitar o serviço de voz sobre IP. Desta maneira também não é mais necessário a utilização de módulos de hardware para telefonia celular nos dispositivos que utilizarem esta customização da plataforma Android. Para atingir os objetivos deste trabalho, se fez necessário a escolha de um softphone de código aberto e livre que pudesse substituir a aplicação de Telefone que está contida na versão original da plataforma Android. Levando em consideração todas as informações obtidas sobre softphones no capítulo 2.7, optou-se pela utilização do softphone denominado Linphone. Todos os softphones avaliados neste trabalho possuem as condições básicas para serem utilizados neste trabalho de customização (chamadas de áudio e troca de mensagens de texto), entretanto o Linphone possui alguns diferencias como suporte a múltiplas chamadas, inclusão do novo codec de vídeo VP8 56 e suporte a novo protocolo IPv6. Na figura 24 abaixo podemos visualizar algumas informações da aplicação Linphone. 56 Formato de compressão de vídeo de propriedade da empresa Google.
67 67 Figura 24 - Informações da aplicação Linphone. Fonte: Autor. O Linphone possibilita ao usuário funções semelhantes às aplicações substituídas de Telefone e Mensagens como a troca de mensagens instantâneas, chamadas de áudio e acrescenta a possibilidade de realização de chamadas com vídeo Modificação na camada de aplicação A modificação na camada de aplicação se faz necessária pelo fato de que a plataforma originalmente, dependente do sistema de telefonia celular para a realização de algumas funções, por diversas vezes, tem uma interação com a aplicação de Telefone.
68 68 Figura 25 Screenshots da interação entre plataforma e aplicação de Telefone nativa. Fonte: Autor. Por exemplo, ao entrar em um site ou ler uma mensagem de texto, caso no conteúdo do site ou no corpo da mensagem estiver contida uma sequência de números identificada como um número telefone pela plataforma, um atalho para realizar uma ligação automaticamente aparece, se o usuário interagir tocando no número a aplicação de Telefone é iniciada com o seu discador preenchido com o número de telefone previamente identificado (ver figura 25). Este comportamento do sistema deve ser alterado, de modo que o sistema ao identificar um número telefônico e o usuário interagir no sentido de efetuar uma ligação, a aplicação Linphone deve ser aberta com o discador preenchido com o número de telefone, assim como o sistema original.
69 69 5 DESENVOLVIMENTO Neste capítulo são apresentados os passos envolvidos no desenvolvimento da proposta de customização deste trabalho. Esta apresentação se da utilizando o formato de tutorial onde são demonstrados todos os passos e requisitos necessários para a compilação e posteriormente para a validação da customização da plataforma Android. O formato tutorial tem o intuito de servir como base para que outras pessoas ou empresas possam utilizar este trabalho como um documento a ser seguido para a customização do Android, conforme definido nos objetivos. 5.1 INICIALIZANDO O AMBIENTE DE DESENVOLVIMENTO Esta seção descreve como configurar seu ambiente local de trabalho para iniciar o processo de customização, como utilizar o software Repo 57 para obter os arquivos do códigofonte do Android, e como compilar os arquivos em sua máquina. Para compilar o códigofonte do Android, é necessário utilizar um computador com o sistema operacional Linux ou Mac OS X, pois a compilação utilizando o sistema operacional Windows não é suportada atualmente. Neste trabalho foi utilizado uma distribuição muito comum do sistema operacional Linux chamada Ubuntu 58, na versão LTS para processadores de 64 bits. Que apesar de antiga, ainda está sendo atualizada constantemente. É importante salientar que para o download e armazenamento do código-fonte do Android é necessário aproximadamente 8,5 GB de espaço no disco rígido. Para compilar o Android para apenas um dispositivo, é necessário mais de 30GB espaço livre e até 100GB para um conjunto completo de compilação para vários dispositivos. 57 Ferramenta construída pela Google com intuito de gerenciar vários repositórios Git. Mais informações em: ssl.google.com/dl/googlesource/git-repo/repo 58 Mais informações disponíveis em:
70 ESCOLHENDO UMA VERSÃO Alguns dos requisitos para a configuração do ambiente de desenvolvimento da plataforma Android são determinados por qual versão do código-fonte pretende-se compilar. No site do Android Open Source Project, existe uma lista completa com todas as versões disponíveis para download. Para este trabalho, é utilizada a versão mais recente do código-fonte, chamada também de versão master. Esta corresponde atualmente à versão android-4.1.2_r1 de nome Jelly Bean. 5.3 CONFIGURANDO UM AMBIENTE DE COMPILAÇÃO PARA LINUX Segundo Android Open Source Project (2013) a compilação do Android é rotineiramente testada in house na versão do Ubuntu LTS, mas a maioria das distribuições Linux devem ter as ferramentas requeridas para a compilação. Para as versões do Android 2.3 e versões mais recentes, incluindo a versão master, é necessário um ambiente de 64 bits. Versões mais antigas podem ser compiladas em sistemas de 32 bits. Também é possível compilar o Android em uma máquina virtual. Os requisitos mínimos para a compilação utilizando o Linux em uma máquina virtual é de pelo menos 2GB de RAM e 30GB ou mais de espaço no disco rígido. Nos capítulos a seguir são listadas instruções detalhadas para a configuração do ambiente no Ubuntu. Estas instruções aplicam-se a todas as versões, incluindo a versão master. Em geral são necessários os seguintes softwares de terceiros: Python 2,6-2,7, que pode ser baixado no site python.org. GNU Make 3,81-3,82, que pode ser baixado no site gnu.org,
71 71 JDK 59 6, se você quiser compilar a versão Gingerbread ou uma mais recente, ou o JDK 5 para a compilação da versão Froyo ou mais antiga. Ambos podem ser baixados no site java.sun.com. Git 1.7 ou mais recente. Pode ser baixado no site git-scm.com Instalando o JDK Atualmente os pacotes do JDK não estão mais no repositório principal de pacotes da versão LTS do Ubuntu. Dessa forma, para fazer o download é necessário adicionar o repositório apropriado para indicar ao sistema qual JDK deve ser usado. Para baixar o Java 6, necessário para as versões Gingerbread e mais recentes, é necessário executar os seguintes comandos: $ sudo add-apt-repository "deb lucid partner" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk O comando sudo provém ao usuário permissão de super usuário no Linux, ou seja, é necessário para instalação de programas, tarefas administrativas do sistema, alteração em configurações importantes, etc. O comando add-apt-repository adiciona a URL que está entre parênteses, na lista de repositórios do Apt, que por sua vez é a ferramenta do Ubuntu para download de pacotes. O comando update do Apt, atualiza a lista de repositórios e o comando install, instala determinado pacote, no caso o sun-java6-jdk. Para baixar o Java 5 necessário para as versões Froyo e mais antigas, é necessário executar os seguintes comandos: 59 Sigla em inglês: Java Development Kit. Mais informações em:
72 72 $ sudo add-apt-repository "deb hardy main multiverse" $ sudo add-apt-repository "deb hardyupdates main multiverse" $ sudo apt-get update $ sudo apt-get install sun-java5-jdk Instalando pacotes necessários para o Ubuntu Para fazer o download e instalação dos pacotes necessários para a compilação do Android na versão do Ubuntu de 64 bits, é necessário digitar o seguinte comando no terminal do Linux. $ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \ libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \ libxml2-utils xsltproc Este comando instalará todos os softwares e bibliotecas necessárias para a compilação da plataforma Android. Segundo Android Open Source Project (2013), a compilação utilizando outras versões do Linux é considerada experimental e não existe garantia de funcionamento Configurando o acesso USB No sistema operacional Ubuntu, por padrão, os usuários comuns não tem permissão de acessar diretamente dispositivos USB. Para utilizar algum dos dispositivos da
73 73 linha Nexus no processo de compilação e customização da plataforma, o sistema precisa ser configurado para permitir o acesso direto a estes dispositivos. Dessa forma para que o acesso aos dispositivos seja permitido pelo Ubuntu, é necessário criar o arquivo /etc/udev/rules.d/51-android.rules (como super usuário ) e em seguida, copiar as linhas abaixo dentro dele, substituindo as expressões <nomedeusuário>, pelo nome real do usuário no Linux que esta sendo autorizado a acessar os dispositivos USB listados. # adb protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>" # fastboot protocol on passion (Nexus One) SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>" # adb protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>" # fastboot protocol on crespo/crespo4g (Nexus S) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>" # adb protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>" # fastboot protocol on stingray/wingray (Xoom) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>" # adb protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>" # fastboot protocol on maguro/toro (Galaxy Nexus) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>" # adb protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>" # fastboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>" # usbboot protocol on panda (PandaBoard ES) SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010",
74 74 MODE="0600", OWNER="<username>" # adb protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>" # fastboot protocol on grouper/tilapia (Nexus 7) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>" # adb protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>" # fastboot protocol on manta (Nexus 10) SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>" Este arquivo configura o acesso USB no Linux para todos os dispositivos da linha Nexus. Depois de o arquivo ser salvo, estas regras entram em vigor no momento que um dispositivo USB é plugado. Entretanto, caso ele já esteja conectado, pode ser necessário desligar e ligar novamente o computador Configurando a ferramenta CCache Esta é uma configuração opcional, ou seja, não é obrigatória para o funcionamento da compilação do Android. A ferramenta CCache atua como um cache do compilador que pode ser usado para acelerar a compilação. Ela é extremamente útil caso seja necessário executar por muitas vezes o comando make clean (que serve para limpar a compilação do sistema) ou quando o Android é compilado para diferentes dispositivos em um curto espaço de tempo. Para configurar o CCache é necessário executar o comando abaixo no terminal, para manipular a variável de ambiente do CCache. export USE_CCACHE=1
75 75 Por padrão, o cache será armazenado em ~/.Ccache. O tamanho do cache sugerido é entre 50GB até 100GB. É necessário executar o seguinte comando para efetuar esta configuração: prebuilts/misc/linux-x86/ccache/ccache -M 50G Esta configuração fica armazenada no diretório CCACHE_DIR da pasta home do usuário e é persistente. 5.4 BAIXANDO OS ARQUIVOS DO CÓDIGO-FONTE Esta seção descreve os procedimentos necessários para que se efetue o download do código-fonte da plataforma Android de forma correta utilizando algumas ferramentas disponíveis para tal Instalando o Repo Segundo Android Open Source Project (2013), o software Repo é uma ferramenta de gerenciamento de repositório construída com base no Git. O Repo unifica os vários repositórios do Git e automatiza parte do fluxo de trabalho de desenvolvimento do Android. Segundo GitHub (2013) o Git é um sistema de controle de versão de código aberto projetado para lidar com grandes projetos que estão distribuídos em vários repositórios. O Repo não se destina a substituir o Git, apenas tem como objetivo, tornar mais fácil trabalhar com Git no contexto do Android. O comando repo é um script executável escrito na linguagem Python 60 que você pode colocar em qualquer lugar de sua variável PATH 61. Ao 60 Linguagem de programação de uso geral e de alto nível. Mais informações em: 61 PATH é uma variável de ambiente dos sistemas Linux que especifica um conjunto de diretórios onde os programas executáveis estão localizados.
76 76 trabalhar com o código-fonte do Android, o Repo é utilizado para operações de rede, como por exemplo, com um único comando Repo, baixar arquivos de vários repositórios em seu diretório local. No contexto do Android, o Git é utilizado para as operações locais, tais como, commits, diffs, e edições. Para instalar, inicializar e configurar o Repo é necessário seguir os seguintes passos: Certificar-se de que exista uma pasta bin/ no diretório /home, e que está incluído na PATH: $ mkdir ~/bin $ PATH=~/bin:$PATH Efetuar o download do script de Repo com o comando curl e garantir que ele é executável com o comando chmod : $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo Inicializando um cliente Repo Depois de instalar o Repo, é necessário configurar o cliente para acessar o repositório do código-fonte do Android, para tal é necessário seguir os seguintes passos: Criar um diretório vazio para armazenar seus arquivos de trabalho com o comando mkdir abaixo, pode-se definir um nome de diretório qualquer. Neste trabalho utilizei o nome android. Após a criação, entre no diretório com o comando cd. $ mkdir android $ cd android
77 77 Executar o comando repo init para baixar a última versão do Repo com todas as alterações e correções de bugs mais recentes. É necessário especificar uma URL 62 que define qual dentre os vários repositórios do código-fonte do Android será colocado dentro do diretório de trabalho. No caso abaixo a URL está especificando a versão master do código-fonte. $ repo init -u https://android.googlesource.com/platform/manifest Para baixar uma versão diferente da "master", utilize o comando com o parâmetro b no final seguido do nome da versão, conforme exemplo abaixo: $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 Depois que o download estiver terminado, é solicitado que se configure o Repo com o seu nome e . Se tudo ocorrer com sucesso, uma mensagem informando que Repo foi inicializado em seu diretório de trabalho aparece no final e o diretório utilizado, agora deve conter uma pasta chamada.repo onde os arquivos do Repo devem ser mantidos Baixando os arquivos Para fazer o download dos arquivos do código-fonte da plataforma Android, no diretório de trabalho a partir do repositório especificado, é necessário a execução do seguinte comando: $ repo sync 62 Sigla em inglês: Uniform Resource Locator. É uma abreviação também conhecida como endereço web.
78 78 Os arquivos fontes do Android ficam localizados no diretório de trabalho com seus nomes do projeto. Essa operação de sincronização inicial com o comando repo sync pode demorar uma hora ou mais para ser concluída, contudo, isso depende da velocidade de conexão com a internet. 5.5 COMPILANDO O ANDROID Esta seção descreve os procedimentos necessários para que se efetue a compilação do código-fonte da plataforma Android de forma correta através de uma sequência de comandos Inicializando Primeiramente é necessário inicializar o ambiente de desenvolvimento com o script chamado envsetup.sh. Para isto é preciso executar o comando abaixo na pasta destino do projeto Android. $ source build/envsetup.sh Pode-se também executar o mesmo comando trocando a palavra source, por um ponto (. ) que também é bastante comum em algumas documentações.
79 Escolhendo um destino Antes de inicializar a compilação do Android, se faz necessário escolher o destino ( target ) da compilação, ou seja, para qual dispositivo a plataforma está sendo compilada. O destino pode ser passado como argumento executando o comando abaixo: $ lunch full-eng O exemplo acima se refere a uma compilação completa para o emulador, com toda a depuração habilitada. Compilar para o target emulador, significa que um dispositivo virtual será simulado no próprio computador onde a compilação esta sendo realizada. Se executado sem argumentos, o comando lunch irá solicitar a escolha do target a partir de um menu. Para executar o configurador lunch passando o destino como parâmetro, é necessário utilizar a forma BUILD-BUILDTYPE, onde o BUILD é o codinome referente a uma combinação de facilidades e o BUILDTYPE se refere ao tipo de compilação. Abaixo são apresentadas as tabelas 2 e 3 com alguns tipos de BUILDS e de BUILDTYPES mais comuns da plataforma. Tabela 2 - Tipos mais comuns de Builds da plataforma Android. Build Dispositivo Notas full full_maguro full_panda emulador maguro panda Totalmente configurado com todas as linguagens, aplicações e métodos de entrada para execução no emulador. Compilação completa para o dispositivo smartphone Galaxy Nexus. Compilação completa para o execução na placa de desenvolvimento PandaBoard. Fonte: Android Open Source Project (2013).
80 80 Tabela 3 - Tipos mais comuns de Buildtypes da plataforma Android. Buildtype user userdebug eng Usar Acesso limitado, adequado para produção. Acesso limitado, mas com acesso super usuário e debug, adequado para depuração. Configuração de desenvolvimento com ferramentas de depuração adicionais. Fonte: Android Open Source Project (2013). Informações sobre a compilação do Android para hardwares específicos estão descritas na sessão Compilando o código-fonte A compilação do código-fonte do Android é feita utilizando a ferramenta GNU Make 63. Esse software pode lidar com tarefas paralelas através do argumento jn, em que o N corresponde ao número de tarefas simultâneas. Para otimização do uso da CPU este número deve ser entre 1 e 2 vezes o número de threads de hardware que o computador que está sendo usado para a construção suporta. Abaixo segue o comando necessário para o início do processo de compilação com 4 tarefas simultâneas. $ make -j4 Em uma máquina dual core E5520, por exemplo, que possui 2 CPUs, quatro núcleos por CPU, 2 threads por core, as compilações mais rápidas são feitas com comandos que variam entre make -j16 e make -j Utilitário que cria automaticamente programas executáveis e bibliotecas de código fonte. Mais informações em:
81 Executando o Android Pode-se executar o resultado da compilação utilizando o emulador disponível na plataforma ou gravá-lo diretamente em um dispositivo. Isso também depende do target de compilação escolhido com o comando lunch. Se a compilação para o emulador foi escolhida, é adicionado automaticamente durante a compilação o caminho para a execução do emulador. Assim basta digitar o comando abaixo para que o emulador carregue o resultado da compilação da plataforma Android. $ emulator Na sessão 5.6.4, sobre compilação para dispositivos, encontram-se informações mais detalhadas sobre a gravação do Android em hardwares específicos. 5.6 COMPILAÇÃO PARA DISPOSITIVOS Essa sessão complementa a sessão 5.5 sobre a compilação do Android e tem como objetivo demonstrar como é feita a compilação para dispositivos específicos. Com a versão do Android é possível compilar para os dispositivos Nexus 4, Nexus 10, Nexus 7 e para algumas variantes do Galaxy Nexus. O nível exato de funcionalidade para cada dispositivo depende da disponibilidade dos binários proprietários específicos de cada hardware. Para o Nexus 4, codinome "mako" e para o Nexus 7, codinome "garoupa" (Wi-Fi) e "tilapia" (Mobile), todas as configurações podem ser usadas, e todo o hardware está funcionando. Devido às diferenças de hardware, não deve usar a versão em um Nexus 7, pois ele foi originalmente comercializado com a versão ou mais recente.
82 82 Todas as configurações do Nexus 10, codinome "manta" podem ser usadas. Nesses dispositivos, gráficos, áudio, Wi-Fi, Bluetooth, câmera, NFC, GPS 64 e sensores de orientação estão totalmente funcionais. As variantes do Galaxy Nexus que podem ser utilizadas são, com codinome "maguro" e o com codinome "toro". Nesses dispositivos, gráficos e áudio são funcionais, bem como Wi-Fi, Bluetooth e acesso às respectivas redes celulares. NFC e os sensores de orientação também são funcionais. O tablet Motorola Xoom pode ser utilizado também, tanto na sua versão com Wi- Fi, de codinome "wingray", que foi vendido nos EUA com o Android Neste os gráficos e áudio são funcionais, bem como Wi-Fi e Bluetooth e sensores de orientação. Todas as configurações do Nexus S e Nexus S 4G podem ser utilizadas com as versões até a 4.1.2, nestas versões todo o hardware está funcionando. Além disso, pode-se também utilizar a placa de desenvolvimento chamada PandaBoard, de codinome "panda", está pode ser utilizada com todas as versões do Android, mas é considerado algo experimental. Os detalhes específicos para usar uma PandaBoard com a plataforma Android estão disponível no arquivo device/ti/panda/readme na pasta original do código-fonte do Android Compilando o Fastboot e ADB e iniciando o Fastboot As ferramentas Fastboot e ADB são necessárias para a compilação do Android para dispositivos. Estas aplicações são disponibilizadas ao sistema após uma compilação regular do Android. Caso elas não estejam disponíveis, o comando abaixo é necessário para a compilação destas ferramentas separadamente. $ make fastboot adb 64 Sigla em inglês: Global Positioning System. Sistema de posicionamento global orientado a partir de satélites.
83 83 Para dar continuidade ao processo de compilação e gravação em dispositivos, é necessário conectar o dispositivo ao computador através de um cabo USB e durante a inicialização do dispositivo, pressionar as combinações de teclas demonstradas abaixo para que o dispositivo entre no modo Fastboot, que é um módulo do bootloader responsável pela gravação dos dispositivos. Abaixo é apresentada a tabela 4 com as sequências de teclas para os dispositivos da linha Nexus. Tabela 4 - Sequência de teclas para os dispositivos da linha Nexus Dispositivo manta mako garoupa tilapia fantasma maguro toro toroplus panda wingray crespo crespo4g Sequência de teclas Pressione e segure Volume Up e Volume Down, em seguida, pressione e segure Power. Pressione e segure Volume Down, em seguida, pressione e segure Power. Pressione poder por um segundo, e pressione Volume Down quando o logotipo aparece bootloader Pressione poder por um segundo, e pressione Volume Down quando o logotipo aparece bootloader Ligue o aparelho, cobri-lo com uma mão depois de os LEDs se acendam e até que eles ficam vermelhos Pressione e segure Volume Up e Volume Down, em seguida, pressione e segure Power. Pressione e segure Volume Up e Volume Down, em seguida, pressione e segure Power. Pressione e segure Volume Up e Volume Down, em seguida, pressione e segure Power. Pressione e segure entrada, em seguida, pressione Power. Pressione e segure Volume Down, em seguida, pressione e segure Power. Pressione e segure Volume Up, em seguida, pressione e segure Power. Pressione e segure Volume Up, em seguida, pressione e segure Power. Fonte: Android Open Source Project (2013).
84 84 Além disso, o comando adb reboot bootloader pode ser utilizado para reiniciar o dispositivo conectado ao computador diretamente, ou seja, sem a necessidade de pressionar uma combinações de teclas Desbloqueando o bootloader Só é possível gravar um sistema Android personalizado, se o bootloader do aparelho estiver desbloqueado. O bootloader vem bloqueado por padrão na maioria dos dispositivos. Para desbloqueá-lo, com o dispositivo conectado no computador e em modo Fastboot, é necessário digitar o seguinte comando: $ fastboot oem unlock Este procedimento deve ser confirmado com uma mensagem na tela, ao fazer isto, todos os dados do telefone serão apagados, ou seja, tanto os dados privados dos aplicativos quanto os dados compartilhados, que são acessíveis através da USB como fotos e filmes. É importante efetuar um backup de todos os arquivos importantes antes de desbloquear o bootloader. $ fastboot format cache $ fastboot format userdata O bootloader pode ser bloqueado novamente com o comando: $ fastboot oem lock
85 85 Este comando apaga todos os dados do usuário caso utilizado no tablet Xoom (incluindo os dados compartilhados via USB) Obtendo os binários proprietários O Projeto de código livre do Android não pode ser utilizado em dispositivos reais a partir apenas do código-fonte puro, é necessário a adição de algumas bibliotecas proprietárias relacionadas aos hardwares específicos de cada dispositivo como GPS, touchscreen 65 e sensores de movimento. Os binários para os dispositivos da linha Nexus suportados, podem ser baixados a partir da página do Google Nexus (developers.google.com/android/nexus/drivers), estes drivers permitem o acesso a recursos adicionais de hardware com código não open source (figura 26). Figura 26 Screenshot do site para download dos binários de hardwares. Fonte: Autor. 65 Tela sensível ao toque.
86 86 Cada conjunto de binários vem em um arquivo compactado. Após descompactar cada arquivo na pasta raiz do Android no computador, é necessário executar o script contido nele e confirmar a concordância com os termos do contrato de licença fechada. Dessa forma os binários e seu makefiles correspondentes são instalados na pasta vendor/ do projeto Android no computador. Em seguida é necessário utilizar o comando apresentado a seguir: $ make clobber Este comando certifica que os binários recém instalados são devidamente utilizados e qualquer compilação existente previamente é eliminada Compilando para um dispositivo especifico Os passos para configurar e compilar o projeto da plataforma Android para dispositivos são os mesmo contidos no capítulo 5.5. As builds recomendadas para os vários dispositivos estão disponíveis através do menu da aplicação lunch, e para ter acesso ao menu deve-se executar o comando lunch sem nenhum argumento. Abaixo é apresentada a tabela 5 com a lista de versões recomendadas para os dispositivo da linha Nexus.
87 87 Tabela 5 - Lista de versões recomendadas de acordo com o dispositivo utilizado. Dispositivo (codinome) Última versão compatível Configuração de compilação manta android-4.2.2_r1 ou master full_manta-userdebug mako android-4.2.2_r1 ou master full_mako-userdebug garoupa android-4.2.2_r1 ou master full_grouper-userdebug tilapia android-4.2.2_r1 ou master full_grouper-userdebug maguro android-4.2.2_r1 ou master full_maguro-userdebug toro android-4.2.2_r1 ou master full_toro-userdebug toroplus master full_toroplus-userdebug panda master full_panda-userdebug wingray android-4.1.2_r1 full_wingray-userdebug crespo android-4.1.2_r1 full_crespo-userdebug crespo4g android-4.1.2_r1 full_crespo4g-userdebug Fonte: Android Open Source Project (2013) Gravando em um dispositivo Para a gravação dos binários em um dispositivo, é necessário colocar o dispositivo em modo Fastboot, conforme exemplificado no capítulo O sistema inteiro do Android pode ser gravado no dispositivo com um único comando: $ fastboot flashall -w
88 88 Este comando grava o boot, grava as partições do sistema e de recuperação depois de verificar que o sistema que está sendo gravado é compatível com o bootloader instalado, e reinicia o sistema. Isso também apaga todos os dados do usuário, de forma semelhante ao comando fastboot oem unlock supracitado Restaurando um dispositivo ao seu estado original de fabrica As imagens de fábrica para os dispositivos da linha Nexus são fornecidas para o uso em uma eventual restauração do firmware original de fábrica dos dispositivos Nexus, elas estão disponíveis na página de imagens de fábrica do Google (https://developers.google.com/android/nexus/images) e são uteis no caso de uma compilação defeituosa ou uma gravação problemática. As imagens de fábrica para o Motorola Xoom são distribuídas diretamente pela fabricante Motorola. 5.7 VALIDANDO AS CUSTOMIZAÇÕES Esta seção descreve os procedimentos necessários para a validação da customização da plataforma Android proposta do capítulo quatro Modificando a animação de boot inicial Para a customização da animação de boot inicial da plataforma Android, é necessário obter ou montar um arquivo com os requisitos descritos a seguir.
89 89 De acordo com Android Open Source Project (2013), a animação de boot da plataforma Android, deve estar dentro de uma pasta compactada com a extensão ZIP 66. Dentro desta pasta compactada, devem estar um arquivo desc.txt onde estão informações de largura, altura, taxa de quadros (em frames por segundo) e tempo de execução, e uma pasta denominada part0, que contém imagens do tipo PNG nomeadas em números incrementais que formarão a animação ao serem apresentadas de forma sequencial. Após a obtenção do arquivo com os requisitos necessários, o próximo passo é renomeá-lo como bootanimation.zip, em seguida é necessário copiar ou mover este arquivo para a pasta /out/target/product/generic/data presente no diretório raiz do projeto do Android. Para que esta alteração surta efeito, é necessária a compilação do sistema através do comando make, conforme exemplificado no capítulo Alterando o papel de parede padrão do sistema A customização do papel de parede padrão da plataforma Android, também é requisito para atingir os objetivos proposto deste trabalho. Para tal, primeiramente é necessário obter um arquivo com os requisitos descritos abaixo. Segundo Lifehacker (2013), os arquivos de papel de parede para a plataforma Android são do formato JPG, este não deve ter apenas a largura e altura da tela do dispositivo, o tamanho depende da resolução do dispositivo alvo e do número de telas iniciais da versão do Android utilizada. Exemplificando, em um dispositivo com três telas iniciais e resolução de tela de 320x480 o papel de parede ideal deve ter a resolução de 640x480, ou seja, duas vezes a largura da tela do dispositivo. Após obter o arquivo com as especificações de resolução adequadas, é necessário renomeá-lo como default_wallpaper.jpg" e em seguida mover ou copia-lo para a pasta frameworks/base/core/res/res/drawable-nodpi/ presente no diretório raiz do projeto. 66 Formato de arquivo que suporta a compressão sem perdas de dados.
90 90 Para que esta alteração surta efeito, é necessária a compilação do sistema através do comando make, conforme exemplificado no capítulo Substituindo a aplicação Telefone padrão e removendo a aplicação Mensagens A substituição da aplicação de Telefone padrão e a remoção da aplicação de Mensagens são requisitos necessários para cumprir com os objetivos propostos para este trabalho. Para tal é necessário alterar algumas configurações de compilação da plataforma Android. Para remover a aplicação Mensagens e Telefone da plataforma, é necessário editar arquivos de compilação localizados na pasta build/target/product do diretório principal do projeto Android (figura 27). Isto faz com que o processo de compilação não acrescente as aplicações de Mensagens e Telefone na construção da plataforma. Figura 27 - Screenshot do arquivo telephony.mk. Fonte: Autor. Em seguida, para acrescentar a aplicação de telefonia VoIP no sistema, é necessário fazer o download do softphone Linphone na sua versão 2.02 através do seu site oficial (figura 28).
91 91 É necessário copiar ou mover o arquivo resultante do download denominado linphone-android apk, para a pasta /target/product/generic/system/app localizada no diretório principal do projeto Android no computador. Figura 28 - Screenshot do site para download do Linphone para Android. Fonte: Autor. Para completar o processo é necessário editar arquivos de build do diretório principal do projeto Android, acrescentando o texto adb install /target/product/generic/system/app/linphone-android apk. Dessa forma a o softphone é acrescentado ao sistema e estará disponível após a compilação, conforme exemplificado no capítulo
92 CONSIDERAÇÕES Neste capítulo foi apresentado na forma de tutorial todo o processo de desenvolvimento deste trabalho, passando pelo processo de configuração do ambiente de desenvolvimento, obtenção dos arquivos do código-fonte do Android, customização e compilação do sistema, para que desta forma os objetivos do trabalho fossem alcançados.
93 93 6 CONSIDERAÇÕES FINAIS E SUGESTÕES PARA TRABALHOS FUTUROS Este trabalho apresentou uma customização para a plataforma de dispositivos móveis Android, tendo como foco principal a substituição do sistema de telefonia original da plataforma por um sistema VoIP. Para tal foram coletadas referências bibliográficas sobre o assunto para que os objetivos pudessem ser atingidos. No decorrer do desenvolvimento deste trabalho, a falta de documentação sobre o código fonte da plataforma Android mostrou-se uma das maiores dificuldades para a customização da plataforma, entretanto após a análise da documentação existente, juntamente com a navegação no código-fonte da plataforma através de leitura de arquivos e makefiles, o processo de customização proposto ocorreu de maneira satisfatória. O prévio conhecimento do autor da linguagem de programação C, de Linux e de Shell Script também foi um fator importante para que os objetivos fossem atingidos. Outro ponto que se mostrou problemático é que o código fonte do Android é modificado diariamente para correções de bugs e inclusão de novas funcionalidades, por isto foi necessário definir uma versão fixa da plataforma, ignorando suas atualizações. Os objetivos sugeridos no trabalho foram alcançados através do processo de desenvolvimento e customização da plataforma. Como resultado do trabalho, foi gerado um tutorial para customização da plataforma Android, podendo servir como roteiro para empresas e pessoas que necessitam criar suas próprias customizações na plataforma Android. 6.1 SUGESTÕES PARA TRABALHOS FUTUROS A customização proposta por este trabalho ainda possui muitos pontos que podem ser trabalhados futuramente, acrescentando ou modificando algumas funcionalidades da plataforma. Por ser uma plataforma estável de código aberto, o Android pode ser moldado para que se encaixe em diversos dispositivos que podem resolver necessidades variadas.
94 94 Visando um trabalho mais completo baseado em uma continuação deste, sugiro as seguintes implementações: Customização completa do software Linphone, que foi o softphone utilizado como solução de aplicação para telefonia VoIP utilizada neste trabalho. Poderiam ser feitas customizações de sua interface, tradução para o idioma português e inclusão de novas funcionalidades de telefonia que tornariam o sistema mais completo. Verificar a possibilidade de se instalar em um mesmo dispositivo duas versões diferentes do sistema Android (dual-boot), possibilitando que o mesmo aparelho fosse utilizado no ambiente corporativo e no uso pessoal; Estudo aprofundado sobre a portabilidade entre versões da plataforma Android, visando o constante aprimoramento da customização. Pesquisa visando à criação de um protótipo de hardware ou adequação de um já existente para a gravação e execução da plataforma Android customizada neste trabalho.
95 95 REFERÊNCIAS ANDROID DEVELOPERS. Disponível em: <http://developer.android.com>. Acesso em: 10 jan ANDROID OPEN KANG PROJETC. Disponível em: <http://aokp.co/ >. Acesso em: 10 mar ANDROID OPEN SOURCE PROJECT. Disponível em: <http://source.android.com>. Acesso em: 15 mar APPLE DEVELOPER. Disponível em: < Acesso em: 25 abr APPLE IOS. Disponível em: <HTTP://www.apple.com/ios/ >. Acesso em: 28 de jan. de BARR, Michael. Programming Embedded Systems. Sebastopol, CA: O Reilly & Associates, BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: Campos, BOOCH, G; RUMBAUGH, J; JACOBSON, I.. UML GUIA DO USUÁRIO. Rio de Janeiro: Campus, CSIPSIMPLE. SIP Application for Android Devices. Disponível em: < https://code.google.com/p/csipsimple>. Acesso em: 23 fev. de CYANOGENMOD. Disponível em: <http://www.cyanogenmod.com>. Acesso em: 01 mai DEITEL, Harvey M. Sistemas Operacionais. São Paulo: Pearson Education do Brasil, DROIDLIFE. Android Open Kang Project. Disponível em: <http://www.droidlife.com/tag/android-open-kang-project/>. Acesso em: 12 abr
96 96 ENDGADGET. Cyanogenmod. Disponível em: <http://www.engadget.com/tag/cyanogenmod/>. Acesso em: 18 abr. de ENDGADGET. Windows Phone 7 series the complete guide. Disponível em: <http://www.engadget.com/2010/03/18/>. Acesso em: 05 mar G1 TECNOLOGIA. Relembre a historia do iphone o smartphone da Apple. Disponível em: < Acesso em: 01 mai GIZMODO. Google Play agora permite favoritar apps para baixa-los depois. Disponível em: <http://gizmodo.uol.com.br/google-play-agora-permite-favoritar-apps-para-baixa-losdepois/>. Acesso em: 13 de mar GOOGLE NEXUS. Disponível em: <HTTP://www.google.com/nexus/ >. Acesso em: 10 jan GOOGLE PLAY. Disponível em: <HTTP://play.google.com/store>. Acesso em: 14 jan. de GSM ARENA. Google Nexus 7. Disponível em: < >. Acesso em: 02 mai IDC. Worldwide Smartphone OS Market Share IDC. Disponível em <Http://www.idc.com/getdoc.jsp?containerId=prUS #.UUop11d2P4U>. Acesso em: 15 mar IDGNOW. IPhone completa 5 anos conheça a história do smartphone. Disponível em: < Acesso em: 17 abr LECHETA, Ricardo R. Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK. São Paulo: Novatec Editora, LIFEHACKER. Whats the deal with androids weird wallpaper requirements. Disponível em: <http://lifehacker.com/ /whats-the-deal-with-androids-weird-wallpaperrequirements>. Acesso em: 22 mar
97 97 LINPHONE. Free SIP VOIP Client. Disponível em: < Acesso em: 24 fev MACHADO, Maia F. Arquitetura de Sistemas Operacionais. São Paulo: Editora LTC, MICROSOFT WINDOWS PHONE. Disponível em: <HTTP://www.windowsphone.com/enus >. Acesso em: 22 jan MIUI Android. Redefining Android. Disponível em: <http://miuiandroid.com/community/ >. Acesso em: 08 mar MIUI BRASIL. Disponível em: < Acesso em: 02 de mai OLIVEIRA, R. Sistemas Operacionais. Rio de Janeiro: Editora Sagra Luzzato, PARANOID Android. Disponível em: <http://www.paranoid-rom.com/ >. Acesso em: 30 de abr PEREIRA, Lúcio Camilo; SILVA, Lourenço. Android para Desenvolvedores. Brasport, POCKETNOW. Paranoid Android ROM review. Disponível em: <http://pocketnow.com/2012/08/16/paranoid-android-rom-review>. Acesso em: 30 abr SERGIO PRADO. Introdução ao funcionamento interno do Android. Disponível em: <http://sergioprado.org/introducao-ao-funcionamento-interno-do-android>. Acesso em: 08 mar SILVA, Edna L.; MENEZES, Estera M.. Metodologia da pesquisa e elaboração de dissertação ed. rev. atual. Florianopolis: UFSC, SIPDROID. Free SIP/VoIP client for Android. Disponível em: < https://code.google.com/p/sipdroid>. Acesso em: 27 de fevereiro de TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Rio de Janeiro: Prentice-Hall do Brasil, 2009.
98 98 TECHTUDO. 5 Vantagens e 5 problemas do Windows Phone 7. Disponível em: <http://www.techtudo.com.br/artigos/noticia/2010/12/5-vantagens-e-5-problemas-dowindows-phone-7.html>. Acesso em: 29 abr TECNOBLOG. Google Android versões com nomes sabores. Disponível em: <http://tecnoblog.net/56850/google-android-versoes-nomes-sabores/>. Acesso em: 15 de mar TECNOBLOG. Windows Phone suporte 18 meses. Disponível em: <http://tecnoblog.net/127011/windows-phone-suporte-18-meses>. Acesso em: 02 mar TECNOLOGIA IG. Conheça as versões do sistema Android atualmente no mercado. Disponível em: Acesso em: 29 mar VEJA ABRIL. IPhone 5 vantagens e desvantagens. Disponível em: < Acesso em: 10 de mar WINDOWS PHONE. Disponível em: < Acesso em: 7 mar YAGHMOUR, Karim. Construindo Sistemas Linux Embarcados. Rio de Janeiro: Alta Books, 2009.