Novidades do Android N Preview
O que podemos esperar da nova versão do Android
Em Março desse ano o Google anunciou o primeiro release do preview do Android N, finalmente! O objetivo desse preview é disponibilizar aos desenvolvedores as APIs e features da nova versão do Android.
Além disso, é importante para o Google colher agora a maior quantidade possível de feedback dos desenvolvedores, para que eles possam trabalhar em melhorias e bug fixes nas APIs já disponíveis.
Cronograma
O Google vem optando por fazer um esquema de "micro-releases" mensais, com diversos updates que trazem melhorias incrementais até o lançamento final (Q3).
O objetivo desse plano é ter uma idéia do que podemos esperar a cada release, assim o Google consegue ter uma organização interessante para OEMs (fabricantes) e desenvolvedores.
O que podemos esperar de cada preview é:
- Preview 1: Versão inicial, alpha;
- Preview 2: Atualização incremental, beta;
- Preview 3: Atualização incremental, beta;
- Preview 4: APIs finais e SDK oficial, suporte a publicação na Play Store;
- Preview 5: Imagens de sistema quase finalizadas para o teste final;
- Versão final: para AOSP e ecossistema.
Para mais detalhes e informações sobre o Android N Developer Preview, acessem a página oficial, lá você encontra várias informações reunidas e uma boa quantidade de material explicando como começar a usar as APIs.
Android Studio 2.1
Em Abril desse ano o Google lançou a versão estável do Android 2.1, que traz o suporte ao Android N Preview e outras novidades muito interessantes como o Instant Run (que é tão legal que merece um post separado!).
Caso você não tenha ele instalado, faça download no site oficial através desse link. Se você já tem e só quer atualizar, clique na opção Check for Update, como mostra o exemplo abaixo:
Feito isso, basta baixar as APIs necessárias dentro do SDK Manager, que incluem o SDK e o emulador:
Com isso temos o Android Studio atualizado e estamos prontos, então nada melhor do que sujar as mãos para saber o que vem pela frente!
Então, vamos lá?
Suporte a Multi-Window
O Android N trouxe o suporte oficial a múltiplas janelas no Android, feature essa bem comum em versões customizadas do Android de fabricantes como Samsung e LG.
O recurso funciona assim: Ao segurar o botão de Recentes (quadrado) você divide a tela em duas partes iguais e pode organizar os aplicativos nesses dois espaços (O botão de Recentes fica diferente, indicando que o recurso está ativo). Além disso, é possível redimensionar esses espaços usando um slider central.
Para adicionar essa feature no seu projeto, basta utilizar o atributo android:resizeableActivity na Activity desejada ou Application dentro do AndroidManifest.xml:
android:resizeableActivity="true|false"
É possível também customizar o comportamento da sua activity no caso de os espaços serem redimensionados, utilizando os atributos abaixo:
<activity android:name=".MyActivity">
<layout
android:defaultHeight="500dp"
android:defaultWidth="600dp"
android:gravity="top|end"
android:minimalHeight="450dp"
android:minimalWidth="300dp" />
</activity>
Caso queiram mais detalhes oficiais sobre, acessem a página oficial do Android Developers.
O Ian Lake, Android Developer Advocate no Google, escreveu esse artigo com 5 dicas para otimizar seu aplicativo para o suporte a Multi-Window.
Notificações melhoradas e reply direto
Agora no Android N temos o suporte a respostas direto da notificação, através de uma Notification.Action (Já utilizada pelo Android Wear, por exemplo). Para adicionar esse suporte ao seu aplicativo, você precisa:
- Criar uma instância do RemoteInput, que vai ser adicionada numa Notification.Action:
private static final String KEY_TEXT_REPLY = “key_text_reply”;
String replyLabel = getResources().getString(R.string.reply_label);
RemoteInput remoteInput =
new RemoteInput.Builder(KEY_TEXT_REPLY)
.setLabel(replyLabel)
.build();
2. Adicionar o RemoteInput numa nova instância de Notification.Action:
Notification.Action action =
new Notification.Action.Builder(R.drawable.ic_reply_icon,
getString(R.string.label), replyPendingIntent)
.addRemoteInput(remoteInput)
.build();
3. Adicionar a sua Notification.Action na sua notificação e dispará-la:
// Criando notificação
Notification newMessageNotification =
new Notification.Builder(mContext)
.setSmallIcon(R.drawable.ic_message)
.setContentTitle(getString(R.string.title))
.setContentText(getString(R.string.content))
.addAction(action))
.build();
// Disparando notificação
NotificationManager notificationManager =
NotificationManager.from(mContext);
notificationManager.notify(notificationId, newMessageNotification);
4. E para capturar o texto inserido no RemoteInput, basta você recuperar o Bundle de informações da Intent de notificação dele, como no exemplo abaixo:
private CharSequence getMessageText(Intent intent) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
return null;
}
O resultado desse recurso é esse:
Bacana, né? Além desse novo recurso, agora é possível agrupar diversas notificações de maneira inteligente, mantendo os recursos e Actions de cada notificação funcionais.
Para mais detalhes, acesse essa página do Android Developers que lista todas as novas features e melhorias das notificações no Android N.
Compilador Jack e suporte inicial ao Java 8
O Jack (Java Android Compiler Kit) é um novo toolchain de compilação de código Java para bytecode DEX pro Android. Ele é open source e foi criado para ter uma melhor performance em tempo de compilação, além de lidar com processos (como ofuscação de código, pre-dexing, etc) atualmente feitos por um conjunto de ferramentas como o ProGuard, jarjar, etc.
Já é possível utilizar o Jack com Java 8 no seu projeto (é necessário ter o Java 8 instalado no seu computador), basta configurar o seu build.gradle como o exemplo abaixo:
defaultConfig {
applicationId "me.walmyrcarvalho.hellonpreview"
minSdkVersion 'N'
targetSdkVersion 'N'
versionCode 1
versionName '1.0.0' jackOptions {
enabled true
}
}
...compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
Apesar de o Jack não suportar Instant Run, ele suporta features como lambda, inferência de tipo e outras features interessantes do Java 8 (a maioria compatível com todas as versões do Android).
Recentemente o Reto Meier, Android Developer Advocate no Google, lançou esse vídeo rápido com as novidades do Android Studio 2.1 (em inglês), e ele explica como utilizar o Jack compiler e features do Java 8 no seu projeto:
Caso queiram saber mais sobre esse release, o Google publicou um post detalhado sobre ele do Android Developers Blog.
Como eu faço pra instalar no meu device?
O Android N Preview está disponível para os dispositivos Nexus 6, Nexus 5X, Nexus 6P, Nexus Player, Nexus 9 e Pixel C, o mais novo tablet do Google. Aos donos de Nexus 5 (eu incluso), só nos resta chorar. :(
Caso você tenha um dos devices suportados, basta se inscrever nesse link para fazer parte do beta oficial, ou baixar/instalar manualmente a imagem do Android N no seu device através desse outro link.
É muito importante fazer parte desse beta, pois você pode ajudar o Google a colher mais informações sobre possíveis bugs e comportamentos diferentes nesses aparelhos e, ao mesmo tempo, vai estar colaborando com o amadurecimento da nova versão do Android que irá ser lançada no futuro. Maneiro, né?
Outras features, melhorias e report de bug
Existem diversas outras features nesse preview que não caberiam nesse artigo (como o Doze, Quick Settings Tile API, Launcher Shortcuts e muitas outras), então eu recomendo muito olharem essa página de overview, que lista com mais detalhes as novas APIs.
Além disso, diversas pequenas correções e melhorias foram feitas. É possível ler os release notes de cada versão aqui.
E caso você queira reportar um bug nas APIs e/ou no Android N instalado no seu aparelho, utilize esse link.
É isso! Espero que tenham gostado do artigo. Acredito que assim como eu, todo desenvolvedor Android deve estar bastante animado com a versão nova e espero que esse preview nos ajude deixar nosso aplicativos prontos para a chegada do Android N.
Um abraço! :)
PS: Todas as informações, imagens e trechos de código desse artigo foram extraídas do Android Developers Blog e da página oficial do Android Developers.