android wear androidos 2015
TRANSCRIPT
![Page 1: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/1.jpg)
Ok, Google. O que é
+Nelson Glauber@nglauber nglauber.blogspot.com
Android Wear?
![Page 2: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/3.jpg)
Conhecendo o Android Wear
![Page 4: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/4.jpg)
![Page 5: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/5.jpg)
![Page 6: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/8.jpg)
UI baseada em um stream de cards
![Page 9: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/9.jpg)
Clima Trânsito Lembretes Vôos
Batimentos Cardíacos
Atender/rejeitar ligações
Busca por voz
![Page 10: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/10.jpg)
Navegação Música
Navegação sem mobile
Música sem mobile
Lembretes
Voice memos
![Page 11: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/11.jpg)
UX para wear NÃO é UX para
um (mini) smartphone
http://minuum.com/typing-on-android-wear/
![Page 12: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/12.jpg)
Lançadas automaticamente Glanceable
Princípios de UI
Sugestão e demanda Micro-interações
![Page 13: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/14.jpg)
Comandos de voz
![Page 15: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/15.jpg)
Desenvolvendo para Android Wear
![Page 16: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/16.jpg)
Android Wear Device
O que precisamos?
Android Studio
![Page 17: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/17.jpg)
Escolha seu modelo
LG G Watch R
Motorola Moto 360
LG Watch Urban Silver
![Page 18: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/18.jpg)
Escolha seu modelo
Asus ZenWatch LG G Watch Samsung
Gear LiveSony
SmartWatch 3
![Page 19: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/19.jpg)
O que precisamos?
![Page 20: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/20.jpg)
Android Wear App
![Page 21: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/21.jpg)
adb -d forward tcp:5601 tcp:5601
![Page 22: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/22.jpg)
Depuração USB ou Bluetooth
adb forward tcp:4444 localabstract:/adb-hub; adb connect localhost:4444
![Page 23: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/23.jpg)
Estrutura de um app wear
Notificações simples
Notificações contextuais
![Page 24: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/24.jpg)
Estrutura de um app wear
2D Picker
![Page 25: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/25.jpg)
Estrutura de um app wear
2D Picker
![Page 26: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/27.jpg)
Notificações Sincronizadas
Comandos de Voz
Aplicações Wear
Envio e sincronização de dados
APIs
![Page 28: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/28.jpg)
Notificações Sincronizadas
Comandos de Voz
Aplicações Wear
Envio e sincronização de dados
APIs
![Page 29: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/29.jpg)
Notificações simples
![Page 30: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/30.jpg)
Notificações com ação
![Page 31: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/32.jpg)
![Page 33: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/33.jpg)
Notificações empilhadas
![Page 34: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/34.jpg)
Notificações com páginas
![Page 35: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/36.jpg)
Notificações Sincronizadas
Comandos de Voz
Aplicações Wear
Envio e sincronização de dados
APIs
![Page 37: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/37.jpg)
Respondendo com voz
![Page 38: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/39.jpg)
Notificações Sincronizadas
Comandos de Voz
Aplicações Wear
Envio e sincronização de dados
APIs
![Page 40: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/40.jpg)
Aplicações Wear
MinhaApp
MobileAPK WearAPK
![Page 41: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/41.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/42.jpg)
WatchViewStub BoxInsetLayout
WearableListView CircledImageView GridViewPager
GridPagerAdapter FragmentGridPagerAdapter
CardFragment DelayedConfirmationView ConfirmationActivity DismissOverlayView
Componentesandroid.support.wearable.view
![Page 43: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/43.jpg)
Tela Quadrada ou Redonda?
![Page 44: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/44.jpg)
Tela Quadrada ou Redonda?
![Page 45: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/45.jpg)
BoxInsetLayout
![Page 46: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/46.jpg)
<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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/47.jpg)
WearableListView
WearableListView WearableListView.ClickListener WearableListView.Adapter CircledImageView
![Page 48: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/48.jpg)
GridViewPager
GridViewPager GridPagerAdapter FragmentGridPagerAdapter CardFragment CardFrame
![Page 49: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/49.jpg)
DelayedConfirmationView
![Page 50: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/50.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/51.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/52.jpg)
DismissOverlayView
<style name="AppTheme" parent="Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style>
![Page 53: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/53.jpg)
Notificações Sincronizadas
Comandos de Voz
Aplicações Wear
Envio e sincronização de dados
APIs
![Page 54: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/54.jpg)
Comunicação Mobile/Wear
MinhaApp
MobileAPK WearAPK
![Page 55: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/55.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/56.jpg)
Node API
Message API
Data API
Channel API
![Page 57: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/57.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/58.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/59.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/60.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/61.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/62.jpg)
![Page 63: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/63.jpg)
Permite conectar múltiplos devices!!! Streamming e Envio de arquivos!!!
7.3
![Page 64: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/64.jpg)
Channel API
![Page 65: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/65.jpg)
WatchFaces
![Page 66: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/66.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/67.jpg)
Acomode bem os elementos do sistema
Adicione configurações ao aplicativo do Android Wear
![Page 68: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/68.jpg)
http://lifehacker.ru/2014/10/29/google-fit-dlya-android-prevrashhaem-smartfon-v-fitness-treker/
![Page 69: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/69.jpg)
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](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/70.jpg)
Dúvidas?
![Page 71: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/71.jpg)
http://developer.android.com/training/building-wearables.html
![Page 72: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/72.jpg)
![Page 73: Android Wear Androidos 2015](https://reader035.vdocuments.mx/reader035/viewer/2022062220/55cb30e1bb61ebb4248b4853/html5/thumbnails/73.jpg)
Nelson GlauberEngenheiro de Sistemas do C.E.S.A.R.
Professor da Unibratec Google Developer Expert
@nglauber +NelsonGlauber
www.nglauber.com.br