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
[email protected]/in/orlandoantoninoplus.google.com/+AntoninoOrlando
Giuseppe Cerratti
[email protected]/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
Top Related