Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

41
Novidades do Android 7.+ Algumas novidades dessa mais nova versão do Android

Transcript of Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Page 1: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Novidades do Android 7.+Algumas novidades dessa mais nova versão do Android

Page 2: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Luiz Cristofori

- Dev Android na Concrete há 1 ano- Dev Java Web por 5 anos- Projetos participados: Estácio,

Nextel e CS Billing

Apresentação

Bruno Vieira

- Androideiro na CS há 1 ano- Participante do time CartolaFC- Cursando Ciência da Computação

Page 3: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Conteúdo:

– Android 7.0:

• Notificação

• Acessibilidade

• Doze

• Multi-window

• Compilação JIT/AOT no ART

• Data Saver

• Vulkan API

• Quick Settings Tile API

Novidades do Android 7.+

– Android 7.1:

• App Shortcuts

• Storage Manager Intent

Page 4: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Android 7.0

Page 5: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Notifications

Maior InteratividadeMais informaçãoMenos desperdício de espaço

Page 6: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Notifications

- Direct replies- Bundled Notification- Mark as read- Notification Peeking

Page 7: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Accessibility

- Vision Settings- Display Size- Mono- Text-to-speech

Page 8: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Accessibility

Page 9: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Accessibility

- 320dp- API 23 ou menor- Sem muita implementação- Uso de DP e não PX

Page 10: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

DOZEvamos cortar um doze

- Introduced in Marshmallow- Maintenance Windows- Stationary- 30 minutes

Page 11: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

DOZE

- Refined in Nougat- Wakelocks- Not only stationary

Page 12: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Multi-window

Possibilidade de dividir a tela entre diferentes aplicações

Suporte às duas orientações de tela - portrait e landscape

Diferentes formas de personalização por parte do usuário

Page 13: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Multi-window

Aproveitamento melhor de telas em determinados devices;

Fabricantes de celulares determinam a possibilidade;

Algumas fabricantes já possuem suporte a multi-window, porém de forma não nativa.

Page 14: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Multi-window para desenvolvedores

Implementação rápida e bem fácil

APENAS uma tag no arquivo manifest

Algumas opções de customizações individuais

Não altera o ciclo de vida da activity

Métodos na activity para identificar se o app entrou em modo de multi-window

Page 15: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Multi-window para desenvolvedores

Atributos para configuração em elementos <activity> ou <application>:- android:resizeableActivity=["true" | "false"]

- android:supportsPictureInPicture=["true" | "false"]

Atributos para configuração em elementos <layout>:- android:defaultWidth - android:minWidth - android:gravity- android:defaultHeight - android:minHeight

Métodos para activity:- isInMultiWindowMode() - isInPictureInPictureMode()- onMultiWindowModeChanged() - onPictureInPictureModeChanged()

Page 16: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Multi-window para desenvolvedores

Page 17: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Compilador JIT/AOT no ART

Entendendo as siglas:- ART - Android Runtime - Atual VM do Android- Dalvik - Antiga VM do Android- AOT - Ahead-of-time compilation - Compilação do código dex para

um código bytecode, mais específico para o device, no momento de instalação

- JIT - Just-in-time compilation - Mesma otimização, mas feita durante o uso do app

Mix do melhor dos dois mundos JIT/OAT

Page 18: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Compilador JIT/AOT no ART

Visa acelerar - e muito - o processo de instalação de um app, atualizações de sistemas e reduzir espaço que o app ocupa depois de instalado

Otimização inteligente JIT feita enquanto o device está idle ou carregando

Constante atualização do bytecode otimizado

Page 19: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Modo de economia de dados para planos móveis de internet 3g/4g

Usuário pode ligar ou desligar este modo. Ao ser ligado o sistema bloqueia o uso de dados em background e sinaliza aos apps para usar a menor quantidade de dados em foreground possível

É possível adicionar apps a uma whitelist para terem livre acesso ao consumo de dados mesmo com este modo ativado

Para economizar o uso de dados o app deve diminuir a qualidade das imagens e dos vídeos e os bit rates de um streaming

Data Saver

Page 20: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Data Saver para o desenvolvedor

Método para verificar se a rede conectada é considerada limitada- connMgr.isActiveNetworkMetered()

Caso seja, chamamos um método para verificar o status do Data Saver- connMgr.getRestrictBackgroundStatus()

E por fim, fazemos um switch/case entre as opções

- RESTRICT_BACKGROUND_STATUS_ENABLED

- RESTRICT_BACKGROUND_STATUS_WHITELISTED

- RESTRICT_BACKGROUND_STATUS_DISABLED

Page 21: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Data Saver para o desenvolvedor

Page 22: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Vulkan API

Até o Nougat, o Android usava a OpenGL ES - rival da Vulkan

Tem como característica ser uma API de “menor sobrecarga”

Desenvolvedor tem total controle ao hardware do device - GPU

Melhor performance e menor dependência de alguma implementação extra para uma determinada GPU

Page 23: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Vulkan API

Similar à Metal API, desenvolvida pela Apple

Maior facilidade para o desenvolvedor publicar seus games em diversas plataformas - Android, Linux, Windows, SteamOS

Apoiadores: Samsung, NVidia, Valve...

Fácil portabilidade entre plataformas

Vulkan API vs DirectX 12

Page 24: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Vulkan API

Alguns jogos que estão usando:

Page 25: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Quick Settings Tile

Maneira fácil e rápida do usuário acionar alguma função “crítica” do seu app

Um tile deve ser muito bem pensado antes de ser posto ali - Qual é a urgência dessa ação? E a sua frequência de uso? Vale a pena?

Diferentes possibilidades de interação: iniciar uma tarefa em background, pausar essa tarefa, abrir um dialog, ou até mesmo abrir uma activity do seu app

Page 26: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Quick Settings Tile para o desenvolvedor

Muita atenção ao escolher o ícone e o título do tile!

Cada tile é associado a um TileService

Como qualquer service basta você declará-lo no manifest

Depois, basta criar uma classe Java e estender a classe TileService

Page 27: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Quick Settings Tile para o desenvolvedor

Listeners que podem ser customizados:- onDestroy()- onTileAdded()- onTileRemoved()- onStartListening()- onStopListening()- onClick()

O processamento que será executado no método onClick() será na UI thread, então caso seja um processamento bem pesado é recomendado movê-lo para uma outra thread

Page 28: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Quick Settings Tile para o desenvolvedor

Page 29: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Quick Settings Tile para o desenvolvedor

Page 30: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Android 7.1

Page 31: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Shortcut3D TouchDeep LinkingIsso já existe no meu iPhone

Ações pontuais de sua app

Classificação estática e dinâmica

Page 32: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Static Shortcut

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application ... > <activity android:name="Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.shortcuts" android:resource="@xml/cs_shortcuts" /> </activity> </application></manifest>

Ação genérica.

Page 33: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Static Shortcut

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <shortcut android:shortcutId="compose" android:enabled="true" android:icon="@drawable/compose_icon" android:shortcutShortLabel="@string/short_label" android:shortcutLongLabel="@string/long_label" android:shortcutDisabledMessage="@string/disabled_text"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.example.myapplication" android:targetClass="com.example.myapplication.HomeActivity" /> <categories android:name="android.shortcut.conversation" /> </shortcut> <!-- Outros shortcuts aqui --></shortcuts>

res/xml/cs_shortcuts

Page 34: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Dynamic Shortcut

ShortcutManager shortcutManager = getSystemService(ShortcutManager.class);

ShortcutInfo shortcut = new ShortcutInfo.Builder(this, "id1") .setShortLabel("Concrete") .setLongLabel("Concrete Solutions") .setIcon(Icon.createWithResource(context, R.drawable.ic_web)) .setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.concretesolutions.com.br/"))) .build();

shortcutManager.setDynamicShortcuts(Arrays.asList(shortcut));

Ação mutável.Dããã

Page 35: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Shortcut - Best Practices

https://commondatastorage.googleapis.com/androiddevelopers/shareables/design/app-shortcuts-design-guidelines.pdf

•GuideLine

•4 Distintos Shortcuts

•Limite de descrição

•Preservação de shortcuts dinâmicos

Page 36: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Storage Manager Intent

Usado para facilitar o problema de pouco espaço na memória interna

Resolver este problema pode trazer muitas dores de cabeça para o desenvolvedor

Maneira rápida de o app “sugerir” que o usuário limpe espaço da memória interna

Válido para apps que precisam armazenar uma quantidade de dados considerável

Page 37: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Storage Manager Intent para desenvolvedores

Page 39: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Perguntas?

Page 40: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

Fontes

http://www.androidcentral.com/android-70-better-and-more-interactive-notificationshttps://www.thurrott.com/mobile/android/78293/android-7-0-nougat-tip-master-notificationshttp://www.androidcentral.com/android-n-developer-preview-brings-accessibility-improvementshttps://developer.android.com/about/versions/nougat/android-7.0-changes.html#accessibilityhttp://www.howtodroid.com/2016/08/change-text-item-size-nougat.htmlhttp://www.greenbot.com/article/3112224/android/what-you-need-to-know-about-doze-mode-in-android-nougat.htmlhttp://lifehacker.com/how-android-doze-works-and-how-to-tweak-it-to-save-you-1785921957https://developer.android.com/about/versions/nougat/android-7.0-changes.html#perfhttps://www.thurrott.com/mobile/android/83888/android-7-1-nougat-tip-app-shortcutshttps://developer.android.com/about/versions/nougat/android-7.1.htmlhttps://developer.android.com/guide/topics/ui/shortcuts.htmlhttps://catinean.com/2016/10/20/exploring-android-nougat-7-1-app-shortcuts/

Page 41: Novidades do Android 7.+ (Bruno Vieira e Luiz Cristofori)

www.concretesolutions.com.br

Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030

São Paulo - Rua Sansão Alves dos Santos, 433 4º andar - Brooklin - (11) 4119-0449

Ajudamos empresas a criar produtos digitais de sucesso