Levantamento de Requisitos para Aplicativos Android

5/8/2014 11:37:00 - Fábio Ferreira de Souza
Um pouco da experiência que tenho adquirido em desenvolvimento com Android, e refletindo sobre os requisitos para os próximos projetos

Nos últimos 3 meses tenho feito vários aplicativos para Android, a maioria para testes pessoais, a fim de aprender mais sobre a linguagem e estrutura.

Também surgiu a oportunidade de fazer 2 projetos reais para clientes, o que dá uma motivação extra por causa do patrocínio, além de outras ideias de aplicativos úteis para publicar no Google Play.

Portanto já estou me deparando com algumas dificuldades reais da plataforma, e assim agora tenho uma visão mais madura sobre desenvolvimento em android, para poder precificar futuros projetos sabendo avaliar melhor os principais pontos de dificuldade. Veja abaixo os principais itens!

Versão do Android

Hoje o Google está desenvolvendo a 20ª edição de sua API para Android, ainda é beta, para a próxima versão do Android 5.0, e ao meu ver esta tem com o principal foco os novos recursos de wearable (Tecnologia para Vestir) tanto é que é a primeira API dividida em duas partes: 20W e 20L, mas tudo isso ainda é apenas algo beta!

Quando se desenvolve aplicativos para Android, é necessário especificar o nível de compatibilidade, que hoje são 19 versões de API disponível, portanto criar aplicativos compatível com com as 19 versões é bem mais difícil pois há muita coisa que foi descontinuada entre as versões, e muito mais ainda novos recursos que surgiram, e para ajudar existem bibliotecas auxiliares de compatibilidade, mas que complicam também o desenvolvimento.

Na pratica desenvolver a partir da versão JELLY_BEAN (4.1) é mais fácil pois trata-se dos dispositivos Androids mais modernos e atuais lançados a partir de junho/2012, portanto qualquer projeto quanto mais específico for mais simples é de fazer.

Tamanho de tela

Outra variável muito importante é o tamanho da tela, pois a mesma versão de android pode rodar em um tablet, ou celular de tela grande ou pequeno, e ainda há o Google TV, ChromeCast, e ChromeBook, que também são outros tipos de dispositivos compatível, e nem sempre a proporção de tela é 4:3 ou 16:9, e o DPI muda muito.

Também durante a execução de um aplicativo, com a opção de rotacionar tela automaticamente, basta mudar a posição do aplicativo que tudo já muda, e criar layouts compatível com as duas formas de tela também não é fácil, por outro lado posição fixas de tela pode inviabilizar ou limitar o uso.

Em Tablets cabe muito mais informação em tela, mas em dispositivos menores não adianta só reduzir, se não nada ficará legível seja por causa do DPI, ou porque fica impossível de enxergar, ou fica difícil de tocar no item correto.

Um tela com 300 DPI significa 300 pixel a cada polegada, ou seja: (1/300)*25,4 milímetros = 0,0846 milímetros, isso é menor que a decima parte de 1 milímetro, não da quase par enxergar!

Há celulares com telas de 5” que tem a mesma resolução Full HD de TVs de 42”, ou seja, 1080 pixel de altura (varredura vertical), que fazendo as contas trigonometricamente em uma tela de de 5” com proporção de 16:9 temos

co=9, ca=16, tg=co/ca, tg=9/16=0,5625
arctang(0,5625) => a=0,5123 radianos
portanto 5”*sen(a)=2,45”
matemágica! use a calculadora virtual!

Ou o aplicativo Android Super Screen Specs Checker disponível no Google Play

Mas para simplificar o Google fez algo interessante, criou uma unidade de medidas especial chamada de “DP”, use a calculadora de conversão  para entender melhor o funcionamento, e também padronizou tamanhos de tela de acordo com a densidade: small, normal, large, xlarge

Método de Entrada

Em geral, o mais simples e comum é aplicativo touch simples, com único toque.
Mas para andoroid possível ter multi-toque, usando vários dedos em tela, ou usar caneta de precisa, teclado virtual ou físico, mouse…
Cada tipo de possível suporte de interface tem suas particularidades

Interconectividade

O Básico hoje em dia é o acesso a internet para se conectar a banco de dados, webservices, consumir serviços em json, mas cada tipo de conexão tem seus protocolos e formatos próprios e necessitam de um bom conhecimento de rede.

Mas o aplicativo Android nunca pode fazer chamadas a internet pelo programa principal (MainThread), tem que sempre fazer de forma assíncrona, criando uma tarefa secundaria que irá executar em background, e ai começa a complicar, pois nada mais é síncrono, sequencial, e é necessário orquestrar várias tarefas, renderizar a tela, tudo de forma que uma tarefa não trave a outra, mas saiba esperar a outra acabar, sem contar os eventos do sistema operacional, além os outros aplicativos rodando em paralelo, e tudo sempre respeitando o ciclo de vida das Activity (Cada tela é chamada de uma Atividade) que pode parar, ou continuar a qualquer momento.

Há ainda outas forma de se conectar como o Bluetooth, USB, Serial, NFC, e cada um tem suas características únicas

Recursos de Hardware

Usar os sensores de posição, acelerômetro, Magnético, GPS, Temperatura, umidade no Ar, Barômetro, e por ai vai… de acordo com o modelo tem muita coisa que pode se usada.

Ler a câmera, trabalhar com vídeo, interagir com o hardware sempre requer muita experiência para não travar tudo pois são ações bem pesadas.

Emitir um sinal usando o infravermelho, sintonizar uma radio, ou sinal de TV analógica ou digital, em fim cada coisa tem suas várias particularidades.

Persistência a Dados

Há várias formas e persistir(gravar) e ler dados no Android, a mais simples são os arquivos XML de preferencias de controle interno do Android, tem o acesso a arquivos no dispositivo (FileSystem), e também o sqLite, que é um versão reduzida do MySQL.

Cada forma requer todo um conhecimento as classes de acesso específicas.

Recursos específicos da Marca

Há ainda recursos específicos de um fabricante, como no caso da Samsung que tem o Knox, e toda uma série de api exclusiva deles, e cada fabricante segue essa mesma linha.

Veja mais: