Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Wear - Workshop por @cesarnogcps

Android Wear - Workshop por @cesarnogcps

Neste breve workshop apresento uma visão de um desenvolvedor de aplicativos para Android Wear e seus benefícios.

Avatar for Cesar Augusto Nogueira

Cesar Augusto Nogueira

October 19, 2016
Tweet

Other Decks in Technology

Transcript

  1. Cesar A. Nogueira Analista de Software Instituto de Pesquisas Eldorado

    SouJava Campinas JUG Leader Ex-estagiário de Engenharia de Software na IBM Lenexa, KS - USA www.cesarnogueira.me
  2. UX para wear NÃO é UX para um (mini) smartphone

    http://minuum.com/typing-on-android-wear/
  3. Digite no Terminal adb forward tcp:5601 localabstract:/adb-hub adb connect localhost:5601

    Caso não dê certo com a porta 5601, tente com outra porta: adb forward tcp:4444 localabstract:/adb-hub adb connect localhost:4444
  4. 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.
  5. 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.
  6. 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
  7. Dependências dependencies { compile wearApp compile compile fileTree(dir: 'libs', include:

    ['*.jar']) project(':wear') ‘com.android.support:appcompat-v7:23.+' 'com.google.android.gms:play-services-wearable:+' } dependencies { compile compile compile fileTree(dir: 'libs', include: ['*.jar']) 'com.google.android.support:wearable:1.3.0' 'com.google.android.gms:play-services-wearable:+' }
  8. <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) { } onTimerSelected(View view) { @Override public void } });
  9. public class MainWearActivity extends WearableActivity { @Override protected void onCreate(Bundle

    savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_wear); setAmbientEnabled(); ... } @Override public void onEnterAmbient(Bundle ambientDetails) { super.onEnterAmbient(ambientDetails); } @Override public void onExitAmbient() { super.onExitAmbient(); @Override public void onUpdateAmbient() { super.onUpdateAmbient(); } }
  10. Google Play Services compile ‘com.google.android.gms:play-services-wearable:9.6.1’ <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> GoogleApiClient

    googleApiClient = new GoogleApiClient.Builder(context) .addApi(Wearable.API) .addConnectionCallbacks(cc) .addOnConnectionFailedListener(cfl) .build();
  11. 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) { } onPeerDisconnected(Node node) { @Override public void } }); Node API
  12. 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 String byte[] remetente = messageEvent.getSourceNodeId(); caminho = messageEvent.getPath(); dados = messageEvent.getData(); } });
  13. 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 String nome = dataMap.getInt("numero"); = dataMap.getString("nome"); } } } } });
  14. WearableListenerService extends Service implements NodeApi.NodeListener, MessageApi.MessageListener, DataApi.DataListener Node API Message

    API Data API <service android:name=“com.example.android.MeuService”> <intent-filter> <action android:name="com.google.android.gms.wearable.BIND_LISTENER"/> </intent-filter> </service>
  15. 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
  16. •Android Wear para iOS já está disponível para iPhone 5

    ou superior. •Alguns dos relógios que suportam iOS: ✓ ASUS ZenWatch 2 ✓ Huawei Watch ✓ LG Watch Urbane ✓ Moto 360 (2nd Gen) ✓ Moto 360 for Women ✓ Moto 360 Sport.
  17. Cesar A. Nogueira Analista de Software Instituto de Pesquisas Eldorado

    SouJava Campinas JUG Leader @cesarnogcps +CesarAugustoNogueira www.cesarnogueira.me Obrigado, SECOMP Unesp 2016