I/O BootCamp 2011: Google TV, the New Frontier for App Development

Uploaded by GoogleDevelopers on 11.05.2011

>> KURZKE: Thanks everyone for coming for our session. I've been told if you want, you
can rearrange the chairs a little bit to make it more comfortable for you to actually see
the stage. This one is more of a presentation. It's not as much as hands-on lab. So, you
don't really need your laptop if you can go with--like an hour without checking email.
I know it's hard to do. >> SAXMAN: No chance.
>> KURZKE: I know. So, thanks everyone. Welcome to our talk about Google TV and we're going
to talk about the current version of Google TV. Myself, I am Christian Kurzke. I am the
developer advocate for the Android platform on Google TV. I joined the team about a year
ago and I've been working with the preloaded Android applications, so, the Napster, Pandora,
Twitter Apps, all the good stuff that's on your TV today. And with me is Paul.
>> SAXMAN: My name is Paul Saxman and I'm relatively new to the Google TV Team. But
I have quite a bit of Android background. I built quite a few apps and I truly believe
that Google TV is the new frontier for Android app development.
>> KURZKE: We're the Wild West. So, what we also have here is--let's see, hopefully we
have a next slide. Yes. So, we have this thing called Speaker Meter. We're going to use throughout
Google IO. You can give us live feedback to either on Twitter, I'm not going check it
here but I will look at it later, or Speaker Meter, this is for each session. You can just
try and scan the QR code and give us feedback on it later.
>> SAXMAN: And we are going to have a Q&A at the end. So--and actually, when--we do
have that microphone up here for everybody to use. So, feel free to line up near the
end of the talk. >> KURZKE: Okay. So actually, just to give
a quick hand--show of hands. So, how many of you are actually Android developers and
have developed Android apps? Awesome, very good. And how many Web developers do we have
here or people who are not so familiar? Good, good. So, hopefully, we'll try to keep it
pretty high-level and pretty generic. So, we should have something for all of you. We'll
go a little bit into detail but here's the overview.
>> SAXMAN: Yes. Yes. So, here's a breakdown of what Christian and I are going to talk
about today. We're going to start off with an overview of the Google TV platform. And
then, start to talk about building native Android apps and Web apps, kind of at high-level.
We're then going to talk a little bit about how you decide what to build because it's
kind of a tough question which direction you want to go sometimes. We're then going to
segue into building Android apps for Google TV a little more deeper--deeply, covering
how to get set up with the environment. Google TV displays, types of apps and tips on navigation
and layout, which are very pretty very important. And finally, we'll be sure to keep some time
at the end for Q&A. Since this is BootCamp and there's a lot of news coming the next
couple of days, today, we're going to focus on what Google TV is now and how you can start
developing for the platform today but won't be talking about the next version of Google
TV yet. So, please keep in mind--keep that in mind during the Q&A. And, however, we do
think that there's a lot of great information in this talk for developers interested in
Google TV as the new platform for Android development. So, without further ado, let's
talk about the Google TV platform. So, what is Google TV? Google TV is a platform that
opens the living room to the Web, making television more relevant and engaging. It accomplishes
this by bringing together a sophisticated and open applications platform, which is Android,
and a full HTML5 capable Web browser, which is Chrome. And also, it brings all this together
with the power of search. Like, Android for mobile devices and tablets, it's one platform
for multiple devices. >> KURZKE: So, from a little bit more of a
technical point of view, just also some of the, you know, clarifying some of the conceptions
that people have--so we really want to bring internet content and interactive content together
with your existing TV content. So, Google TV--sometimes in the press after the launch,
there was this sort of connotation that it would replace your existing cable subscription.
And it's really not the intention. So, we are trying to bring new content together with
your old content that you already have on your TV. So, most people, at least here in
the US, sort of the standard set up is you have a satellite box or a cable box and your
cable box connects to your TV and you have a DVR and you have all really great set up
with an audio system and everything. What we want is we want Google TV, in this case
here, I'm showing the logitech box integrate with your existing setup. It would sit between
your cable box and your TV and it would bring you additional content from the internet.
So, you can--today already, you can have, on your Web browser, you can go to optimize--TV
optimized websites or you can run some of the pre-installed Android applications. So,
if you already have a Google TV, you can run the Pandora app, you can run Netflix app,
you can stream movies, and it brings it to the largest display in your house, to the
TV. >> SAXMAN: So, to--let's take a quick look
at the history of Google TV to help understand where it is today. It was announced just about
a year ago at IO, and a few months after that, the Sony and Logitech Google TV devices were
available to the--or available on the market. Those devices are based on Android 2.1 and
like Christian mentioned, they have several Android applications preloaded. In December
of last year, the Android remote control app was released, which was received pretty well.
And in January of this year, we announced two new OEM partners, Samsung and Vizio. And
finally at this last March, we released an iPhone version of the remote app, which also
is pretty highly received. So, looking at this timeline, something you should note is
that Google TV is still a relatively young platform. As with Android on mobile devices,
we brought Google TV to the market quickly so that we can get user's feedback. And this
year, we have collected a lot of great feedback and we are incorporating it into Google TV
so that it can become a great device. >> KURZKE: And I think also what's really
interesting about Google TV is it will be an interesting platform for Android developers,
we have announced last year that we will bring market and we will have the ability for developers
to develop applications for it. So, just look at it like the G1 device, it's still very
early in the curve, but also earlier this year, as Paul mentioned in January, at CES,
we announced two new hardware OEMs. So, there's going to be a large footprint of devices in
the market. So, what is it from a user's point of view? One thing you always have to keep
in mind when you develop applications, what is the context in which your application will
be used. And I think what you have to keep in mind is when you develop an app for Google
TV, sort of put yourself in the mindset of your user, it's like lean back on a couch
in the living room after a long day at work with the remote control and probably a bag
of chips in the other hand. So, it's really a different mindset than what your user has
when they interact with your website. When you're maybe, in the office, you're between
meetings, you're checking a website, you're, I don't know, going to your favorite eCommerce
website or something. So, the TV is more of a leisure, more of an entertainment device
and people spend a lot of time consuming content. So, what we really want to accomplish with
Google TV is make the TV experience more interactive and just at least when you develop an app
for it, it gives you one path for the user where they normally wouldn't have your app
in front of them. And we know a lot of people today when they watch TV, they have their
mobile phone or maybe their tablet, they check Twitter or they check some of their other
social networks and the TV has the potential to bring all these together. So, here's another
home screen, or here's a snapshot of the home screen, in case you haven't seen Google TV
and I know last year, a lot people who were at Google IO, they actually received a Google
TV, a box, an early version. So, this is what it looks like. It--in the background, you
see a live television. So this here was a travel channel. You just click the home "Home"
button and it overlays the home on top of your live TV. And it gives you very quick
access, In this case, to Android applications. So, you see, a menu on the side here, you
can have browser bookmarks you can have Android apps. And here's just a selection of some
of the Android apps that are preloaded on the box. So, you have--what we chose a portfolio
of typical apps that people may want in their living room, we have something for sports
fans, you have your Netflix, you have your Pandora. So, I think it's an interesting platform
for users to get content while they're watching TV.
>> SAXMAN: I think, you know, one point--one thing to point out here too is it's not just
a big phone, you know what I mean? It's really a different type of device with a different
type of interface, even though it's all built on top of Android.
>> KURZKE: Yes. So, this Android app, I mean, it's already--sort of the first indication--by
the way, the home screen, of course, is also implemented in Android. But it's an indication
of how you should layout your app, you know, make it very, very light on information. Keep
a lot of open space, people don't want to see pages and pages of text on their TV screen.
That's not an eReader. So, the other component of Google TV is the remote control. If you
think about how people interact with your Android application today, virtually, all
Android applications use a touch interface, use a touch screen. Google TV, people sit
10 feet away from the screen and it would be very inconvenient if they have to get up
and walk to the TV and touch stuff. I think that's why we invented remote controls, that's
what the TV is used to be. So, Google TV comes with remotes. What we want is a full QWERTY
keyboard, I personally really hate when I have to search for shows and I have to have
an onscreen keyboard and navigate through ABCD. So, all the Google TVs come with a QWERTY
keyboard, they do have a mouse pointer of sorts. So, the Sony remote, for example, it
has a little optical mouse joystick. But one of the main things is, it's not a touch screen.
So keep that in mind also and we'll go over some of the implications later. One key that
I want to highlight is the search key. We really believe that Google TV should help
you find content that's relevant for you much faster, after all Google is really a search
company, we know a lot about searching. So, we want to make it very easy for you when
you watch TV to find content. So there's a dedicated search key for the Android guys
amongst you, it brings up the system search, the system search box which we call the quick
search box. And I'll show you what that looks like. So, on Google TV, when you press the
search key and you enter a term, it will go through the system search, it will bring you
content from different sources. So in this case, it's mainly YouTube content but it could
also be content that's relevant for your TV channel. So if you search for something were
you have, let's say, a DVR recording or it's a show that's coming in the future, you can
schedule a recording. And for developers, it's really cool because, as you see in the
bottom here, you can actually contribute results. So in this case, a YouTube application and
the Amazon application contributed results to this. So if you've developed an app that
wants to get in front of the user and maybe, you know, search through your media library
or search through your photos, you can also contribute search results here. On this screen,
I want to point out the little icon in the bottom. So this is, today, were the notifications
show up. I've heard people describe the Android notification as sort of the new inbox. It's
like, people get so much email, you don't even read email anymore but when something
shows up in your notification bar, you typically--it grabs your attention. So, this is where notifications
show up today, and in this case, the Pandora app as you may know from your cellphone, every
time it plays a new track, it notifies you just to keep you current if you're interested--what
you're listening to in the background, maybe. So in this case, Pandora threw up a notification
and said, "Hey, you know, I'm having a really great new sound and--that I'm listening for."
And the copyright owners of those probably don't mind. So, yeah, so this is our Pandora
notification box and it's also a great way for you as an Android developer, it uses the
regular Android notification APIs, so if your app has something new and exciting going on,
you want the user to either be reminded of or maybe you just want to get in front of
the user again, you can open up a notification or you can send a notification and the user
can open up the dialog. So, those last things, the search, the notification, it's all really
pretty good integration but Google TV, as we said earlier, it's based on the Android
platforms, and one of the really cool things you can do in Android is your application
can integrate pretty deeply into the platform. So, on a mobile phone, you have a lot of ways,
you have live wallpapers; you have things like widgets and so on. And on TV, there's
a lot of ways--for example, here, you see a live folder, so the user can configure the
live folder showing the tweet timeline to show up right on the home screen. So you can
imagine, as a developer, it's not just a very standalone experience, it's not start an app,
interact with an app and go back to the TV watching. But, we really want to enable developers
to get in front of users and get integrated into the system. I think that's one, for me,
I'm an Android guy, so I come from the Android world. It's one of the really cool things
that Android enables you to do. So, now that you've seen all the things that are possible,
why would you develop an app for Google TV? I mean, besides, being a really cool platform,
it's also typically the largest display in the house. Every time I visit my friends now
and they have a little picture frame that shows like their last notification photos
on like the two inch LCD or whatever, four inch LCD. I'm like, what's the point? Just
use a TV. You have a 60 inch picture frame. So it's the largest display and you can just
go wild and imagine what you as a developer could show on the screen. I mean, there's
a lot of really cool apps that are possible. It's also connected to a really amazing sound
system. Typically, your TV or your hi-fi stereo in the living room, you don't need to plug
anything in, Google TV is already connected to it and you as an app developer can use
the sound system. And the other thing is, supposedly in America, people spend five hours
a day watching TV. Keep in mind, this is not America, I know you guys probably spend a
lot more time on your computer. But this is a stat--just looking at the media habits of
teenagers, eight to eighteen year olds, even if you take everything else together, gaming,
consoles, listening to music, playing video games, sitting on the computer, they spent--still
spend 42% of their time more than computer and video games together, just watching TV.
So, being able to create applications around the TV, I think is really exciting for developers.
And, I think that's also why we have gotten a lot of really excited developers who keep
asking us, "So when can I get my app onto Google TV?" And, as we said, we're not going
to make any new announcements today but we stand by what we said last year. It's--the
market is coming later this year and we're working on it, we're very focus on it.
>> SAXMAN: So, now that we know what Google TV is, let's talk a little bit about how to
develop for Google TV. From a developer's perspective, Google TV is really about the
power of choice. Google TV is--it's actually Android and the Web in one box and it's not
just the Web but it's the HTML5 in a full Chrome Web browser which is different than
most Android devices. So basically, this isn't your grandmother's Web on TV, I mean this
is a full Web experience. So given that developers can take advantage of the Android platform
and a full Chrome Web browser, how should they decide what type of app to build? To
help answer that question; let's first take a look at what the Android platform has to
offer. Android takes the Java language to new heights with APIs for layouts, graphic
rendering, search, media, databases, the list goes on and on. And since these APIs are shared
across all Android devices, the code developed on top of these APIs can be reused on mobile,
tablet, and Google TV devices. And in some instances, the same app can be used in all
three types of devices and it's--that's entirely possible. The apps themselves can be installed
in a device with just a couple of clicks and they automatically update if the user allows
it, which is a benefit to both users and developers. Back to the APIs, since many of the Android
APIs access the hardware directly, developers can leverage system hardware to accelerate
performance and gain more control over how system resources are utilized. As a software
platform, Android has a number of features that help developers design rich user interfaces
and streamline information flow. This list is actually--the list on the--the slide here
is actually just a small subset of what Android has to offer to developers. We've cover some
of these features already, such as notifications. And many of these will be discussed further
at IO. But in summary, the Android platform gives developers full control over both hardware
and software keyboards and buttons, and most cert--most notably the "back" and "search"
buttons which is actually a big benefit; the ability to share data with other apps and
display custom search results; the ability to push notifications to users from background
services; a full multithreading based on Java threads; and a very rich application framework
which includes intents, activities and services. All you Android guys are going to be very
familiar with all of this. The main takeaway here is that the Android platform gives developers
a lot of control over the design of their apps in terms of the interfaces and their
architecture. There are definitely a lot of opportunities; a lot more opportunities to
hear about Android features at IO, but for Google TV in particular, don't forget to miss
Christian and Jason's talk on Wednesday, that's this guy here; in case you're looking for
him in the hallway before hand, so. Here's another very good example of the power of
Google TV in the Android platform. Here, we see the Google--the quick search box again.
The user has entered discovery off of his or her search query. And we see results from
the Web and the user's lineup, like we'd expect, which is very useful. And I see "MythBusters,
Table Cloth Chaos" coming up in seven minutes which is actually one that I think I've missed,
so maybe we want to cut this a little short. We also see that there are results from YouTube,
Napster, and Amazon. We see these services listed here with their exact number of search
results since each service has an Android app installed on Google TV, and each app has
a searchable content provider for the information it manages. By using Android's APIs, developers
can deeply integrate their app with the Google TV platform. And what's unfortunately not
shown here, apps can actually share information with one another. So on the other hand, for
Chrome and the Web; developers have access the HTML5, CSS, JavaScript, and the Flash
platform, all of which are very powerful tools for content delivery. Using this suite of
technologies is relatively straight forward for developers to create interfaces that work
on multiple form, factors and displays, including mobile screens, medium and high density tablets,
desktop computers and televisions. There are a variety of tools for developing Web applications
many of which were created or refined over a number of years to make Web development
very quick and easy. And if you already have an existing Web application, you can likely
reuse most if not all of your content and code when you're creating a Google TV-enhanced
website. If you do develop a truly great Web application, your app could be feature on
the Google TV spotlight which highlights the latest and greatest Web-based Google TV apps
available. And finally, with the Web, there's no need for developers to download or install
your app, and updating is seamless. As soon as you published its content, it's available
to end users. And along those lines, for more information, if you're interested in building
Web apps for Google TV, don't miss Chris and Dan's Tech Talk on Wednesday as well. Different
times so you could actually make it to both. So here's an example of a Web application
optimize for Google TV. The first thing that you'll likely notice is that this app doesn't
look--doesn't look like a traditional website at all and it looks like a TV application.
However, if you're familiar with HTML and CSS, you know that this page could easily
be modified to look good on mobile devices, tablets or PCs. It's just a matter of changing
a few parameters around. This app gives TV viewers easy access to the information that
they're likely to want via streamlined interface with easy to read fonts, plenty of padding
and simple navigation. And it also has full content search capability which is not integrated
into the Google TV platform but Google TV really has no problem searching Web content.
>> KURZKE: So just to wrap up in summary, I think for both, for Web developers and for
Android developers, just some things to keep in mind is really using large font sizes.
Your application is typically viewed in a living room environment. People sit far back.
Reading paragraphs of text is hard. You don't want too many line breaks in your text. The
other thing is on television, keep in mind there are two major resolutions that are supported
by modern televisions. It's called 1080p and 720p. So, that's the number of lines. So,
one is 1920 by 1080. The other is 1280 by 720. And also, really when you design and
sometimes it's different when you're in a mobile mindset you always try to squeeze as
much information as you can on the limited number of pixels. On TV just use larger icons.
Keep more space between the icons. Make it easy to navigate and don't overload the user
with too much information. What we have found just over the last couple iterations that
we've gone through is it's better to have more a progressive disclosure. If you have
more information available, make it visible to the user but then give them a choice so
either go into more details. Sometimes it's easier to just show, say, a short video clip.
The website that we saw, that Paul showed, with--just like a TV show information, having
the cover art there or having a screenshot there is probably a lot more relevant to TV
users than having the full bio of all the actors. If they want that information, you
can give them the option to get it but try to keep the amount of information on the screen
pretty light. >> SAXMAN: So, with all the benefits of these
two platforms, it still might be hard to decide which one to use to develop your app, so ultimately
you might have to make a pragmatic decision. There are a few questions to help guide you
in making this decision though. Basically, are you currently working on an Android app
that you'd like to see on Google TV? Or do you already have a Web-based application that
you could migrate? Or if you've-- you had to start working on an Android app or website
do you have existing code or expertise that you could use? For performance, do you need
access to Android's low-level APIs or is the performance that you get with Chrome enough,
which is actually usually more than enough? And finally, do you want to share information
with the Google TV platform or other Android applications like we saw with search? If so,
building an Android is definitely going to be the right choice. And there's actually
a really good talk coming up if you're still looking for more information about HTML versus
Android. It's also going to be at Wednesday. It's a different time than the other two talks,
so I think you could... >> KURZKE: You can do both.
>> SAXMAN: ...go to all three. >> KURZKE: Yeah, you can do them three in
a row and after that you'll know everything about Google TV.
>> SAXMAN: Exactly. Yeah. So, yeah, definitely be sure to stop by and check that out.
>> KURZKE: So, just, yeah, in summary here. >> SAXMAN: Yeah. I'm just going to say, before
we dive into the specifics of building Android apps on Google TV, here are some pointers
to getting started with building Web applications. The rest of the talk is going to be about
Android so, you know, this is your last chance to look this stuff up. Again, be sure to stop
by Chris and Dan's Tech Talk on Wednesday. Visit the Google TV Documentation Website,
lots of great information there. Right now you can see it's targeted towards Web but,
you know, we have Android documentation coming as well. Join the Google TV Web Developers
Forum where there's lots of discussion about building Web apps for Google TV. And finally,
check out the Google TV Website Gallery where you can go for inspiration for building your
own apps. Even if you're sold on developing a native Android app for Google TV, these
resources have a wealth of information for developers that you absolutely shouldn't overlook.
So... >> KURZKE: Cool. So, now I would like to share
with you some of the, you know, best practices for developing Android apps and just some
of the lessons we have learned. And also for people who are not familiar with Android I'm
actually very excited to see so many of you already are Android developers, so I could
go over some of it a little faster. But in order to develop Android apps, all the tools
you need are available to you for free. You can download them. For Google TV since it's
just another compatible Android platform, technically you can use the same tools and
really the difference is you're developing for a large screen device. What you can do
with Android is you can have different resources for different screen sizes or different resolutions.
So, in this example here I've just created a regular Android project and I've created
resource folders for HDPI and XHDPI resolution. And I'll explain a little more about this
later why those two. But if you are familiar with Android, you know, resources can be things
like icons, can be graphics or it can be layouts. So here is just another screenshot showing
you some of the dialogues. And the regular Android SDK already gives you the opportunity
to create qualifiers for high density large screens. And if you want to, you can add No
Touch to it just to explicitly call out that this is for devices which don't have a touch
screen today. The other feature in the Android SDK that you can use is you can create custom
layouts. Typically, when you install an off-the-shelf Android SDK today, it will come with predefined
layouts or predefined screen sizes for the layout editor for major like phone resolutions.
So we have the 480 by 800 for the Nexus class phones, or we have the 1200--I think it's
1280 by 800 for tablets. If you want to develop for Google TV, you would have to create your
own custom layout size for the screen resolution of the Google TV. So, the way you would do
this is you just click on the little custom icon and you can give it any name you want.
You can call it Google TV, whatever. And you would configure it with the resolutions that
you expect your TV to have. And I'll share a little bit of information with you. So,
the typical TV resolution that we find is 213 DPIs. So, that's a good value to use.
And I just called this the 720p resolution and I defined the screen sizes as a 1280 by
720 screen size, high density. Of course, it's a landscape device. So, that's one other
thing to keep in mind when you develop applications. TVs typically only come in one orientation.
It's pretty hard to reorient the TV. It's easier for yourself to lie on the couch. That
doesn't still make it a portrait. So, that's just one way to define the layout editor.
And here's the reason I don't work in the UX team. So, I just used all this and I created
a mock for Google TV application. So, I used the parameters that I've just defined to create
a layout. And you can use the Android layout editor in Eclipse and you can just drag and
drop very simple UIs. I've just taken a couple of buttons, a couple of icons and a few checkboxes
and stuff and put it together on a UI, probably not the best work I've ever done but it brings
across the point you can use the layout editor with those custom layouts to create layouts
for large screens. So, why would you go through all this hassle? You can also create an emulator
today. So you can use the Android SDK Emulator. And as we said earlier today, Google TV runs
on API level seven, so that's Android 2.1 Eclair. So if you want to be compatible with
today's version, you can just create an emulator based on this and you can set the screen size
to 1280 by 720 which is a reasonable value for 720p and you set again the LCD density
to 213 and pick your value for heap size. What you can do with this is you can start
an emulator and you can actually run your app on an emulator. Here's an example, an
app running on a desktop emulator. It does still show the phone menu bar on top if you
display the menu--or the top icon bar. Just ignore that for now. Why would you want to
do that? Well, the reason is you can test your app. You can test it up out on a large
screen, see if your layout scale, see if your resources scale. It's just an exercise to
sort of get ahead of the curve and get your app ready for, you know, maybe in the future.
This is not a replacement for running it on on a real TV. But I think for a developer,
what I found is going through for example this exercise with some of our partners, it's--sometimes
Android applications they look really nice on a large screen. They basically just work
if you do all the right things. You use relative layout. You use scalable nine-patch images.
But running your app on a large screen emulator, it will point out typically a few hard-coded
assumptions that you may have made or it may point out some of the bugs. So I think it's
a good practice, especially now that we have tablets as well. Just try and run your app
on a large screen. See what it looks like and it will help you, I think, create better
Android applications all the way around. So, you may wonder how we came up with some of
the constants that I mentioned, so you may have picked up--I used large screen. The first
question that everybody has is, if you're familiar with Android, actually, this phone
here, the Nexus S, is considered a large screen, how come my TV is not bigger than a Nexus
S? It's very simple; if you looked at it from a 10-foot distance, you'll notice that the
TV actually appears fairly smaller in the distance so we just took the large screen,
sort of--we believe that a TV should have about as much information on it as your cell
phone application, as your mobile application. And the other constant that I came up withóthe
resolution, so I used extra high density or high density depending on 720 or 10 ATP, but
if you walk up close to a TV and you really stand, like, as close to your TV as you would
stand to your tablet or to your phone, you notice the physical resolution on the screen
is actually about 50 pixels per inch or you can just do the math. And how do we get from
50 pixels to 200 pixels? It's again the distance. The other advantage of this is if we choose
the extra high density, this will scale all the Android DPs, the display independent pixels
or resolution independent pixels. So if you're familiar with the way how Android handles
DPs and you do the math, you will realize that your apps scale approximately twice as
much. So if you have extra high density is 320 DPs, as compared to a 160 DPs for normal
density. So if you just have an Android app and you don't do anything and you just run
it on TV and you use DPs the way we recommend in the documentation, then your app will scale
all the assets twice as much and you will actually look reasonably well. So this is
really to make it easier for developers. As Paul said earlier, to create one app that
runs across all devices. And I've actually--for exercise purposes, created a few apps that
look really well on different displays. So you can create really one layout that scales
nicely from a regular phone size through a tablet all the way through a TV. Another bit
of TV technology that I want to point is, a few of you are probably old enough to remember
that TVs used to have television CRTs with, like, scan lines and electron beams and whole
lot of physics and stuff. And it's actually really cool technology that's unfortunately,
still haunting us today. So the concept of scan lines is still there and if you look
at 1080p resolution today, so the word 1080p, it's actually the 1,080 scan lines that you
would have on an electron--on a good old-fashioned CRT. And that is really the physical addressable
screen size that is available in TV. The other thing that you may notice next time when you
watch, like, your favorite news channel or your favorite sports channel, you'll probably
notice that they never put something that's really super important all the way in the
corners because, actually, you never know how much shows up on your consumer's television.
So if you look at the TV specs, they actually specify about a five to ten percent safety
margin around the edge because back in the days when it was electron beams zipping across
CRTs, you never knew if they were actually calibrated properly. So TV broadcasters typically
show the relevant content, game scores or stock tickers, they show stuff that's really
important about, you know, a couple of pixels off the edge. And just to be on the safe side,
the recommendation is keep about 10% so you're pretty safe that all the TV manufactures will
actually work with this. So what this means for a developer is--I said early, we have
two main resolutions, we have 1080p and we have 720p but when you create an app, you
can be pretty sure that it will not have the full screen resolution running on your TV.
And that may be mechanical issues or mechanical reasons like your decorative aluminum bezel
may actually cover up a couple of pixels on each side. When you set up a Google TV, we
calibrate to the visible area on your screen. And when you run an Android app and you do,
for example, a canvas that's full screen and you donít get width, you may end up with
fewer pixels. And so the numbers that included here, this is actually the worst-case scenario
so this is the 10% margin on each side so that's really the minimum but also don't go
to the minimum. So my advice would really be expect the worst but have relative layouts
that then float and use right aligned, left aligned, top, bottom and make your UI look
pretty that way. And I think the best practices for Android developers to really create a
great app that really stands out from the rest is really using the dynamic layouts;
think about the overscan, test with the minimum resolution, test with the maximum resolution.
One concept that I know we have been talking about almost as long as Android is around
is 9-patch images. And especially designing for TV, 9-patches get even more important.
Because if you think about it, basically the amount of memory that you need for your onscreen
assets, for things like buttons, really grows with the square basically of your resolution
because you need X and Y, if you double it, you have four times as much memory for your
little icons. So using 9-patches to do the scaling for you is really an elegant way to
do it. And, especially, I really encourage developers to not put, like, pre-rendered
text on their buttons or something but use the Android mechanisms to just bring the 9-patch
for the button background and then put a text over it.
>> SAXMAN: And so, great internationalization as well.
>> KURZKE: Definitely, yeah. I mean, it--the way--what I found is running Android apps,
just random Android apps on Google TV, it really shows which developers were sort of
keeping with the best practices, going the extra mile, keeping it really dynamic layout.
And I think it really helps you find the couple of bugs in your app. And keep in mind, your
user, a 10-foot design--you are creating apps for somebody who just came home from work
and really just wants to kick back in their recliner and watch TV and interact with your
app maybe. >> SAXMAN: So Google TV apps actually come
in lots of different shapes and sizes and how you design your app ultimately depends
on the use cases that you're targeting. You can certainly have one app for multiple platforms
which is, by far, the hardest to implement but really the easiest to maintain. Or you
could build separate apps actually tailored to each of your use cases which are, you know,
for phones, tablets, and Google TVs. This will allow you to target different but related
use cases by each app and take full advantage of the higher resolutions of Google TV. This
is primarily true for full screen assets on Google TV since it has a much higher resolution.
The third option is to build a companion app that targets the same use cases in existing
app but is designed specifically for the Google TV experience.
>> KURZKE: Yeah. I think, speaking of the companion app, one thing to keep in mind also
is, the TV screen is usually a shared screen in your living room. Your family is watching;
maybe on Sunday, you have your buddies over and they're going to watch the TV. So, as
an app developer, keep that in mind, what that sometimes means. So having, for example,
my tweet stream on TV, yeah, sure, that's cool. I mean that's public information. But
having my personal inbox show up in notification every time somebody sends me a tweet, you
may not want that when your buddies come over on Sunday.
>> SAXMAN: So a couple of quick tips on, actually, conquering the TV. If you really want to get
the greatest bang for your buck when building your Google TV app, be sure to reuse as much
of existing Android code as possible. And once you've identified what code you can reuse,
focus on user interface specifically, building specialized user interfaces only where needed.
Really, the idea here is reduce, reuse, recycle, and only redesign where necessary.
>> KURZKE: So here's a couple examples of TV apps and so this is the mobile app from
CNBC and what we did is, when created the TV app for CNBC, we worked with the team and
we looked at the mobile app, and we looked at the Website and we found that the TV app
should probably be different from both experiences. On the mobile phone you want to have your
stock portfolio, you want to have quick access to information. The website is really to go
and find a lot more out--find background information. So for the TV app, the team actually brought
in some of the interactive content--or not interact--some of the visual content from
their CNBC channel and they added the broadcast clips to the stock information. So they reused
a lot of their Android code from the mobile phone so the whole portfolio management, all
the app logic is mainly reused from the mobile app. And they also added the broadcast information.
So I worked with the CNBC team over the course of last year to create the app that's on your
Google TV today. And what's actually really exciting is they did almost of the opposite
of what you would be able to do. So they used the mobile--they used the TV experience and
then actually optimized this to the table experience. I saw they just--I think a couple
of days ago, launched their tablet app, it looks very much like the TV app. And so, I
think, having the large screen Android devices now is really an interesting opportunity to
create apps that work on larger screen and maybe bring some more interactive visual content.
Here is another app which you maybe familiar with. It's the Pandora Internet Radio App.
So it's--this is the mobile app, so they had a very clean simple user interface, showing
the cover art, showing the artist's information, and giving you a very quick, you know, thumbs-up,
thumbs-down sort of interface. They were actually able to reuse most of their layout and most
of their code for the TV app. So this just goes to show, if you have a user experience
that make sense in mobile and make sense on the TV, you can virtually use most of your
app just as is. What they also did to optimize is they used the key codes for our remote
control, so on the remote you can pause, forward, play. And so they just used all those key
codes to make it much easier to interact with the music player. So you don't have to use
the mouse cursor, and like go over and click on buttons or use the 5-way navigation. So
those are just two examples that show how you can take a mobile app and actually reuse
a lot of your work and transform it into a TV experience.
>> SAXMAN: Okay. So before we wrap up there's a couple more tips that we want to pass on
to you guys before you start building your Google TV app. Christian just mentioned the
5-way navigation which is actually accomplished via the D-Pad. Google TV devices have full
QWERTY keyboards and often have track pads or some other form of touch-based navigation.
However, the primary mode of user interaction with Google TV is 5-way or the--or D-Pad,
which is Directional Pad. When testing your apps, keep your thumb on the D-Pad and not
the track pad, so that you can assure that users are able to navigate quickly and easily
in your app. Same is true when using the emulator, focus on your keyboard and the--and your directional
keys as opposed to using your mouse. Especially keep D-Pad Navigation in mind when you're
designing your layouts. What we see here is a fairly standard app interface which includes
the tab bar for changing between content, a vertical list view in the center, and a
button down at the bottom there. This interface is relatively common on mobile devices and
tablets since and is very compact and easy to control with the tips of one's fingers.
However, things get more tricky if the user navigates this interface using their D-Pad.
The issue is, is that if the user wants to go from the tab to the button they actually
have to scroll through the entire list, in the center there. So what we recommend in
this situation, is to actually re-orient your layout. Here, we've actually taken the tabs
and the button, moved them to the left and right of the vertically scrolling area. The
user can actually use their--the Directional Pad up and down to navigate the tabs, up and
down to navigate within the vertical scrolling list, and you know, left and right to scroll
between those three controls, so. It's still a clean compact interface, but now it's very
easy to navigate using D-Pad. >> KURZKE: Also, the one thing to keep in
mind is--what's very apparent is a lot of apps typically are--when they are designed
for portrait mode, they have the--they'll use a paradigm where you have list views and
then buttons in the bottom. When you have a list view that's about four-feet wide, it
gets really hard to navigate. So if you have like a check box on one side and the name
is on the other side, keeping list views narrow and having multiple columns is usually a much
better user experience in general. So with that, let's see, summary. We've pointed out,
there is a huge opportunity to create applications for TV, and there is a large variety of devices
to target now, so especially for Android developers, I mean, we're basically adding new devices
and we're adding new form factors as fast as we can. I mean, we just gave you tablets.
Now there is TV, so there is--there is a huge opportunity I think to leverage your Android
skills. The different screen sizes are definitely giving you a whole new opportunity to create
new applications. Suddenly you have, basically, a four square-foot or so display in the living
room that you can work on, or you have a whole home theatre. And the good news is Android
already has a lot of built-in mechanisms to support all these. So the Android APIs and
the Android, like all the mechanisms and the best practices allow you to create apps for
phones, for tablets, for TVs and who knows what's next. And then also, you can create
apps that easily support multiple platform versions. So as Android developers, you're
probably already familiar with all the different ways how you can create apps that run well
across different apps. So I would like to do the--one little Steve Jobs thing. But wait,
I have one more thing for you. So actually, I'm really thankful that you all stayed to
the end. So what I want to share for--share with you is, we don't have this here today,
but starting tomorrow you can go to the Google TV booth, and we have a little Sandbox on
the third floor, and pick up a flyer. So we have this program that we call the Google
TV Fishtank and what we--what we want is if you submit your ideas and if you give us great
ideas that you would want to implement on Google TV, you can sign-up and we will look
at the submissions and we will select recipients on a--on a rolling basis to receive developer
devices. So those developer devices will be Google TV devices enabled with ADB, and you
as a developer can run your own apps and you don't have to just run them on the desktop
emulator. I must say it's a really cool experience to see your app the first time on your own
TV at home. So come back tomorrow to the Google TV Sandbox on the third floor, pick-up a flyer
and we'll get you set-up with a really cool development environment. All right. One question.
Can you please use the microphone? >> Sure. Hypothetically, say that you're from
Sweden, would it still possible to enroll in this program?
>> KURZKE: You would have to check with our guys. I believe right now we're focusing mainly
on the U.S. but I think if you have an incredibly compelling application, I encourage you to
talk with our business guys about that. >> I'll think about that. Okay, thank you.
>> KURZKE: Yes, please. >> If your apps use native code?
>> KURZKE: Yes. Sorry. So right now, since Google TV--it also runs on Intel processors
we don't support native code currently. >> Is that in the works to add that to the
emulator? >> KURZKE: We're super-focused getting this
out, but I don't have a timeline on that. [INDISTINCT]
>> Question about--is the Chrome browser we see in the Google TV, so what type of difference
between the Chrome browser we see in Google TV versus the Chrome browser running on a
standard PC, specially on the Chrome apps store part?
>> KURZKE: I don't know the answer about the Chrome apps store, but it is very much a Linux-based
Chrome browser. So by the way, if all of you have more questions we have office hours and
a Sandbox upstairs where we have engineers and we have actually two units that you can
see some demos on. So that's on the second floor, kind of like this direction roughly.
So and I'll be hanging out there for a while and I think Paul is going to be there most
of the day too. >> SAXMAN: A yeah. We got a couple of more
minutes. >> KURZKE: Yes.
>> SAXMAN: Go ahead. >> Okay. I'm coming from a YouTube partner
channel-based background, and my question to you guys is are you planning on developing
additional YouTube interfaces for Google TV beyond what clearly looks like a very YouTube
beneficial search type--search type box? >> KURZKE: So what Google TV already does
is we integrate with our video site map search, so if you have video site maps for your content
on your site, that will definitely be surfaced. Beyond that, I believe we have the YouTube
Leanback experience and you can also download some of the CSS, and some of the samples to
get started. So if you as a partner want to create optimized sites, so right now, we have--in
the Spotlight, we have for example, a VEVO application which uses some of the YouTube
posted content, but adds additional just cover information and stuff to it. So I think, if
you want to get really creative you could create--you could use wrappers around the
YouTube experience. >> Thanks.
>> Hi. Can you hear me? So I actually had a one good question and a bad one.
>> KURZKE: Sure. >> The good one is, how about identity? I
mean, one of the big things is, you, know TV is shared, but all the other devices you're
talking about... >> KURZKE: Right.
>> ...are individualized. Are you going to do anything to allow multiple users, et cetera,
on the TV side? >> KURZKE: So currently we don't have that
yet. And I think Android; in general, it's more of a single user experience.
>> Yes. Yes. >> KURZKE: So this is great feedback, and
we know this is something we need to work on, so yes.
>> So the bad question now is, all the stuff I'm hearing is still kind of treating the
applications as a secondarily app that's overlaid on your content.
>> KURZKE: Yes. >> But are you actually, at some point, going
to start allowing context to be shared between them, so you can actually bring up apps related
to what you're watching without the user being in the mix?
>> KURZKE: I think that is definitely a--I think that's a very valid use case. What we
want to do in the future is have APIs specific for TVs. We're not there yet, so stay tuned.
>> I was wondering what would happen if you have an Android app that uses WebKit?
>> KURZKE: WebKit runs on Google TV today. So you can just open up a Web view. We've
actually seen a couple of the developers do that for content, so that would work.
>> It doesn't have to be rewritten because the primary browser is Chrome?
>> KURZKE: No. >> Okay. Okay.
>> SAXMAN: Not at all. We have the Web view still works like [INDISTINCT].
>> KURZKE: Okay. Okay. Thanks everyone.