Android Wear workshop Roma DevFest 2014

Post on 13-Jul-2015

400 views 0 download

Transcript of Android Wear workshop Roma DevFest 2014

Roma 2014Google DevFest

No more

pocket watchesAndroid Wear

Antonino Orlando

Giuseppe Cerratti

e il Team del GDG Roma L-Ab

Roma DevFest 2014

Antonino Orlando

orlando.antonino@gmail.comit.linkedin.com/in/orlandoantoninoplus.google.com/+AntoninoOrlando

Giuseppe Cerratti

giuseppe.ciuffo@gmail.comit.linkedin.com/in/giuseppecerrattiplus.google.com/+GiuseppeCerratti

Roma DevFest 2014

Android Weardeveloper.android.com/wear

“Be glanceable”

Ever hada date?!

Roma DevFest 2014

RingRiiing!!!

Roma DevFest 2014

Roma DevFest 2014

Roma DevFest 2014

How many timedo you spend

“lost in phone”?

Roma DevFest 2014

Inspired by Timothy Jordan

“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

Design Principales

Context stream

first!

Roma DevFest 2014

UX

Inspired by Timothy Jordan

Roma DevFest 2014

UX

developer.android.com

Card!

Roma DevFest 2014

Great CardDesign

developer.android.com

GDG ChatAntonino:

See...

Roma DevFest 2014

CardDesign

Antonino

See you later!

Gonein five

seconds!

Roma DevFest 2014

Time required

for each action

is 5 second

LeaveKimi

alone!

Roma DevFest 2014

youtube.com/watch?v=sCwILO-AtEs

Debug

Distribution

Roma DevFest 2014

developer.android.com/training/wearables/

apps/packaging.html

Mobile

AppWearabl

e

App

Distribute

Manifest.xml

<manifest

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

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

RomaDevFest 2014

build.gradle (mobile)

dependencies {

wearApp project(':wear')

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

}

RomaDevFest 2014

Roma DevFest 2014

Distribute

{Let’s Code!}

SyncedNotification

Roma DevFest 2014

MusicServiceClient.java

import android.support.v4.app.NotificationCompat;

import android.support.v4.app.NotificationManagerCompat;

RomaDevFest 2014

MusicServiceClient.java

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.createNotify();

}

RomaDevFest 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

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()

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

default:

break;

}

PendingIntent pending =

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

return pending;

}

RomaDevFest 2014

MusicServiceClient.java

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