Novidades do Android N Preview

O que podemos esperar da nova versão do Android

Walmyr Carvalho
Android Dev BR

--

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.

Fonte: Android Developers Blog (Google)

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).

Fonte: Android Developers (Google)

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.
Fonte: Android Developer Preview (Google)

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

Fonte: Android Developers Blog (Google)

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:

Configure > Check for Update

Feito isso, basta baixar as APIs necessárias dentro do SDK Manager, que incluem o SDK e o emulador:

SDK Manager

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

Fonte: Android Developers Blog (Google)

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.

Fonte: Android Developers (Google)

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:

  1. 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:

Fonte: Android Developers (Google)

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.

Fonte: Android Source Code (Jack)

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.

--

--

Walmyr Carvalho
Android Dev BR

trying my best ✨ • android @polaroid 📸 • road cyclist 🚴🏽 • beginner climber 🧗‍♀️ • community @androiddevbr @googledevexpert @googleforstartups 💬