complications wear大会全文

来源:互联网 发布:银天下行情分析软件 编辑:程序博客网 时间:2024/04/30 02:17
1
00:00:00,000 --> 00:00:00,000
Youtube subtitles download by mo.dbxdb.com 


2
00:00:00,000 --> 00:00:00,000




3
00:00:00,499 --> 00:00:02,770
OLIN LAN: Hello, everybody.


4
00:00:02,770 --> 00:00:05,539
I'm Oli Lan, an engineer
on the Android Wear team.


5
00:00:05,539 --> 00:00:07,080
TONY FERREIRA: And
I'm Tony Ferreira,


6
00:00:07,080 --> 00:00:09,410
a designer on Android Wear.


7
00:00:09,410 --> 00:00:10,970
OLIN LAN: It's great to be here.


8
00:00:10,970 --> 00:00:13,470
We're really excited to tell
you about the new stuff coming


9
00:00:13,470 --> 00:00:15,340
to watch faces on Android Wear.


10
00:00:15,340 --> 00:00:17,970




11
00:00:17,970 --> 00:00:22,970
The watch face is at the heart
of the Android Wear interface.


12
00:00:22,970 --> 00:00:25,280
Of course, it tells the time.


13
00:00:25,280 --> 00:00:28,840
And with the thousands of
watch faces on Google Play,


14
00:00:28,840 --> 00:00:32,860
it's a great way for users
to express their style.


15
00:00:32,860 --> 00:00:35,260
We added interactivity
last year,


16
00:00:35,260 --> 00:00:39,520
and the watch face came
to life like never before.


17
00:00:39,520 --> 00:00:42,770
But the watch face can do more.


18
00:00:42,770 --> 00:00:45,670
As an always-on screen
that's just a glance away,


19
00:00:45,670 --> 00:00:49,200
it's a great place to get the
information you care about.


20
00:00:49,200 --> 00:00:51,770
And that's why we're
introducing the Complications


21
00:00:51,770 --> 00:00:55,160
API for Android Wear.


22
00:00:55,160 --> 00:00:58,420
TONY FERREIRA: But first of
all, what are Complications?


23
00:00:58,420 --> 00:01:00,940
That term comes from
traditional watchmaking.


24
00:01:00,940 --> 00:01:03,440
And it means, well,
pretty much anything


25
00:01:03,440 --> 00:01:06,650
that's not telling the time.


26
00:01:06,650 --> 00:01:09,110
Complications on
mechanical watches


27
00:01:09,110 --> 00:01:14,040
show things like the date, your
alarm, or phase of the moon.


28
00:01:14,040 --> 00:01:16,300
So the small dials
you see on this watch,


29
00:01:16,300 --> 00:01:18,500
they are complications.


30
00:01:18,500 --> 00:01:21,190
On smartwatches there
are new possibilities,


31
00:01:21,190 --> 00:01:27,330
like the weather, stock prices,
or events from your calendar.


32
00:01:27,330 --> 00:01:29,370
OLIN LAN: Many watch
faces on Android Wear


33
00:01:29,370 --> 00:01:36,270
already include complications,
like Bits from usTwo or Legacy


34
00:01:36,270 --> 00:01:38,181
from Zuhanden.


35
00:01:38,181 --> 00:01:40,680
But as it stands,
each watch face


36
00:01:40,680 --> 00:01:44,040
has to go and get
the data itself.


37
00:01:44,040 --> 00:01:46,040
That could mean
your watch face has


38
00:01:46,040 --> 00:01:48,860
to find its own source
of weather data,


39
00:01:48,860 --> 00:01:53,610
or finance data, or anything
else you want to show.


40
00:01:53,610 --> 00:01:56,950
And if the user wants to see
something you haven't included,


41
00:01:56,950 --> 00:01:59,739
they're out of luck.


42
00:01:59,739 --> 00:02:02,040
Or maybe you're not a
watch face developer,


43
00:02:02,040 --> 00:02:05,560
but your app has data that would
be great on the watch face,


44
00:02:05,560 --> 00:02:09,699
like fitness stats
or finance info.


45
00:02:09,699 --> 00:02:12,139
As it stands, there's
no way to do this other


46
00:02:12,139 --> 00:02:14,460
than building your
own watch face


47
00:02:14,460 --> 00:02:16,710
or making deals with individual
watch face developers.


48
00:02:16,710 --> 00:02:19,500




49
00:02:19,500 --> 00:02:22,270
The Complications
API for Android Wear


50
00:02:22,270 --> 00:02:24,970
changes all of this.


51
00:02:24,970 --> 00:02:30,086
Apps using the API will be
data providers or watch faces.


52
00:02:30,086 --> 00:02:32,930




53
00:02:32,930 --> 00:02:36,630
If you build a watch face
using the Complications API,


54
00:02:36,630 --> 00:02:40,169
then you get access to a whole
ecosystem of data providers.


55
00:02:40,169 --> 00:02:42,919
Here are just some of the
partners already working


56
00:02:42,919 --> 00:02:45,910
on using the API.


57
00:02:45,910 --> 00:02:48,520
And if you build
a data provider,


58
00:02:48,520 --> 00:02:54,620
you can get your data on a
whole range of watch faces.


59
00:02:54,620 --> 00:02:58,039
Now on Google Play,
there's a huge range


60
00:02:58,039 --> 00:02:59,900
of styles of watch faces.


61
00:02:59,900 --> 00:03:03,400
So there's no way
that just one style,


62
00:03:03,400 --> 00:03:08,150
one visual style of complication
would fit on every watch face.


63
00:03:08,150 --> 00:03:11,460
Because of that, with
the Complications API,


64
00:03:11,460 --> 00:03:14,550
the watch face gets to decide
how to render the data.


65
00:03:14,550 --> 00:03:17,020
It gets to choose the visual
style, the colors, the fonts,


66
00:03:17,020 --> 00:03:18,080
etc.


67
00:03:18,080 --> 00:03:20,590
The data provided just
provides raw fields


68
00:03:20,590 --> 00:03:25,199
like strings, text,
images, and numbers.


69
00:03:25,199 --> 00:03:27,416
Before we get into the
details of the API though,


70
00:03:27,416 --> 00:03:29,039
Tony is going to go
through some things


71
00:03:29,039 --> 00:03:32,650
to think about when
designing for complications.


72
00:03:32,650 --> 00:03:35,246
TONY FERREIRA: Thanks, Oli.


73
00:03:35,246 --> 00:03:37,870
So some of you may have already
checked out the Material design


74
00:03:37,870 --> 00:03:39,599
spec for wearables.


75
00:03:39,599 --> 00:03:41,490
And there you'll find
a ton of useful things


76
00:03:41,490 --> 00:03:46,163
to help developers and designers
design for Android Wear.


77
00:03:46,163 --> 00:03:48,080
I'd like to highlight
some of the things, some


78
00:03:48,080 --> 00:03:50,246
of those design principles
that you'll find in there


79
00:03:50,246 --> 00:03:54,080
and how they apply
to complications.


80
00:03:54,080 --> 00:03:56,610
So the first design
principle is glanceable,


81
00:03:56,610 --> 00:04:00,099
making things clear
and understandable.


82
00:04:00,099 --> 00:04:04,479
For complications, small, easy
to read snippets of information


83
00:04:04,479 --> 00:04:06,240
work best.


84
00:04:06,240 --> 00:04:09,130
It's very important that the
information on the watch face


85
00:04:09,130 --> 00:04:13,360
is organized with a clear
hierarchy, large enough


86
00:04:13,360 --> 00:04:16,860
to read easily, and
high enough in contrast.


87
00:04:16,860 --> 00:04:20,819
Users shouldn't need to
squint to read the UI.


88
00:04:20,819 --> 00:04:23,720
The second design
principle is time saving,


89
00:04:23,720 --> 00:04:27,670
getting the information you want
quickly without any roadblocks.


90
00:04:27,670 --> 00:04:29,529
Instead of navigating
to your favorite apps


91
00:04:29,529 --> 00:04:31,470
to find the
information you want,


92
00:04:31,470 --> 00:04:33,560
with the introduction
of complications,


93
00:04:33,560 --> 00:04:36,810
it's right there
on the watch face.


94
00:04:36,810 --> 00:04:38,779
Complications are also tapable.


95
00:04:38,779 --> 00:04:42,089
So you can deep link to your
favorite contact or upcoming


96
00:04:42,089 --> 00:04:43,990
calendar event.


97
00:04:43,990 --> 00:04:46,149
And complications
are also persistent,


98
00:04:46,149 --> 00:04:49,230
there whenever you need them.


99
00:04:49,230 --> 00:04:52,500
The third design
principle is consistent.


100
00:04:52,500 --> 00:04:54,540
Complications should have
a healthy relationship


101
00:04:54,540 --> 00:04:56,440
with the watch face.


102
00:04:56,440 --> 00:04:59,990
As Oli just said, with
Complications on Android Wear,


103
00:04:59,990 --> 00:05:03,360
the watch face decides how the
complications are rendered.


104
00:05:03,360 --> 00:05:06,230
So they feel part
of the same family.


105
00:05:06,230 --> 00:05:08,410
Consider aligning the
style of the complications


106
00:05:08,410 --> 00:05:10,930
with the watch face.


107
00:05:10,930 --> 00:05:15,680
Oli is now going to talk you
through the complication types.


108
00:05:15,680 --> 00:05:17,370
OLIN LAN: Thanks, Tony.


109
00:05:17,370 --> 00:05:22,470
So complications are all about
data, supplied by provider apps


110
00:05:22,470 --> 00:05:25,670
and displayed on watch faces.


111
00:05:25,670 --> 00:05:30,089
This could include numerical
data like your battery level,


112
00:05:30,089 --> 00:05:33,600
text like the title
of your next meeting,


113
00:05:33,600 --> 00:05:38,060
or images like an
icon or a profile pic.


114
00:05:38,060 --> 00:05:42,240
Not every type of data will
fit on every watch face.


115
00:05:42,240 --> 00:05:44,339
There might only be
space for a small icon


116
00:05:44,339 --> 00:05:46,990
or a short bit of text.


117
00:05:46,990 --> 00:05:49,769
Or you might want to use
numerical data without having


118
00:05:49,769 --> 00:05:52,930
to show text or images.


119
00:05:52,930 --> 00:05:56,449
So watch faces need to
say what they can display.


120
00:05:56,449 --> 00:06:00,220
And data providers need to
say what they can supply.


121
00:06:00,220 --> 00:06:05,380
To help with this, we've defined
a number of complication types.


122
00:06:05,380 --> 00:06:08,250
Complication types
determine what kinds of data


123
00:06:08,250 --> 00:06:09,800
are included.


124
00:06:09,800 --> 00:06:12,920
There's usually one field that's
the key piece of information.


125
00:06:12,920 --> 00:06:15,160
And we've named the
types after that field.


126
00:06:15,160 --> 00:06:18,916
So here you see examples
of the short text type.


127
00:06:18,916 --> 00:06:20,540
These are all short
text complications.


128
00:06:20,540 --> 00:06:22,720
But as you can see there
are optional elements.


129
00:06:22,720 --> 00:06:25,149
There may be an icon
or a second string.


130
00:06:25,149 --> 00:06:28,459
But the most important value
is contained in the short text


131
00:06:28,459 --> 00:06:30,980
field.


132
00:06:30,980 --> 00:06:33,399
If you're a data
provider, you can


133
00:06:33,399 --> 00:06:35,750
choose which of the
optional fields to include.


134
00:06:35,750 --> 00:06:37,699
But a short text
complication must always


135
00:06:37,699 --> 00:06:40,759
include the short text field.


136
00:06:40,759 --> 00:06:44,000
If you're building a watch face
and you support short text,


137
00:06:44,000 --> 00:06:48,290
you need to consider
all of these variations.


138
00:06:48,290 --> 00:06:50,019
Here are some other examples.


139
00:06:50,019 --> 00:06:53,100
You might not need any text
to convey the information.


140
00:06:53,100 --> 00:06:56,759
Then maybe the icon
type is enough.


141
00:06:56,759 --> 00:07:00,079
Or, if you have numerical
data within bounds


142
00:07:00,079 --> 00:07:03,180
like a percentage, then
the range value type


143
00:07:03,180 --> 00:07:06,230
could be for you.


144
00:07:06,230 --> 00:07:10,329
We also have a few other types.


145
00:07:10,329 --> 00:07:13,910
You'll notice that we have
bot icon and small image.


146
00:07:13,910 --> 00:07:16,759
The difference is that
images for the icon field


147
00:07:16,759 --> 00:07:18,589
should be tintable
by the watch face.


148
00:07:18,589 --> 00:07:21,600
They should be single color
with a transparent background.


149
00:07:21,600 --> 00:07:24,910
This allows the watch face to
fit it better to its style.


150
00:07:24,910 --> 00:07:27,690
So if you are building a
watch face where full color


151
00:07:27,690 --> 00:07:31,130
images won't match
the style, then you


152
00:07:31,130 --> 00:07:32,589
can support the icon type.


153
00:07:32,589 --> 00:07:35,089
But you might not want to
support the small image type,


154
00:07:35,089 --> 00:07:36,851
where images may be full color.


155
00:07:36,851 --> 00:07:39,406




156
00:07:39,406 --> 00:07:41,740
So when you're thinking about
the different complication


157
00:07:41,740 --> 00:07:44,100
types, if you are
building a provider,


158
00:07:44,100 --> 00:07:47,029
think about the different
forms your data can take.


159
00:07:47,029 --> 00:07:48,529
And if you're
building complications


160
00:07:48,529 --> 00:07:51,547
into a watch face, think
about how many of the types


161
00:07:51,547 --> 00:07:52,380
you want to support.


162
00:07:52,380 --> 00:07:55,399




163
00:07:55,399 --> 00:07:58,259
Now back to Tony to talk about
some more guidelines for what


164
00:07:58,259 --> 00:08:00,538
face developers.


165
00:08:00,538 --> 00:08:02,579
TONY FERREIRA: OK, so I
want to talk a little bit


166
00:08:02,579 --> 00:08:04,290
about the things
you should consider


167
00:08:04,290 --> 00:08:06,720
when designing complications.


168
00:08:06,720 --> 00:08:08,949
However, bear in mind
there isn't a one size


169
00:08:08,949 --> 00:08:11,110
fits all solution to this.


170
00:08:11,110 --> 00:08:14,180
We have a diverse collection
of watch faces on the platform.


171
00:08:14,180 --> 00:08:16,420
And we think it's important
that complications


172
00:08:16,420 --> 00:08:19,790
are flexible enough to
mirror that diversity.


173
00:08:19,790 --> 00:08:23,045
So please use these guidelines
as a starting point.


174
00:08:23,045 --> 00:08:24,920
But if you feel your
watch face would benefit


175
00:08:24,920 --> 00:08:27,211
from deviating from these
guidelines, then by all means


176
00:08:27,211 --> 00:08:30,579
please do so.


177
00:08:30,579 --> 00:08:33,538
Complication should never
conflict with the surrounding


178
00:08:33,538 --> 00:08:35,480
objects on the watch face.


179
00:08:35,480 --> 00:08:39,110
For more traditional watch
face layouts, as shown here,


180
00:08:39,110 --> 00:08:42,950
these red areas, in general,
shouldn't have complications.


181
00:08:42,950 --> 00:08:47,159
As it will be a conflict with
other parts of the watch face.


182
00:08:47,159 --> 00:08:49,529
Give your complications
a bit of space,


183
00:08:49,529 --> 00:08:51,919
so they have room
to breathe as well.


184
00:08:51,919 --> 00:08:54,909
And if possible, staying true to
the alignment of the watch face


185
00:08:54,909 --> 00:08:58,110
will also help you
achieve better balance.


186
00:08:58,110 --> 00:09:00,070
So if you have a
center aligned clock,


187
00:09:00,070 --> 00:09:02,360
it might make sense to center
align the complications


188
00:09:02,360 --> 00:09:02,360
as well.


189
00:09:02,860 --> 00:09:05,659




190
00:09:05,659 --> 00:09:08,190
Complications can be
rendered however you wish.


191
00:09:08,190 --> 00:09:10,860
Though you might want
to give your data


192
00:09:10,860 --> 00:09:14,269
a little more protection and
house them in a container.


193
00:09:14,269 --> 00:09:16,259
So we found these
form factors work well


194
00:09:16,259 --> 00:09:18,610
with the various data types.


195
00:09:18,610 --> 00:09:28,070
We have circle, square,
pill, and rectangle.


196
00:09:28,070 --> 00:09:32,269
And bear in mind, the size
and form of these containers


197
00:09:32,269 --> 00:09:36,899
decide what data types
can and can't be rendered.


198
00:09:36,899 --> 00:09:38,870
And containers are optional.


199
00:09:38,870 --> 00:09:39,799
Sometimes they help.


200
00:09:39,799 --> 00:09:41,200
Sometimes they don't.


201
00:09:41,200 --> 00:09:44,120
But the important thing to
remember, as a watch face


202
00:09:44,120 --> 00:09:46,269
developer, is you have
the freedom to choose.


203
00:09:46,269 --> 00:09:49,876




204
00:09:49,876 --> 00:09:51,960
Building a strong relationship
with the watch face


205
00:09:51,960 --> 00:09:54,095
is also very important.


206
00:09:54,095 --> 00:09:55,470
You don't want
your complications


207
00:09:55,470 --> 00:09:57,649
to seem like an afterthought.


208
00:09:57,649 --> 00:10:00,559
So here are some
things to consider.


209
00:10:00,559 --> 00:10:02,970
Use color to tint the data.


210
00:10:02,970 --> 00:10:07,029
This will help create better
harmony with the watch face.


211
00:10:07,029 --> 00:10:09,139
Decide whether your
complications need containers


212
00:10:09,139 --> 00:10:10,350
or not.


213
00:10:10,350 --> 00:10:12,289
You can see in this
example, in the middle,


214
00:10:12,289 --> 00:10:14,080
we've removed the
containers just


215
00:10:14,080 --> 00:10:16,730
to help the complications better
integrate into the watch face.


216
00:10:16,730 --> 00:10:19,330




217
00:10:19,330 --> 00:10:22,059
And play around with scale.


218
00:10:22,059 --> 00:10:25,320
This will help you achieve
better visual hierarchy.


219
00:10:25,320 --> 00:10:27,380
But most importantly,
on top of all that,


220
00:10:27,380 --> 00:10:28,408
just have fun with them.


221
00:10:28,408 --> 00:10:29,907
And don't be scared
to get creative.


222
00:10:29,907 --> 00:10:33,909




223
00:10:33,909 --> 00:10:36,710
You can have multiple
complications on a watch face.


224
00:10:36,710 --> 00:10:38,769
This is awesome
for those of us who


225
00:10:38,769 --> 00:10:42,620
want to surface lots of data.


226
00:10:42,620 --> 00:10:45,250
Here you can see we've
removed the containers


227
00:10:45,250 --> 00:10:46,149
to create more space.


228
00:10:46,149 --> 00:10:48,299
And we can easily fit
eight complications


229
00:10:48,299 --> 00:10:50,269
on a single watch face.


230
00:10:50,269 --> 00:10:53,570
If multiple complications is a
direction you wish to go down,


231
00:10:53,570 --> 00:10:56,299
just try to make sure that
things don't get too cluttered


232
00:10:56,299 --> 00:10:57,676
and the UI remains glanceable.


233
00:10:57,676 --> 00:11:00,250




234
00:11:00,250 --> 00:11:04,009
The Complications API can also
be used as a creative tool.


235
00:11:04,009 --> 00:11:06,009
With the ranged
value data type, you


236
00:11:06,009 --> 00:11:10,130
can abstract that data
whichever way you like.


237
00:11:10,130 --> 00:11:12,120
So in the example,
we've shown here,


238
00:11:12,120 --> 00:11:14,979
we display your step count goal.


239
00:11:14,979 --> 00:11:16,519
Throughout the day,
as you get closer


240
00:11:16,519 --> 00:11:18,309
to reaching your
step count goal,


241
00:11:18,309 --> 00:11:21,220
the graphic in the
background also updates.


242
00:11:21,220 --> 00:11:23,220
Presenting the
data like this, in


243
00:11:23,220 --> 00:11:25,899
an unconventional
and abstract way,


244
00:11:25,899 --> 00:11:28,490
opens the door for more fun
and engaging watch faces.


245
00:11:28,490 --> 00:11:31,259




246
00:11:31,259 --> 00:11:33,899
And just to finish,
here are a few examples


247
00:11:33,899 --> 00:11:36,320
of implemented
complications designed


248
00:11:36,320 --> 00:11:39,100
by our creative partners usTwo.


249
00:11:39,100 --> 00:11:40,909
In the first example
here, you can


250
00:11:40,909 --> 00:11:44,399
see they've kept things simple
and find a straightforward way


251
00:11:44,399 --> 00:11:47,960
of adding complications to
a preexisting watch face,


252
00:11:47,960 --> 00:11:50,059
removing containers
and tinting the data.


253
00:11:50,059 --> 00:11:52,860




254
00:11:52,860 --> 00:11:56,169
The second example is
a little more bespoke.


255
00:11:56,169 --> 00:11:57,759
They've used their
creative license


256
00:11:57,759 --> 00:12:00,620
and played around with things
like the layout and the form


257
00:12:00,620 --> 00:12:01,919
factors.


258
00:12:01,919 --> 00:12:03,899
This helps better
align the complications


259
00:12:03,899 --> 00:12:05,652
with the watch face aesthetic.


260
00:12:05,652 --> 00:12:08,289




261
00:12:08,289 --> 00:12:11,370
In the last example, we have had
some fun with the range value


262
00:12:11,370 --> 00:12:15,120
data type, creating a really
cool generative abstract


263
00:12:15,120 --> 00:12:16,700
design.


264
00:12:16,700 --> 00:12:19,610
In this example, you can
imagine your daily step count


265
00:12:19,610 --> 00:12:22,644
or battery level
being represented.


266
00:12:22,644 --> 00:12:24,059
I'll now hand you
over to Oli, who


267
00:12:24,059 --> 00:12:27,580
is going to talk you through
the details of the API.


268
00:12:27,580 --> 00:12:30,360
OLIN LAN: Thanks, Tony.


269
00:12:30,360 --> 00:12:35,210
OK, so let's take a look at
how this all fits together.


270
00:12:35,210 --> 00:12:39,120
Android Wear manages the flow
of data between data providers


271
00:12:39,120 --> 00:12:41,409
and watch faces.


272
00:12:41,409 --> 00:12:43,539
When data is needed
for a complication,


273
00:12:43,539 --> 00:12:45,779
Android Wear will
send an update request


274
00:12:45,779 --> 00:12:51,130
to the data provider asking
for a specific type of data.


275
00:12:51,130 --> 00:12:54,340
The provider builds a
complication data object


276
00:12:54,340 --> 00:12:57,549
of that type with
the required fields


277
00:12:57,549 --> 00:13:00,889
and sends it back to Wear.


278
00:13:00,889 --> 00:13:03,470
Android Wear then forwards
that onto the watch face,


279
00:13:03,470 --> 00:13:07,820
which can then include
it when it renders.


280
00:13:07,820 --> 00:13:09,820
Android Wear also
provides the UI


281
00:13:09,820 --> 00:13:12,169
that allows users
to choose providers


282
00:13:12,169 --> 00:13:13,570
for each complication.


283
00:13:13,570 --> 00:13:16,090
And we'll talk
about that in a bit.


284
00:13:16,090 --> 00:13:17,960
But now let's take
a look at what you


285
00:13:17,960 --> 00:13:20,876
need to do to add
complications to a watch face.


286
00:13:20,876 --> 00:13:23,860




287
00:13:23,860 --> 00:13:25,649
So first of all,
you need to decide


288
00:13:25,649 --> 00:13:27,899
how many complications
to include


289
00:13:27,899 --> 00:13:31,529
and what types to
support in each one.


290
00:13:31,529 --> 00:13:33,049
So, for this example,
let's say you


291
00:13:33,049 --> 00:13:37,970
want to include a small round
complication on the right.


292
00:13:37,970 --> 00:13:42,320
Now in that space we
could support short text.


293
00:13:42,320 --> 00:13:46,179
We could also support icon.


294
00:13:46,179 --> 00:13:51,519
And there's also enough space
there to show a ranged value.


295
00:13:51,519 --> 00:13:53,720
Now in that space we
could, if we wanted,


296
00:13:53,720 --> 00:13:55,090
support small image as well.


297
00:13:55,090 --> 00:13:59,630
But let's say for this
example that we don't want to.


298
00:13:59,630 --> 00:14:01,450
Now let's say we
also want to include


299
00:14:01,450 --> 00:14:04,590
a complication at the bottom.


300
00:14:04,590 --> 00:14:09,100
This one could support the
same types as the first one.


301
00:14:09,100 --> 00:14:12,720
But there's also enough
space to make this one wider.


302
00:14:12,720 --> 00:14:16,149
So it could support
the long text type.


303
00:14:16,149 --> 00:14:18,509
Note that we consider this
to be the same complication.


304
00:14:18,509 --> 00:14:22,940
Even though it's a different
shape, depending on the type.


305
00:14:22,940 --> 00:14:25,630
So to summarizes, these
are the types supported


306
00:14:25,630 --> 00:14:28,966
by each of those complications.


307
00:14:28,966 --> 00:14:31,049
One more thing, you need
to give each complication


308
00:14:31,049 --> 00:14:36,190
a numerical ID so that you can
refer to it with the system.


309
00:14:36,190 --> 00:14:38,350
That's chosen by the watch face.


310
00:14:38,350 --> 00:14:40,730
We call it the watch
face complication ID,


311
00:14:40,730 --> 00:14:44,299
and it can be any integer.


312
00:14:44,299 --> 00:14:47,710
OK, so next you need
a way for the user


313
00:14:47,710 --> 00:14:49,860
to choose providers
for each complication.


314
00:14:49,860 --> 00:14:53,059




315
00:14:53,059 --> 00:14:54,590
As I mentioned
earlier, Android Wear


316
00:14:54,590 --> 00:14:57,470
provides the UI to
choose a provider


317
00:14:57,470 --> 00:14:59,700
for a particular complication.


318
00:14:59,700 --> 00:15:02,519
But the rest of the
UI is up to you.


319
00:15:02,519 --> 00:15:05,490
So what we're showing
here on the slide


320
00:15:05,490 --> 00:15:08,769
is a basic list that could be
part of the watch faces config


321
00:15:08,769 --> 00:15:09,269
activity.


322
00:15:09,269 --> 00:15:11,190
It's the watch
face's own settings.


323
00:15:11,190 --> 00:15:15,450
So this screen is not
provided by the system.


324
00:15:15,450 --> 00:15:17,980
So when the user taps
on item in this list,


325
00:15:17,980 --> 00:15:23,279
the watch face needs to launch
that system provider chooser.


326
00:15:23,279 --> 00:15:24,460
Let's look at some code.


327
00:15:24,460 --> 00:15:28,929
So, in order to do that, you
use this support library method


328
00:15:28,929 --> 00:15:30,200
to get hold of an intent.


329
00:15:30,200 --> 00:15:31,658
That's
createProviderChooserIntent.


330
00:15:31,658 --> 00:15:33,830




331
00:15:33,830 --> 00:15:36,880
You pass in the watch
face component name.


332
00:15:36,880 --> 00:15:39,730
That's the package and class
name of your watch face.


333
00:15:39,730 --> 00:15:42,360
That's just how you refer to
your watch face to the system.


334
00:15:42,360 --> 00:15:45,500
And you also pass in the
watch face complication


335
00:15:45,500 --> 00:15:49,460
ID for the complication
that is being configured.


336
00:15:49,460 --> 00:15:53,120
So that's the number
we chose earlier.


337
00:15:53,120 --> 00:15:59,299
You then pass in the types
supported by that complication.


338
00:15:59,299 --> 00:16:01,460
In this list, the
order doesn't matter.


339
00:16:01,460 --> 00:16:03,049
You list them in
order of preference,


340
00:16:03,049 --> 00:16:05,870
with the most
preferred coming first.


341
00:16:05,870 --> 00:16:08,759
In this example, we've put
ranged value at the top.


342
00:16:08,759 --> 00:16:10,759
That's because that
type conveys the most


343
00:16:10,759 --> 00:16:11,960
information to the user.


344
00:16:11,960 --> 00:16:13,210
So that's often a good choice.


345
00:16:13,210 --> 00:16:16,110
And that's a good way
to think about this.


346
00:16:16,110 --> 00:16:16,110
OK.


347
00:16:16,610 --> 00:16:18,029
So then when you
have the intent,


348
00:16:18,029 --> 00:16:21,820
you call
startActivityforResult to show


349
00:16:21,820 --> 00:16:24,309
the system provide chooser.


350
00:16:24,309 --> 00:16:27,960
So, when the user taps
on an item in this list,


351
00:16:27,960 --> 00:16:31,029
the system provider
choose is shown.


352
00:16:31,029 --> 00:16:34,950
Now when the user chooses
a provider in this UI,


353
00:16:34,950 --> 00:16:37,039
it gets setup automatically.


354
00:16:37,039 --> 00:16:40,509
You don't need to
do anything else.


355
00:16:40,509 --> 00:16:43,080
OK, so to show the data,
what you need to do


356
00:16:43,080 --> 00:16:44,659
is tell the system
that your watch


357
00:16:44,659 --> 00:16:46,559
face is ready to receive it.


358
00:16:46,559 --> 00:16:48,820
So let's move into
the watch face service


359
00:16:48,820 --> 00:16:52,460
itself, specifically the engine.


360
00:16:52,460 --> 00:16:56,710
So what you need to do is
call setActiveComplications,


361
00:16:56,710 --> 00:16:59,179
and pass in the watch
face complication


362
00:16:59,179 --> 00:17:03,690
IDs for the complications
that are ready.


363
00:17:03,690 --> 00:17:08,638
Here we're showing in
onCreate of the engine.


364
00:17:08,638 --> 00:17:10,180
That's usually a
good place to do it.


365
00:17:10,180 --> 00:17:12,250
But you can call this
method from elsewhere.


366
00:17:12,250 --> 00:17:14,919
For example, if the active
complications change.


367
00:17:14,919 --> 00:17:17,450




368
00:17:17,450 --> 00:17:22,700
Once you've done that, you will
start to receive data in calls


369
00:17:22,700 --> 00:17:25,838
to the on complication
data update method.


370
00:17:25,838 --> 00:17:28,680




371
00:17:28,680 --> 00:17:31,680
The data will come with the
watch face complication ID


372
00:17:31,680 --> 00:17:34,160
that it relates to.


373
00:17:34,160 --> 00:17:36,339
Now, you'll only receive
data when it changes.


374
00:17:36,339 --> 00:17:39,880
So you'll have to hold onto
the complication data object.


375
00:17:39,880 --> 00:17:43,950
And any images, such as icons,
should be loaded asynchronously


376
00:17:43,950 --> 00:17:46,980
and be sure to catch them.


377
00:17:46,980 --> 00:17:49,049
Now once you've got the
data, it's up to you


378
00:17:49,049 --> 00:17:51,380
how to incorporate it
into your watch face.


379
00:17:51,380 --> 00:17:52,880
But before rendering
it, you need


380
00:17:52,880 --> 00:17:56,029
to check if the data
is still active.


381
00:17:56,029 --> 00:17:59,859
Some complication data is only
valid until a certain time.


382
00:17:59,859 --> 00:18:02,940
So for example, it might be
for a next event complication.


383
00:18:02,940 --> 00:18:05,789
And then the piece of
data will only be relevant


384
00:18:05,789 --> 00:18:08,910
up until the end of that event.


385
00:18:08,910 --> 00:18:12,180
You check it using
this method, the


386
00:18:12,180 --> 00:18:14,579
is active method on
the complication data.


387
00:18:14,579 --> 00:18:16,549
So you just pass
in the current time


388
00:18:16,549 --> 00:18:19,130
when you're drawing a
frame to see if you still


389
00:18:19,130 --> 00:18:21,936
need to draw that data.


390
00:18:21,936 --> 00:18:23,519
There's one other
thing you should do,


391
00:18:23,519 --> 00:18:27,730
which is to check to see if
complications are tapped on.


392
00:18:27,730 --> 00:18:30,200
You do this using the
interactive watch face's APIs


393
00:18:30,200 --> 00:18:32,430
that we announced last year.


394
00:18:32,430 --> 00:18:37,309
So that is by implementing
onTap command.


395
00:18:37,309 --> 00:18:39,539
If a complication is
tapped on, then you


396
00:18:39,539 --> 00:18:43,569
need to check the complication
data to see if it specifies


397
00:18:43,569 --> 00:18:47,359
a tap action pending intent.


398
00:18:47,359 --> 00:18:49,890
If there is one, you need
to fire that intent when


399
00:18:49,890 --> 00:18:52,299
the computation is tapped on.


400
00:18:52,299 --> 00:18:54,869
This allows deep linking
from the complication


401
00:18:54,869 --> 00:18:56,832
straight into a
relevant activity.


402
00:18:56,832 --> 00:19:00,528




403
00:19:00,528 --> 00:19:03,509
OK, so that's how
to add complications


404
00:19:03,509 --> 00:19:05,519
to your watch face.


405
00:19:05,519 --> 00:19:08,359
One important tip that goes
for watch phase development


406
00:19:08,359 --> 00:19:10,940
in general, but particularly
for complications,


407
00:19:10,940 --> 00:19:14,730
is minimize the work you
do in every draw call,


408
00:19:14,730 --> 00:19:18,619
especially if you're drawing
more than once a second.


409
00:19:18,619 --> 00:19:22,019
Avoid object creation in
On Draw wherever possible.


410
00:19:22,019 --> 00:19:24,589
As that can lead to a lot of
garbage collection and, hence,


411
00:19:24,589 --> 00:19:27,690
poor performance.


412
00:19:27,690 --> 00:19:31,920
OK, so now let's take a look
at how to build a complication


413
00:19:31,920 --> 00:19:32,644
data provider.


414
00:19:32,644 --> 00:19:35,950




415
00:19:35,950 --> 00:19:38,599
A data provider is a service.


416
00:19:38,599 --> 00:19:42,279
And to create one, you need to
extend complication provider


417
00:19:42,279 --> 00:19:44,643
service from the
support library.


418
00:19:44,643 --> 00:19:47,289




419
00:19:47,289 --> 00:19:51,154
This class has one abstract
method that you must implement.


420
00:19:51,154 --> 00:19:55,240
That is On Complication Updates.


421
00:19:55,240 --> 00:19:59,480
This method is called whenever
the system wants data from you.


422
00:19:59,480 --> 00:20:02,230
So it will be called
when a complication using


423
00:20:02,230 --> 00:20:03,910
your provider is activated.


424
00:20:03,910 --> 00:20:06,099
By which I mean, when
the watch face calls


425
00:20:06,099 --> 00:20:08,559
Set Active Complications.


426
00:20:08,559 --> 00:20:11,019
And it will also be called
when your provider is


427
00:20:11,019 --> 00:20:15,779
chosen for a complication
that's already active.


428
00:20:15,779 --> 00:20:18,140
It can also be called
with a certain frequency,


429
00:20:18,140 --> 00:20:21,839
such as every hour, if
that's what you want.


430
00:20:21,839 --> 00:20:24,750
And it's also possible
to trigger updates


431
00:20:24,750 --> 00:20:26,769
if you need a push style.


432
00:20:26,769 --> 00:20:28,970
For example, if you
have a messaging app,


433
00:20:28,970 --> 00:20:32,000
and you want to update a
complication when a message


434
00:20:32,000 --> 00:20:34,930
arrives, you could do this.


435
00:20:34,930 --> 00:20:37,329
If you want more information
on that then check out


436
00:20:37,329 --> 00:20:41,089
the provider update request
class in the previous support


437
00:20:41,089 --> 00:20:43,440
library.


438
00:20:43,440 --> 00:20:46,559
OK, so let's take a look
at an example of how you


439
00:20:46,559 --> 00:20:48,049
might implement this method.


440
00:20:48,049 --> 00:20:52,029
So you'll see that one of
the parameters is the type.


441
00:20:52,029 --> 00:20:55,369
That's the complication
type that's required.


442
00:20:55,369 --> 00:20:58,319
And the first thing we're
going to do is check that.


443
00:20:58,319 --> 00:21:01,130
Now in this example, we're only
going to support short text.


444
00:21:01,130 --> 00:21:02,880
In a real world example
you would probably


445
00:21:02,880 --> 00:21:04,612
support more than one type.


446
00:21:04,612 --> 00:21:07,920




447
00:21:07,920 --> 00:21:11,750
So first thing now is we start
building a complication data


448
00:21:11,750 --> 00:21:17,210
object of that type,
type short text.


449
00:21:17,210 --> 00:21:19,250
And now we're setting
the short text


450
00:21:19,250 --> 00:21:21,976
field, which is the required
field for this type.


451
00:21:21,976 --> 00:21:26,119
And we do it assessing it
to a simple string, "hello."


452
00:21:26,119 --> 00:21:28,890
You'll notice that it's wrapped
here is a complication text


453
00:21:28,890 --> 00:21:29,736
object.


454
00:21:29,736 --> 00:21:33,990
All of the set methods for
text in complication data


455
00:21:33,990 --> 00:21:37,069
take one of these
complication text objects.


456
00:21:37,069 --> 00:21:41,099
It can just be a wrapper for
simple string or char sequence.


457
00:21:41,099 --> 00:21:43,079
It can also be used
for other things.


458
00:21:43,079 --> 00:21:44,932
And we'll talk about
that a bit later.


459
00:21:44,932 --> 00:21:48,029




460
00:21:48,029 --> 00:21:51,390
OK, so we're also going
to specify an icon.


461
00:21:51,390 --> 00:21:55,190
That's an optional
field for short text.


462
00:21:55,190 --> 00:21:58,859
All of the image set methods
for complication data


463
00:21:58,859 --> 00:22:01,839
use the icon class from
the Android framework.


464
00:22:01,839 --> 00:22:03,809
That allows it to
be either a wrapper


465
00:22:03,809 --> 00:22:06,109
for a resource from
your application,


466
00:22:06,109 --> 00:22:08,589
a drawable resource.


467
00:22:08,589 --> 00:22:12,109
Or it could also be a bitmap.


468
00:22:12,109 --> 00:22:15,369
However, as I mentioned
earlier, the icon field images


469
00:22:15,369 --> 00:22:16,740
should always be tintable.


470
00:22:16,740 --> 00:22:20,380
They should be single color
with a transparent background.


471
00:22:20,380 --> 00:22:25,069
And we strongly recommend you
use vector drawables for this.


472
00:22:25,069 --> 00:22:28,670
That's because the watch
face could draw the icon


473
00:22:28,670 --> 00:22:29,670
at different sizes.


474
00:22:29,670 --> 00:22:32,241
And using a vector will
allow it to resize cleanly.


475
00:22:32,241 --> 00:22:35,170




476
00:22:35,170 --> 00:22:37,589
OK, so that completes
the complication data


477
00:22:37,589 --> 00:22:39,990
object for this example.


478
00:22:39,990 --> 00:22:43,250
All you need to do next is
send that data to the system.


479
00:22:43,250 --> 00:22:45,720
And you do that using
the complication manager


480
00:22:45,720 --> 00:22:48,309
object, which is passed
in as a parameter


481
00:22:48,309 --> 00:22:49,688
to on complication update.


482
00:22:49,688 --> 00:22:53,589




483
00:22:53,589 --> 00:22:56,460
OK, there are two other
methods that you can optionally


484
00:22:56,460 --> 00:22:58,049
implement.


485
00:22:58,049 --> 00:23:02,578
They are,
onComplicationActivated


486
00:23:02,578 --> 00:23:03,619
onComplicationDeactivate.


487
00:23:03,619 --> 00:23:07,519




488
00:23:07,519 --> 00:23:10,880
Complications are activated when
the watch face calls Set Active


489
00:23:10,880 --> 00:23:12,059
Complications.


490
00:23:12,059 --> 00:23:14,720
And they are deactivated
either by another call


491
00:23:14,720 --> 00:23:17,940
to Set Active Complications
with different IDs


492
00:23:17,940 --> 00:23:19,917
or when the user
changes watch face.


493
00:23:19,917 --> 00:23:23,059




494
00:23:23,059 --> 00:23:25,759
Now, as a service,
your provider has


495
00:23:25,759 --> 00:23:27,332
to be declared in the manifest.


496
00:23:27,332 --> 00:23:31,180
And that's also where you use
metadata to declare things


497
00:23:31,180 --> 00:23:35,470
like what types you can
support and what update period


498
00:23:35,470 --> 00:23:38,180
you would like, if any.


499
00:23:38,180 --> 00:23:40,878
Here, with the supported types,
the order does not matter.


500
00:23:40,878 --> 00:23:42,670
And that's because, as
I mentioned earlier,


501
00:23:42,670 --> 00:23:45,880
the watch face gets to decide
the order of preference


502
00:23:45,880 --> 00:23:49,160
for any particular complication.


503
00:23:49,160 --> 00:23:52,059
Now for the update period, be
aware that the update period


504
00:23:52,059 --> 00:23:54,614
is not guaranteed.


505
00:23:54,614 --> 00:23:55,529
We do apply a minimum.


506
00:23:55,529 --> 00:23:57,039
The system applies a minimum.


507
00:23:57,039 --> 00:23:58,829
So you should think
in terms of minutes


508
00:23:58,829 --> 00:24:03,859
or longer, not seconds,
particularly in ambient mode


509
00:24:03,859 --> 00:24:05,990
or when the device
isn't being worn,


510
00:24:05,990 --> 00:24:10,079
update requests might
come less frequently.


511
00:24:10,079 --> 00:24:13,680
Try to make the update period as
long as is reasonably possible.


512
00:24:13,680 --> 00:24:17,960
Getting updates too often
could impact battery life.


513
00:24:17,960 --> 00:24:21,130
If your provider doesn't
need regular updates at all,


514
00:24:21,130 --> 00:24:23,059
then you can just
set this to zero.


515
00:24:23,059 --> 00:24:25,599
And then you won't get any
calls beyond the initial one.


516
00:24:25,599 --> 00:24:28,559




517
00:24:28,559 --> 00:24:30,940
Now one example
where you might think


518
00:24:30,940 --> 00:24:32,960
you want to update
every minute is


519
00:24:32,960 --> 00:24:34,920
where you are displaying
something related


520
00:24:34,920 --> 00:24:37,769
to the time on the watch face.


521
00:24:37,769 --> 00:24:41,319
So here you can see
two complications where


522
00:24:41,319 --> 00:24:43,789
the text changes every minute.


523
00:24:43,789 --> 00:24:48,410
We've got a world clock and
the time to my next event.


524
00:24:48,410 --> 00:24:51,759
But it would be wasteful to wake
up the provider every minute.


525
00:24:51,759 --> 00:24:54,339
And there's no guarantee
that the update request


526
00:24:54,339 --> 00:24:58,529
would come in at the point
where the minute changes.


527
00:24:58,529 --> 00:25:01,890
Even the date complication
shouldn't need to update.


528
00:25:01,890 --> 00:25:03,900
Even though it would
only be once a day,


529
00:25:03,900 --> 00:25:05,400
there's no guarantee
the update will


530
00:25:05,400 --> 00:25:07,220
come at the stroke of midnight.


531
00:25:07,220 --> 00:25:11,779
So it would be showing incorrect
data at certain times of day.


532
00:25:11,779 --> 00:25:16,660
So instead, the API allows you
to use time dependent text.


533
00:25:16,660 --> 00:25:19,089
For text that represents
the current time,


534
00:25:19,089 --> 00:25:21,970
we have time format text.


535
00:25:21,970 --> 00:25:26,259
And for text that represents the
time to or from a given time,


536
00:25:26,259 --> 00:25:29,346
use the time difference text.


537
00:25:29,346 --> 00:25:30,680
Let's take a look at an example.


538
00:25:30,680 --> 00:25:33,869




539
00:25:33,869 --> 00:25:36,250
So let's say that we're
building a complication showing


540
00:25:36,250 --> 00:25:38,410
the time to my next meeting.


541
00:25:38,410 --> 00:25:40,269
And we're using the
short text type.


542
00:25:40,269 --> 00:25:45,529
So I'm building the complication
data of type short text.


543
00:25:45,529 --> 00:25:47,809
We saw earlier that
set short text takes


544
00:25:47,809 --> 00:25:51,029
a complication text object.


545
00:25:51,029 --> 00:25:53,589
And that's so that here we
can pass in a different kind


546
00:25:53,589 --> 00:25:55,558
of complication text object.


547
00:25:55,558 --> 00:25:57,099
So we're going to
use Time Difference


548
00:25:57,099 --> 00:26:00,380
Builder to create one.


549
00:26:00,380 --> 00:26:02,799
So passing into the
builder, we need


550
00:26:02,799 --> 00:26:04,750
to set the reference period.


551
00:26:04,750 --> 00:26:07,079
That is the time that
the text relates to.


552
00:26:07,079 --> 00:26:11,250
So in this case it's the
time of my next event.


553
00:26:11,250 --> 00:26:14,279
Let's say that's from
4:00 PM until 5:00 PM.


554
00:26:14,279 --> 00:26:15,759
In that case,
start time here Is.


555
00:26:15,759 --> 00:26:16,670
4:00 PM.


556
00:26:16,670 --> 00:26:19,920
End time here is 5:00 PM.


557
00:26:19,920 --> 00:26:22,210
Now we add a style.


558
00:26:22,210 --> 00:26:26,690
So this just determines
how the text is formatted,


559
00:26:26,690 --> 00:26:27,799
is displayed.


560
00:26:27,799 --> 00:26:30,670
In this case we're
using short joule unit.


561
00:26:30,670 --> 00:26:32,660
That means, for
example, if the time


562
00:26:32,660 --> 00:26:36,690
difference was five hours and 15
minutes, it would show 5H 15M.


563
00:26:36,690 --> 00:26:40,180




564
00:26:40,180 --> 00:26:43,809
That completes the
time difference text.


565
00:26:43,809 --> 00:26:45,059
So we call Build.


566
00:26:45,059 --> 00:26:46,619
There's one more thing.


567
00:26:46,619 --> 00:26:49,809
As I mentioned earlier,
complication data


568
00:26:49,809 --> 00:26:52,519
can cease to be valid
after a certain time.


569
00:26:52,519 --> 00:26:53,980
And that is the case here.


570
00:26:53,980 --> 00:26:56,000
And it's particularly
important here


571
00:26:56,000 --> 00:26:59,799
because the time difference
text is the time to the event,


572
00:26:59,799 --> 00:27:02,299
but it's also the
time since the event.


573
00:27:02,299 --> 00:27:05,319
So if it were 10
minutes after my event,


574
00:27:05,319 --> 00:27:09,430
then the complication might show
10M, which is not what we want.


575
00:27:09,430 --> 00:27:12,089
So we have to set an end
time so that it shows nothing


576
00:27:12,089 --> 00:27:14,690
after the event.


577
00:27:14,690 --> 00:27:17,329
OK, so that completes
the complication data.


578
00:27:17,329 --> 00:27:20,880
So we just call Build.


579
00:27:20,880 --> 00:27:24,890
Let's see what that would
look like on the watch face.


580
00:27:24,890 --> 00:27:27,890
So, the event is at 4:00 PM.


581
00:27:27,890 --> 00:27:33,609
One hour and 45 minutes
before, we would see this.


582
00:27:33,609 --> 00:27:37,789
At 3:45 PM, we would see this.


583
00:27:37,789 --> 00:27:40,039
So although it's
the short joule unit


584
00:27:40,039 --> 00:27:43,230
style, when it's only minutes,
we only show the minutes.


585
00:27:43,230 --> 00:27:45,109
We never show seconds
in this style.


586
00:27:45,109 --> 00:27:47,940




587
00:27:47,940 --> 00:27:50,750
During the event,
we would show this.


588
00:27:50,750 --> 00:27:54,612
So the time difference text
actually shows the text now.


589
00:27:54,612 --> 00:27:56,069
These strings, all
of these strings


590
00:27:56,069 --> 00:28:00,789
are localized according to
the locale of the device.


591
00:28:00,789 --> 00:28:02,970
After the event we see nothing.


592
00:28:02,970 --> 00:28:05,960
Because we set the end time.


593
00:28:05,960 --> 00:28:09,349
So for more details of the
types and styles of time


594
00:28:09,349 --> 00:28:12,880
dependent text, check out
the complication text class


595
00:28:12,880 --> 00:28:14,500
in the wearable support preview.


596
00:28:14,500 --> 00:28:17,230




597
00:28:17,230 --> 00:28:21,450
OK, so that's the Complications
API for both data providers


598
00:28:21,450 --> 00:28:23,029
and for watch faces.


599
00:28:23,029 --> 00:28:25,695
We're really excited to see
how you all make use of it.


600
00:28:25,695 --> 00:28:28,809




601
00:28:28,809 --> 00:28:29,896
TONY FERREIRA: Thanks.


602
00:28:29,896 --> 00:28:31,730
So if you like what
you've heard here today,


603
00:28:31,730 --> 00:28:34,039
and you'd like to
try it out, you can.


604
00:28:34,039 --> 00:28:38,710
Just go to g.co/wearpreview.


605
00:28:38,710 --> 00:28:43,230
You can find out about how to
get the Preview SDK, device


606
00:28:43,230 --> 00:28:47,359
images, and more information
about the APIs we're launching.


607
00:28:47,359 --> 00:28:50,150
The dev preview also
includes this watch face.


608
00:28:50,150 --> 00:28:51,910
It's called elements.


609
00:28:51,910 --> 00:28:54,940
And it supports a variety
of complication types.


610
00:28:54,940 --> 00:28:59,009
So you can test any data
providers you build.


611
00:28:59,009 --> 00:29:03,099
The preview does include a few
providers, like battery level,


612
00:29:03,099 --> 00:29:05,546
world clock, and date.


613
00:29:05,546 --> 00:29:07,920
You can use these to test the
complications on your watch


614
00:29:07,920 --> 00:29:10,569
face.


615
00:29:10,569 --> 00:29:12,569
Here is a list of the
Android Wear sessions


616
00:29:12,569 --> 00:29:14,320
that were on today at
I/O. And don't worry


617
00:29:14,320 --> 00:29:16,194
if you've missed any of
them, because they're


618
00:29:16,194 --> 00:29:17,346
all be on YouTube soon.


619
00:29:17,346 --> 00:29:21,031




620
00:29:21,031 --> 00:29:23,490
OLIN LAN: So if you'd like to
have a go at creating a watch


621
00:29:23,490 --> 00:29:27,029
face with complications or
building a data provider,


622
00:29:27,029 --> 00:29:28,269
do check out the code labs.


623
00:29:28,269 --> 00:29:30,910
You can do them here
at I/O. Or you can go


624
00:29:30,910 --> 00:29:36,900
to g.co/codelabs/io16/wear.


625
00:29:36,900 --> 00:29:40,089
We'd also love to hear any
feedback you have on the API.


626
00:29:40,089 --> 00:29:43,119
So if you find any bugs, or
if you have any suggestions


627
00:29:43,119 --> 00:29:48,596
or questions, please go
to g.co/wearpreviewbug.


628
00:29:48,596 --> 00:29:52,140
And finally, if you'd like to
discuss the Complications API


629
00:29:52,140 --> 00:29:55,569
or anything else about Android
Wear with other developers,


630
00:29:55,569 --> 00:29:58,700
go on to Android Wear
developers G+ Community


631
00:29:58,700 --> 00:30:02,640
at g.co/androidweardev.


632
00:30:02,640 --> 00:30:03,819
OK, thank you very much.


633
00:30:03,819 --> 00:30:05,319
[APPLAUSE]


634
00:30:05,319 --> 00:30:09,269
[MUSIC PLAYING]


635
00:30:09,269 --> 00:30:20,000
 Subtitles End: mo.dbxdb.com

0 0
原创粉丝点击