00:04NICK BUTCHER: Android is a very
powerful and popular operating
00:06system, but there are
a few things about it
00:08which make it unique.
00:10My name is Nick Butcher and I'd
like to share with you today
00:12some of my favorite
features of Android
00:14and how they make it
super interesting.
00:17Now, my absolute favorite
feature of Android
00:21When I say open, you
might think of something
00:24like this, which is Andy Rubin--
the godfather of Android,
00:27in fact-- sharing his definition
of open about how you can get
00:31access to the source code and
build the operating system
00:34This is pretty
cool in my opinion,
00:36but it's not what I want
to talk about today.
00:38What I mean by open is
actually the opportunity
00:41it gives you, as people
making applications,
00:44to make more
interesting experiences.
00:47It's the openness to share
data between applications,
00:50to create experiences
which work together
00:53to be bigger than the
sum of their parts,
00:55or what I like to think of
as building task-based flows.
00:59Here's what I mean by that.
01:01Often when you want
to achieve something,
01:02you might have to use
multiple different apps
01:04or different tools to do so.
01:07If those apps don't
work together,
01:09then you're forced
to work around this
01:11by doing things like taking
screenshots or saving something
01:14to the clipboard, hitting Home,
going into a new application,
01:17pasting that in, and
then hitting Home,
01:19going to the third application,
and going through the task.
01:21When really as a
user, what you want
01:23is to just move though these
applications to achieve
01:26And this is what
Android lets you do.
01:29Here's a simple example where
I'm browsing a web page.
01:32I see some interesting text
that I want to share onwards,
01:35so I just select it, hit
Share, and then post it
01:37through my app of choice.
01:41This is pretty
trivial, but you can
01:42see how the apps
organize themselves
01:45around the task I was trying to
achieve rather than me having
01:47to hit Home and think of
the app first, and then
01:50go and wrap the task around it.
01:53Here's a slightly
more involved example,
01:54where I'm browsing Twitter
for some inspiration
01:57to a design problem I'm facing.
01:59I click on a link, which opens
in a native application showing
02:02me an interesting image.
02:04I can share this image
onto a drawing app, where
02:07I can mark it up, annotate
it, scribble some notes,
02:10and then share it onward
into my email application
02:13where I can then send
that onto a colleague.
02:16So notice that at
no point did I ever
02:18have to copy anything, or
hit Home, or save anything.
02:21The apps themselves organize
themselves around the task
02:25I was trying to achieve, letting
me seamlessly flow through it.
02:28And these are the kind
of open experiences
02:30which Android lets you build.
02:32Now thinking about
that openness,
02:34there's really kind
of two aspects to it.
02:36There's the
applications themselves,
02:37which can be open
to working together.
02:39And there are open features
of the operating system,
02:42which let your apps plug into.
02:43Now for open apps,
it's quite tempting
02:46sometimes to think of an
app as a silo of information
02:49or functionality, but really
on Android, an application
02:53is actually more of a collection
of individual functions.
02:57Now, you can wire
up these components
02:58to build a cohesive
application experience,
03:01but more interestingly
is that the boundary
03:04to your application
is kind of porous.
03:06You can call out to
other applications,
03:08or have them call into you,
or have the OS call into you
03:11at different points, allowing
you to build this richer
03:16Let's take a look at what these
components are that you can
03:18use to build your application.
03:20There are really
four major types--
03:21screens, logic,
data, and events.
03:24Or to use their correct
developer terms, activities,
03:28services, content providers,
and broadcast receivers.
03:32Let's take a look at
what each of these does.
03:34Now, a screen in your
app is pretty obvious.
03:36It's something that
you show to the user.
03:39But what's interesting
is that you
03:40can expose parts of your
app-- screens within your app
03:42to other applications or invoke
screens from other applications
03:46to be part of the
flow within your app.
03:48This lets you actually
kind of outsource work
03:51to other applications.
03:53Here's an example from
my expenses application.
03:56It lets me take a photo of a
receipt to track and expense.
04:00Now, the expenses
app doesn't want
04:02to have to build a camera
application itself.
04:05It just invokes a screen
from another application,
04:07letting it outsource that task.
04:09So my other camera
application takes a photo,
04:11and then returns that data
back to the expenses app.
04:15This makes it easier to kind
of build richer functionality
04:17without having to build
everything yourself
04:19or offer something which
your app uniquely does
04:21to other applications
to integrate with.
04:24Next up is logic or services.
04:26Now, this lets your
application execute
04:28some kind of functionality
in the background
04:30without having to present
something to the user.
04:32So this could be
pretty much anything.
04:34This could be processing
some information,
04:36uploading some
content to the web,
04:37responding to an event
happening on the device.
04:40As an example, my podcast
application doesn't necessarily
04:42have to have anything
on screen, but it
04:44can be downloading
content, and streaming it,
04:46and playing the audio to
me all in the background.
04:50Next up is data or
content providers.
04:53So Android has a
standardized way
04:55that applications can expose
and read data from applications.
05:00This lets you share
your information
05:02or read information
from other places
05:04to build a richer experience.
05:06This is Songkick--
a band tracking
05:08app which I really like.
05:09Now on first install, it'll
actually scan my device
05:12looking for these content
providers it knows about
05:14to find out bands or artists
already on my device-- music
05:18And it uses that information
to bootstrap your profile.
05:22So here you can see it's found
200 artists on my phone already
05:26and offers me to kind of
create a profile based
05:28on that information.
05:29This is a way smoother
UX than having
05:31to have me enter it
all manually and it's
05:33made possible by this
content provider system.
05:36And the last component is
events or broadcast receivers.
05:39Now, the OS will broadcast
interesting events which
05:42your app can respond
to or likewise,
05:44your application can
broadcast interesting events
05:47to other applications and
have them respond to it.
05:51In this example, when I start
playing a song in my music app,
05:53the genius application
notices that because it's
05:56been broadcast
across the system,
05:58and offers up lyrics to the
song, which is pretty handy.
06:04So those are some
of the features
06:05you can use to build these
open app experiences.
06:08Let's have a look at how
the OS lets you build
06:10an open experience as well.
06:12Here are some of the major
ways that applications
06:14can plug into the OS to expose
their content in an open way.
06:19Firstly, Android lets
you replace applications
06:22that your phone comes with.
06:23Here, I've replaced
the default browser
06:25my phone came with with
a third-party one called
06:28This offers a
different experience.
06:30When I click on a
link, it opens up
06:32in this little
tiny bubble, which
06:34lets me continue browsing the
content behind it until I can
06:36see it's loaded, and
then I tap on it,
06:38and I can view it fullscreen.
06:39It's a different
experience and I
06:41love that I have the
ability to change that.
06:44Here, I've gone as
far as replacing
06:45the launcher or the
home screen experience
06:47on my phone, which gives you
a completely different feel.
06:51So in this launcher
here called Peek,
06:54I can very quickly
use the keyboard
06:56to find and launch
applications or content
06:59that I use frequently.
07:01Next, Android lets you
launch applications
07:04when you click on URLs.
07:06So in this example here, when
I click on a YouTube link,
07:09it opens up in the native
YouTube Android app
07:13rather than in the
web page, giving you
07:14that full native experience.
07:16So I can minimize and
choose the next video
07:18to play, for example.
07:21Android also lets you see
what other applications are
07:23installed on the device.
07:25In this example
here, a newsreader
07:26app notices that I have
the Pocket app, which
07:29is a read-it-later
application, installed
07:32and offers a quick link to
save one of the news stories
07:35into Pocket for later reading.
07:38And lastly, Android
just offers so many
07:40what I've deemed
system integrations.
07:42This is places you can plug
your app into the platform
07:45and expose your content
or offer different entry
07:47points into your application.
07:49Just taking a look
at the Home screen,
07:51there are so many different
places that your app can
07:53surface its content or plug-in.
07:55You can create a live wallpaper.
07:57You can integrate
with voice search.
07:58You can have a widget or
an application shortcut.
08:01You can plug into Google Now.
08:03There are just so
many different places
08:05that your app can plug-in.
08:06You don't have to think
of your app as this silo
08:08that you have to launch
by tapping on it.
08:10Your app can actually bring
content and surface content
08:12in so many different ways.
08:14And these ways are just
evolving all the time.
08:16If we look at some of the more
recent features in Android 7.0,
08:19you can now plug into
the Quick Settings bar,
08:22so your application is
always just a swipe away.
08:25Or you can create one of
these floating applications,
08:27like the browser example
we saw, so your application
08:30can sit on top of other content.
08:32Or you can do something
like responding to the text
08:35that the user has selected
in any application.
08:37And those are just examples
we've looked at on phones.
08:39Android obviously,
runs way beyond that,
08:42from watches to tablets
to cars to smart speakers.
08:45There are so many different
ways that your application
08:47can plug-in and create
uniquely open experiences.
08:50To make this all a
little bit more concrete,
08:52I want to give you
a final example
08:54of an experience which I
really, really enjoy on Android.
08:57This is my Home screen.
08:59I've got kids, so I like
to use pictures of my kids
09:01as my wallpaper,
but not every photo
09:04makes a really good wallpaper.
09:05Sometimes, they can
be too light and they
09:07don't contrast very well with
all the other stuff-- the icons
09:10and the text that
sits on top of them.
09:12So I run an application
called Muzei,
09:15which helps me to build
a better experience.
09:17Now, Muzei will automatically
darken or even slightly blur
09:21the wallpaper image in order to
give you sufficient contrast.
09:25And I can quickly double-tap on
an empty area on my wallpaper,
09:28and then see the full
brightness image there.
09:31Now, Muzei has a few more
tricks up its sleeve.
09:33For example, it
offers a plugin API,
09:36so that you can install
new applications
09:38to offer different art sources,
different wallpapers that you
09:41can show on your device.
09:42So here, for example,
I have an astronomy pic
09:44of the day from NASA.
09:48Now I've got two kids and
I can't play favorite,
09:50so Muzei actually helps me
out again by actually rotating
09:53the wallpaper image from a
folder of different images.
09:56And if you look
closely here, you
09:58can see that Muzei is
actually working closely
10:01Here, I'm using a cool launcher
called Action Launcher, which
10:05will work with Muzei to
understand the image,
10:07and theme itself based on it.
10:09So here, you can
see it's pulled out
10:10the colors from the wallpaper
and used it to theme
10:13the search bar at the top
and other areas of the UI.
10:18Muzei will also work
with my smartwatch,
10:20so that when the
wallpaper changes,
10:22the same image will be sent to
my watch so I can see it there.
10:25And even beyond that,
it's also pulling out
10:27the colors from
the wallpaper image
10:29into the watch face
itself to customize
10:32to go with that image.
10:34So thinking about it from
an app point of view,
10:36there's obviously the Muzei app
which is at the center of all
10:39this, but it can actually
talk to any number of other
10:42applications which have
integrated this API--
10:45to provide different
art sources.
10:47And then it also
talks to another app,
10:50which is my launcher app, in
order for it to theme itself.
10:52And then it talks to a
version of itself running
10:55on the watch, which also talks
to the watch face in order
10:57for it to theme itself.
11:00So there are actually a
lot of individual apps,
11:02but they're all working together
and communicating in order
11:05to create a single experience.
11:07And as a user, that's
what I care about.
11:10Android offers these
unique facilities for you
11:12to build open, collaborative
experiences that you just
11:17And I think that
makes it pretty cool.