android wear androidos 2015

73
Ok, Google. O que é +Nelson Glauber @nglauber nglauber.blogspot.com Android Wear?

Upload: nelson-glauber-leal

Post on 12-Aug-2015

120 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Android Wear Androidos 2015

Ok, Google. O que é

+Nelson Glauber@nglauber nglauber.blogspot.com

Android Wear?

Page 2: Android Wear Androidos 2015

Nelson GlauberEngenheiro de Sistemas do C.E.S.A.R.

Professor da Unibratec Google Developer Expert

@nglauber +NelsonGlauber

www.nglauber.com.br

Page 3: Android Wear Androidos 2015

Conhecendo o Android Wear

Page 4: Android Wear Androidos 2015
Page 5: Android Wear Androidos 2015
Page 6: Android Wear Androidos 2015

125 vezes ao dia em média!!!

Vida realPega o telefone

Devagando no telefone

Mais tempo para interagir com as pessoas à sua volta

Serve para que?

Page 7: Android Wear Androidos 2015

Android Wear estende a plataforma Android para uma nova geração de dispositivos, com uma usabilidade desenhada especificamente para os wearables.

Page 8: Android Wear Androidos 2015

UI baseada em um stream de cards

Page 9: Android Wear Androidos 2015

Clima Trânsito Lembretes Vôos

Batimentos Cardíacos

Atender/rejeitar ligações

Busca por voz

Page 10: Android Wear Androidos 2015

Navegação Música

Navegação sem mobile

Música sem mobile

Lembretes

Voice memos

Page 11: Android Wear Androidos 2015

UX para wear NÃO é UX para

um (mini) smartphone

http://minuum.com/typing-on-android-wear/

Page 12: Android Wear Androidos 2015

Lançadas automaticamente Glanceable

Princípios de UI

Sugestão e demanda Micro-interações

Page 13: Android Wear Androidos 2015

Princípios de UI

Não interrompa o usuário… Crie grandes áreas de toque

Não seja um “shoulder tapper"

Page 14: Android Wear Androidos 2015

Comandos de voz

Page 15: Android Wear Androidos 2015

Desenvolvendo para Android Wear

Page 16: Android Wear Androidos 2015

Android Wear Device

O que precisamos?

Android Studio

Page 17: Android Wear Androidos 2015

Escolha seu modelo

LG G Watch R

Motorola Moto 360

LG Watch Urban Silver

Page 18: Android Wear Androidos 2015

Escolha seu modelo

Asus ZenWatch LG G Watch Samsung

Gear LiveSony

SmartWatch 3

Page 19: Android Wear Androidos 2015

O que precisamos?

Page 20: Android Wear Androidos 2015

Android Wear App

Page 21: Android Wear Androidos 2015

adb -d forward tcp:5601 tcp:5601

Page 22: Android Wear Androidos 2015

Depuração USB ou Bluetooth

adb forward tcp:4444 localabstract:/adb-hub; adb connect localhost:4444

Page 23: Android Wear Androidos 2015

Estrutura de um app wear

Notificações simples

Notificações contextuais

Page 24: Android Wear Androidos 2015

Estrutura de um app wear

2D Picker

Page 25: Android Wear Androidos 2015

Estrutura de um app wear

2D Picker

Page 26: Android Wear Androidos 2015

Estrutura de um app wear

1. Exibe um card 2. Clica na ação do card

3. Exibe activity em full-screen

4. Quando a activity terminar, volta ao fluxo de

cards

Page 27: Android Wear Androidos 2015

Notificações Sincronizadas

Comandos de Voz

Aplicações Wear

Envio e sincronização de dados

APIs

Page 28: Android Wear Androidos 2015

Notificações Sincronizadas

Comandos de Voz

Aplicações Wear

Envio e sincronização de dados

APIs

Page 29: Android Wear Androidos 2015

Notificações simples

Page 30: Android Wear Androidos 2015

Notificações com ação

Page 31: Android Wear Androidos 2015

Notificações com ação

✓ Se quiser a ação no mobile e no wearable, use a classe NotificationCompat.Action.

✓ Se quiser a ação apenas no wearable use o método addAction(Action) da classe NotificationCompat.WearableExtender.

Page 32: Android Wear Androidos 2015
Page 33: Android Wear Androidos 2015

Notificações empilhadas

Page 34: Android Wear Androidos 2015

Notificações com páginas

Page 35: Android Wear Androidos 2015

Detalhes sobre notificações…

✓ Notificações disparadas pelo mobile, são exibidas no mobile e no wear, mas são executadas no mobile.

✓ Notificações disparadas pelo wear, só são exibidas e executadas no wear.

✓ Você pode exibir notificações apenas no mobile ou apenas no wear.

Page 36: Android Wear Androidos 2015

Notificações Sincronizadas

Comandos de Voz

Aplicações Wear

Envio e sincronização de dados

APIs

Page 37: Android Wear Androidos 2015

Respondendo com voz

Page 38: Android Wear Androidos 2015

Comandos de voz

Call me a car/taxi Take a note

Set alarm for 8 AM Set timer for 10 minutes

Start/stop bike Start/stop a run

Start/stop workout Show heart rate

Show step count App Name :)

https://developer.android.com/training/wearables/apps/voice.html

Page 39: Android Wear Androidos 2015

Notificações Sincronizadas

Comandos de Voz

Aplicações Wear

Envio e sincronização de dados

APIs

Page 40: Android Wear Androidos 2015

Aplicações Wear

MinhaApp

MobileAPK WearAPK

Page 41: Android Wear Androidos 2015

Dependências

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) wearApp project(':wear') compile 'com.android.support:appcompat-v7:21.0.2' compile 'com.google.android.gms:play-services-wearable:+' }

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.google.android.support:wearable:1.1.0' compile 'com.google.android.gms:play-services-wearable:+' }

Page 42: Android Wear Androidos 2015

WatchViewStub BoxInsetLayout

WearableListView CircledImageView GridViewPager

GridPagerAdapter FragmentGridPagerAdapter

CardFragment DelayedConfirmationView ConfirmationActivity DismissOverlayView

Componentesandroid.support.wearable.view

Page 43: Android Wear Androidos 2015

Tela Quadrada ou Redonda?

Page 44: Android Wear Androidos 2015

Tela Quadrada ou Redonda?

Page 45: Android Wear Androidos 2015

BoxInsetLayout

Page 46: Android Wear Androidos 2015

<android.support.wearable.view.WatchViewStub xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/watch_view_stub" android:layout_width="match_parent" android:layout_height="match_parent" app:rectLayout="@layout/rect_activity_main_wear" app:roundLayout="@layout/round_activity_main_wear"> </android.support.wearable.view.WatchViewStub>

res/layout/rect_activity_main_wear.xml

res/layout/round_activity_main_wear.xml

Page 47: Android Wear Androidos 2015

WearableListView

WearableListView WearableListView.ClickListener WearableListView.Adapter CircledImageView

Page 48: Android Wear Androidos 2015

GridViewPager

GridViewPager GridPagerAdapter FragmentGridPagerAdapter CardFragment CardFrame

Page 49: Android Wear Androidos 2015

DelayedConfirmationView

Page 50: Android Wear Androidos 2015

DelayedConfirmationView <android.support.wearable.view.DelayedConfirmationView android:id="@+id/delayed_confirm" android:layout_width="40dp" android:layout_height="40dp" android:src="@drawable/cancel_circle" app:circle_border_color="@color/lightblue" app:circle_border_width="4dp" app:circle_radius=“16dp"/>

DelayedConfirmationView mDelayedView = (DelayedConfirmationView) findViewById(R.id.delayed_confirm);

mDelayedView.setListener( new DelayedConfirmationView.DelayedConfirmationListener(){ @Override public void onTimerFinished(View view) { }

@Override public void onTimerSelected(View view) { } });

Page 51: Android Wear Androidos 2015

ConfirmationActivity

Intent intent = new Intent(context, ConfirmationActivity.class); intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.SUCCESS_ANIMATION); intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE, getString(R.string.msg_sent)); context.startActivity(intent);

Page 52: Android Wear Androidos 2015

DismissOverlayView

<style name="AppTheme" parent="Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style>

Page 53: Android Wear Androidos 2015

Notificações Sincronizadas

Comandos de Voz

Aplicações Wear

Envio e sincronização de dados

APIs

Page 54: Android Wear Androidos 2015

Comunicação Mobile/Wear

MinhaApp

MobileAPK WearAPK

Page 55: Android Wear Androidos 2015

Google Play Services

GoogleApiClient googleApiClient = new GoogleApiClient.Builder(context) .addApi(Wearable.API) .addConnectionCallbacks(cc) .addOnConnectionFailedListener(cfl) .build();

compile ‘com.google.android.gms:play-services:7.3.0’

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Page 56: Android Wear Androidos 2015

Node API

Message API

Data API

Channel API

Page 57: Android Wear Androidos 2015

Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback( new ResultCallback<NodeApi.GetConnectedNodesResult>() { @Override public void onResult(NodeApi.GetConnectedNodesResult result) { Node node = result.getNodes().get(0); } });

Wearable.NodeApi.addListener( mGoogleApiClient, new NodeApi.NodeListener() { @Override public void onPeerConnected(Node node) { } @Override public void onPeerDisconnected(Node node) { } });

Node API

Page 58: Android Wear Androidos 2015

Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(), "/mensagens", new byte[]{ 1, 2, 3 } );

Message API

Wearable.MessageApi.addListener(mGoogleApiClient, new MessageApi.MessageListener() { @Override public void onMessageReceived(MessageEvent messageEvent) { String remetente = messageEvent.getSourceNodeId(); String caminho = messageEvent.getPath(); byte[] dados = messageEvent.getData(); } });

Page 59: Android Wear Androidos 2015

PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/dados"); DataMap dataMap = putDataMapRequest.getDataMap(); dataMap.putInt("numero", 1); dataMap.putString("nome", "Glauber");

Wearable.DataApi.putDataItem( mGoogleApiClient, putDataMapRequest.asPutDataRequest());

Data API

Page 60: Android Wear Androidos 2015

Wearable.DataApi.addListener(mGoogleApiClient, new DataApi.DataListener() { @Override public void onDataChanged(DataEventBuffer dataEvents) { for (DataEvent dataEvent : dataEvents){ if (dataEvent.getType() == DataEvent.TYPE_CHANGED){ DataMapItem dataMapItem = DataMapItem.fromDataItem(dataEvent.getDataItem()); Uri uri = dataMapItem.getUri(); if (uri.getPath().equals("/dados")) { DataMap dataMap = dataMapItem.getDataMap(); int numero = dataMap.getInt("numero"); String nome = dataMap.getString("nome"); } } } } });

Data API

Page 61: Android Wear Androidos 2015

WearableListenerService extends Service implements NodeApi.NodeListener, MessageApi.MessageListener, DataApi.DataListener

Node API

Message API

Data API

<service android:name=“br.com.nglauber.nextlevelapps.MeuService”> <intent-filter> <action android:name="com.google.android.gms.wearable.BIND_LISTENER"/> </intent-filter> </service>

Page 62: Android Wear Androidos 2015
Page 63: Android Wear Androidos 2015

Permite conectar múltiplos devices!!! Streamming e Envio de arquivos!!!

7.3

Page 64: Android Wear Androidos 2015

Channel API

Page 65: Android Wear Androidos 2015

WatchFaces

Page 66: Android Wear Androidos 2015

Funcionar em telas redondas e quadradas

Pense no modo interativo e ambiente

Use preto e branco para telas OLED em modo ambiente e

mantenha 95% dos pixels pretos

Page 67: Android Wear Androidos 2015

Acomode bem os elementos do sistema

Adicione configurações ao aplicativo do Android Wear

Page 68: Android Wear Androidos 2015

http://lifehacker.ru/2014/10/29/google-fit-dlya-android-prevrashhaem-smartfon-v-fitness-treker/

Page 69: Android Wear Androidos 2015

Informações diárias: Quantidade de passos.

Quantas calorias consumidas.

Atividade física.

https://developers.google.com/fit/android/get-started

Page 70: Android Wear Androidos 2015

Dúvidas?

Page 71: Android Wear Androidos 2015

http://developer.android.com/training/building-wearables.html

Page 72: Android Wear Androidos 2015
Page 73: Android Wear Androidos 2015

Nelson GlauberEngenheiro de Sistemas do C.E.S.A.R.

Professor da Unibratec Google Developer Expert

@nglauber +NelsonGlauber

www.nglauber.com.br