Android Wear workshop Roma DevFest 2014

39
Roma 2014 Google DevFest

Transcript of Android Wear workshop Roma DevFest 2014

Page 1: Android Wear workshop Roma DevFest 2014

Roma 2014Google DevFest

Page 2: Android Wear workshop Roma DevFest 2014

No more

pocket watchesAndroid Wear

Antonino Orlando

Giuseppe Cerratti

e il Team del GDG Roma L-Ab

Page 3: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Antonino Orlando

[email protected]/in/orlandoantoninoplus.google.com/+AntoninoOrlando

Giuseppe Cerratti

[email protected]/in/giuseppecerrattiplus.google.com/+GiuseppeCerratti

Page 4: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Android Weardeveloper.android.com/wear

Page 5: Android Wear workshop Roma DevFest 2014

“Be glanceable”

Page 6: Android Wear workshop Roma DevFest 2014

Ever hada date?!

Roma DevFest 2014

Page 7: Android Wear workshop Roma DevFest 2014

RingRiiing!!!

Roma DevFest 2014

Page 8: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Page 9: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Page 10: Android Wear workshop Roma DevFest 2014

How many timedo you spend

“lost in phone”?

Page 11: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Inspired by Timothy Jordan

Page 12: Android Wear workshop Roma DevFest 2014

“Android wearables provide just the right

information at just the right time, allowing you

to be connected to the virtual world and

present in the real world.”

android.com/wear

Page 13: Android Wear workshop Roma DevFest 2014

Design Principales

Page 14: Android Wear workshop Roma DevFest 2014

Context stream

first!

Page 15: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

UX

Inspired by Timothy Jordan

Page 16: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

UX

developer.android.com

Page 17: Android Wear workshop Roma DevFest 2014

Card!

Page 18: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Great CardDesign

developer.android.com

Page 19: Android Wear workshop Roma DevFest 2014

GDG ChatAntonino:

See...

Roma DevFest 2014

CardDesign

Antonino

See you later!

Page 20: Android Wear workshop Roma DevFest 2014

Gonein five

seconds!

Page 21: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Time required

for each action

is 5 second

Page 22: Android Wear workshop Roma DevFest 2014

LeaveKimi

alone!

Page 23: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

youtube.com/watch?v=sCwILO-AtEs

Page 24: Android Wear workshop Roma DevFest 2014

Debug

Page 25: Android Wear workshop Roma DevFest 2014

Distribution

Page 26: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

developer.android.com/training/wearables/

apps/packaging.html

Mobile

AppWearabl

e

App

Distribute

Page 27: Android Wear workshop Roma DevFest 2014

Manifest.xml

<manifest

xmlns:android="http://schemas.android.com/apk/res/android"

package="it.gdglab.weare.wearaudioplayer">

RomaDevFest 2014

Page 28: Android Wear workshop Roma DevFest 2014

build.gradle (mobile)

dependencies {

wearApp project(':wear')

compile 'com.google.android.gms:play-services:+'

}

RomaDevFest 2014

Page 29: Android Wear workshop Roma DevFest 2014

Roma DevFest 2014

Distribute

Page 30: Android Wear workshop Roma DevFest 2014

{Let’s Code!}

Page 31: Android Wear workshop Roma DevFest 2014

SyncedNotification

Roma DevFest 2014

Page 32: Android Wear workshop Roma DevFest 2014

MusicServiceClient.java

import android.support.v4.app.NotificationCompat;

import android.support.v4.app.NotificationManagerCompat;

RomaDevFest 2014

Page 33: Android Wear workshop Roma DevFest 2014

MusicServiceClient.java

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.createNotify();

}

RomaDevFest 2014

Page 34: Android Wear workshop Roma DevFest 2014

createNotify()

public void createNotify(){

int notificationId = 001;

NotificationCompat.Builder notifBuilder =

new NotificationCompat.Builder(getApplicationContext());

notifBuilder.setSmallIcon(R.drawable.ic_launcher);

notifBuilder.setContentTitle("WearMusicPlayer");

notifBuilder.setContentText("It is time to listen");

RomaDevFest 2014

Page 35: Android Wear workshop Roma DevFest 2014

notifBuilder.addAction(

R.drawable.ic_start, "Start", createIntent("start",

notificationId));

notifBuilder.addAction(

R.drawable.ic_stop, "Stop", createIntent("stop",

notificationId));

NotificationManagerCompat notificationManager =

NotificationManagerCompat.from(getApplicationContext());

notificationManager.notify(notificationId, notifBuilder.build());

}

RomaDevFest 2014

createNotify()

Page 36: Android Wear workshop Roma DevFest 2014

public PendingIntent createIntent(String extra, int notifId){

Intent intent = null;

switch (extra) {

case "start":

intent = new Intent("play")

.setClass(getBaseContext(), NotificationReceiver.class);

break;

RomaDevFest 2014

MusicServiceClient.java

Page 37: Android Wear workshop Roma DevFest 2014

default:

break;

}

PendingIntent pending =

PendingIntent.getBroadcast(getBaseContext(), notifId, intent, 0);

return pending;

}

RomaDevFest 2014

MusicServiceClient.java

Page 38: Android Wear workshop Roma DevFest 2014

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

// Intent used for starting the MusicService

final Intent musicServiceIntent = new Intent(context,

MusicService.class);

musicServiceIntent.putExtra("command", action);

context.startService(musicServiceIntent);

}

RomaDevFest 2014

NotificationReceiver.java

Page 39: Android Wear workshop Roma DevFest 2014