46
Android Wear

8º Betabeers Granada: Android Wear por GDG Granada

Embed Size (px)

DESCRIPTION

Esteban Dorado y Michelle de GDG Granada hacen una introducción a Android Wear y enseñan cómo se programa.

Citation preview

Page 1: 8º Betabeers Granada: Android Wear por GDG Granada

Android Wear

Page 2: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Esteban GDG Granada Organizer

Michaëlle GDG Granada Organizer

¿Quiénes somos?

@Mr_Esti @Eudaric

Page 3: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 4: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 6: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 7: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 8: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 9: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Android Wear

Page 10: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

● Lista de tarjetas● Navegación Vertical● Interacción horizontal● Google Now● Notificaciones (Tus Apps!!!)● Stacks, Pages, Actions

Android Wear

Page 11: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

“Launcher”

● Activación por “OK Google” o tocando la pantalla

● Acciones por voz● Muestra una lista de acciones

sugeridas● Por ejemplo: “Apuntar Nota”● Explicito: "OK Google Start AppXY”● Implicito: “OK Google Take a Note”

Page 12: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Android Wear● Android 4.4W● SDK level 20

● android.webkit● android.print● android.app.backup● android.appwidget● android.hardware.usb

Page 13: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Android Wear App● Acceso a todas las notificaciones● +Android 4.3● Google Play Services 5.0 (Wearable Services)● Sincroniza app wearables al reloj● Lee las notificaciones y las envía al dispositivo

wearable● Define las apps por defecto para las intenciones● Configuración del reloj

Page 14: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Dependencias● com.android.support:support-v4:20.+

○ APIs para ajustar Notificaciones para Wearables.● com.google.android.gms:play-services:5.0.77+

○ API Wearable Service para sincronizar datos entre el Telefono y el Wearable

○ Disponible: com.google.android.gms:play-services-wearable:+● com.google.android.support:wearable:+

○ Layouts y Views para usar en Wearables como:■ CardFragment■ CircledImageView■ GridViewPager■ WearableListView

Page 15: 8º Betabeers Granada: Android Wear por GDG Granada

Notificationes Apps

#androidwear

Page 16: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

● La parte fácil

Notificaciones

Page 17: 8º Betabeers Granada: Android Wear por GDG Granada

RepliesPagesStacks

#androidwear

La parte nueva● NotificationCompat

Notificaciones

Page 18: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación

// add a action to show on Phone and WearablenotificationBuilder = .addAction(iconRes, "ActionTitle", pendingIntentAction1);

// show the notificationnotificationManager.notify(notificationId, notificationBuilder.build());

// create notification using a builderNotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setContentTitle("Title") .setContentText("Short message") .setContextnIntent(pendingIntent) ...;

Page 19: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación (ajuste para Wearable)

// add the Wearable Action to the notificationnotificationBuilder.extend(wearableAction);

// show the notification just on the PhonenotificationBuilder.setLocalOnly(true);

// create the Wearable actionNotificationCompat.Action wearableAction = new NotificationCompat.Action.Builder(iconRes, "WearableActionTitle", pendingIntentAction2)) .build();

Page 20: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación (ajuste para Wearable)

// ADD-auto-reply action.addAction(R.drawable.ic_Launcher, context.getString(R.string.notify_people), sendPendingIntent)// Add Custom Reply Action .addAction(replyAction);

● Actions en NotificactionCompat

Page 21: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación - Pages

// Create second page notificationNotification secondPageNotification = new NotificationCompat.Builder(this) .setContentText("2nd Page Context")... .build();

// Wrap second page in WearableExtender and extend// the main notificationNotification twoPagesNotification = new WearableExtender() .addPage(secondPageNotification) .extend(notificationBuilder) .build();

notificationManager.notify(notificationId, twoPagesNotification);

Page 22: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación - Stack

// Create second page notificationfinal static String GROUP_KEY_EMAILS = "group_key_emails"; // Build the notification, setting the group appropriately Notification notif = new NotificationCompat.Builder(mContext) .setContentTitle(”New email from ” + sender1) .setContentText(subject1) .setSmallIcon(R.drawable.new_email) .setGroup(GROUP_KEY_EMAILS) .build();

GoogleConsejo => “Add a Summary Notification”

Page 23: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación - Actions en VoiceInput

// Create intent for reply actionIntent replyIntent = new Intent(this, ReplyActivity.class);PendingIntent replyPendingIntent = PendingIntent.getActivity(this, 0, replyIntent, 0);

// Key for the string that's delivered in the action's intentprivate static final String EXTRA_VOICE_REPLY = "extra_voice_reply";

String replyLabel = getResources().getString(R.string.reply_label);String[] replyChoices = getResources(). getStringArray(R.array.reply_choices);

RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY) .setLabel(replyLabel).setChoices(replyChoices) .build();

Page 24: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Notificación - Actions en VoiceInput

// Create intent for reply actionIntent replyIntent = new Intent(this, ReplyActivity.class);PendingIntent replyPendingIntent = PendingIntent.getActivity(this, 0, replyIntent, 0);

// Key for the string that's delivered in the action's intentprivate static final String EXTRA_VOICE_REPLY = "extra_voice_reply";

String replyLabel = getResources().getString(R.string.reply_label);String[] replyChoices = getResources(). getStringArray(R.array.reply_choices);

RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY) .setLabel(replyLabel).setChoices(replyChoices) .build();

Page 25: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Apps

Page 26: 8º Betabeers Granada: Android Wear por GDG Granada

Send data Custom UI Voice Actions

#androidwear

Page 27: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 28: 8º Betabeers Granada: Android Wear por GDG Granada

Node

Data

Message

#androidwear

Data layer

Page 29: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Personalizar Notificaciones

Page 30: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Librería UI para Wearables

Page 31: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

● BoxInsetLayout

● Card Fragment

● CircledImageView

● ConfirmationActivity

● DismissOverlayView

● GridViewPager

● GridPagerAdapter

● FragmentGridPagerAdapter

● WatchViewStub

Clases para UIs

Page 32: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 33: 8º Betabeers Granada: Android Wear por GDG Granada

<activity android:name="MyNoteActivity"><intent-filter>

<action android:name="android.intent.action.SEND" /><category android:name="com.google.android.voicesearch.SELF_NOTE" />

</intent-filter></activity>

System provided voice action

#androidwear

Page 34: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

● Call a car/taxi

● Take a note

● Set alarm

● Set timer

● Start/Stop a bike ride

● Start/Stop a run

● Start/Stop a workout

● Show heart rate

● Show step count

Comandos de voz

Page 35: 8º Betabeers Granada: Android Wear por GDG Granada

<activity android:name="StartRunActivity" android:label="MyRunningApp"><intent-filter>

<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />

</intent-filter></activity>

App provided voice action

#androidwear

Page 36: 8º Betabeers Granada: Android Wear por GDG Granada

private void displaySpeechRecognizer() {Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,

RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

startActivityForResult(intent, SPEECH_REQUEST_CODE);}

Speech Recognizer

#androidwear

Page 37: 8º Betabeers Granada: Android Wear por GDG Granada

Conclusiones

#androidwear

Page 38: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 39: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 41: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Page 42: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Wear Camera Remote: “Ok Google Start Camera”

Page 43: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

Google Keep: “Ok Google Take a Note”

Page 44: 8º Betabeers Granada: Android Wear por GDG Granada

Bluetooth Accesories

NewCustom UI

New Voice Actions

#androidwear

GPS Support

Rumores...

Page 45: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

d.android.com/wear

Page 46: 8º Betabeers Granada: Android Wear por GDG Granada

#androidwear

¡¡Gracias!!GDG Granadahttp://gdggranada.com/

@gdggranada