Android M – Novidades da nova versão da plataforma apresentados no Google I/O 2015

Ontem (dia 29 de maio de 2015) o Google anunciou a nova versão da plataforma Android. Ainda sem nome (tal como aconteceu no ano passado), a nova versão traz diversas melhorias e algumas boas novidades. Abaixo uma lista das mais importantes, e o impacto delas no desenvolvimento de aplicações Android.

Android M novidades

Novo modelo de permissões

A partir da nova versão, algumas permissões poderão ser solicitadas no momento em que são utilizadas pela aplicação. Por exemplo, o sistema irá perguntar ao usuário se ele permite que aplicação acesse o GPS apenas quando o usuário entrar em uma tela que utiliza este recurso. Particularmente gosto deste modelo (muito parecido com o que acontece em iOS) pois permite que o usuário saiba exatamente para quê a aplicação irá utilizar as permissões.

Em termos de desenvolvimento, agora o desenvolvedor terá que ter um cuidado a mais ao utilizar APIs que acessam tais recursos: Sempre existirá a possibilidade o usuário não permitir o acesso a …

O que esperar do Google I/O 2015

Como a maioria de vocês deve saber, amanhã (28 de maio) começa o Google I/O, evento anual em que o Google apresenta suas novidades.

Google I/O 2015

Neste ano, é esperado o anúncio da nova versão de Android (cujo nome ainda não foi divulgado, e por isso está sendo chamado apenas de Android M) que, segundo rumores, traz diversas melhorias relacionadas à “trabalho” ou mais especificamente, melhorias para usar um telefone Android em seu ambiente de trabalho.

Especulações à parte, é sempre importante estar atento às novas funcionalidades. Por isso, após o evento eu irei colocar no site um resumo das novidades em Android.

 

Para quem puder participar, o evento que terá transmissão ao vivo neste link: https://events.google.com/io2015/

Como o Android MonkeyTest pode ajudar em seu projeto

Você já usou o monkey test em seu projeto Android?

Se não, está perdendo uma chance de encontrar bugs em sua aplicação sem muito trabalho. O Monkey Test é uma das ferramenta do SDK Android e seu intuito é fazer testes aleatórios em uma aplicação.

Android monkey test

Mas como funciona?

O monkey test tool envia para a aplicação eventos de interface com usuário (toques na tela e digitação de textos) totalmente aleatórios sequencialmente. Ou seja, é como se sua aplicação estivesse sendo testada por um macaco (ou por um usuário que não tenha a mínima noção do que está fazendo :-) ) .

Mas por que eu iria querer esse tipo de teste na minha aplicação?

Bem, à primeira vista este tipo de teste parece não servir para muita coisa, mas ele é sim útil para encontrar alguns tipos específicos de bugs. Por exemplo, bugs relacionados a alguma race-condition, como o clique em um botão antes de algum componente essencial ser inicializado, …

Broadcast Receiver – sua aplicação respondendo a eventos

Após aprendermos sobre Activities, Content Providers e Services, resta um dos principais componentes de Android para estudarmos: os Broadcast Receivers.

Os Broadcast Receivers são componentes responsáveis por receber e tratar eventos (ou broadcasts) provenientes do sistema ou de outras aplicações.

Por exemplo, estes são alguns broadcasts do sistema que podem ser tratados por qualquer aplicação:

● android.intent.action.ACTION_BOOT_COMPLETED: indica que o telefone acabou de ser ligado
● android.intent.action.ACTION_POWER_CONNECTED: indica que o carregador foi conectado
● android.intent.action.ACTION_BATTERY_LOW: indica que o nível de bateria está baixo.

Tipos de Broadcast

Existem dois tipos principais de broadcasts:

Ordered broadcast: nesse tipo de broadcast os receivers são invocados respeitando-se a prioridade que é definida ao registrá-los. Usando esta técnica também é possível abortar o broadcast após tratá-lo em sua aplicação.

Normal broadcast: ao contrário do ordered broadcast, os broadcasts “normais” não respeitam a prioridade dos receivers e não podem ser abortados. Porém, sua performance é bastante superior.

Interface

Os …

As novidades de Android 5.1 sob a perspectiva de desenvolvimento

Na última quarta feira (9/3/2015) o google anunciou uma nova atualização da plataforma Android: o Android 5.1. Os telefones nexus já estão recebendo a atualização! Você pode ver o anúncio aqui.

Mas o que muda para os desenvolvedores de aplicações?

Apesar de ser apenas uma atualização da versão 5.0 (Lollipop), foram feitas 3 alterações importantes nas APIs acessíveis aos desenvolvedores:

  • AndroidHttpClient foi marcado como deprecated, reafirmando a intenção do Google de dar suporte apenas ao URLConnection, como já dito aqui.
  • Novas permissões para aplicativos de operadoras: Os aplicativos assinados com a chave específica da operadora (carrier) agora tem mais privilégios, como por exemplo capturar eventos de SMS com maior prioridade usando o CarrierMessagingService.
  • Por fim, a maior mudança: foi adicionado suporte nativo a telefones com dois ou mais sim cards (Multiple SIM)

O suporte a Multiple SIM é especialmente importante para nós, desenvolvedores brasileiros, visto a grande quantidade de telefones com …

Criando um Service em Android

Um dos principais componentes de uma aplicação Android são os Services.

Assim como as Activities, os Services são componentes fundamentais em um aplicação, possuindo ciclo de vida próprio. Porém, são diferentes das Activities nos seguintes pontos:

  • Não possuem interface com o usuário.
  • Sua execução continua mesmo quando o usuário inicia outra aplicação.

Por conta dessas características, os Services são geralmente utilizados para realizar tarefas de sincronização (com um servidor, por exemplo) podendo ter sua execução agendada e não dependendo de nenhuma ação do usuário. Por isso, são chamados de componentes de background.

 

Tipos de Serviços

Existem dois principais tipos de serviços:

  • Started (unbounded): são serviços iniciados através de outros componentes (activities, por exemplo) através do método startService(). Após o seu início, o serviço pode continuar sendo executado indefinidamente.
  • Bounded: são serviços iniciados através do método bindService(). Os Bound Services interagem com os outros componentes através de uma interface cliente-servidor, que