migrating to android tv

54
Migrating to Android TV Design tips for Android TV CodeMash 2015 David Carver Gplus: +David Carver Twitter: @kingargyle https://github.com/NineWorlds/serenity-android

Upload: david-carver

Post on 15-Jul-2015

888 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Migrating to Android TV

Migrating to Android TV

Design tips for Android TV

CodeMash 2015David Carver

Gplus: +David CarverTwitter: @kingargyle

https://github.com/NineWorlds/serenity-android

Page 2: Migrating to Android TV

What constitutes Android TV

Internet Enabled Devices running Android 3.2 or Higher.

2nd Screen/Remote Control/Game Pad support

Ment to be used primarily with a TV.

Page 3: Migrating to Android TV

Google TV Boxes

Page 4: Migrating to Android TV

Android TV

Page 5: Migrating to Android TV

Televisions

Page 6: Migrating to Android TV

Other Android Based Devices

Page 7: Migrating to Android TV

Why Design for TV???

Page 8: Migrating to Android TV

I had an Itch that Needed Scratched

● Existing TV UIs were frustrating to use with a Remote● Wanted to learn Android Development and seemed like a good thing to do at the time.● Tired of TV Apps getting second class treatment.● Apps designed for TV don't need to SUCK!!

Page 9: Migrating to Android TV

Android apps running on a TV sucked because Developers let

them suck!

Page 10: Migrating to Android TV

Myth: A Tablet App will work fine on a TV!

The truth...Maybe

An app designed for Landscape mode on a tablet may work, but the user experience will probably

suffer.

Page 11: Migrating to Android TV

Failure Points

● The app may run, but will probably provide a frustrating user experience.

● These apps are designed for Touch and typically do not take into account other ways to interact with the app.

● Using a Mouse is frustrating on the TV. If the user has to use the mouse pointer, it is a design failure.

● Need to design with the TV environment or Accessibility in mind.

Page 12: Migrating to Android TV

Why not just Chromecast Everything?

● You need a Phone/Tablet/PC that supports it.● Not everybody likes having to use a

Phone/Tablet as a second screen device.● Not everybody has a supported Chromecast

device.● Some prefer using a Remote. It's familiar.● Limited to very basic playback or interaction.

Not designed for more complicated applications and interactions.

Page 13: Migrating to Android TV

Guidelines?We don't need no stinking

guidelines!

Page 14: Migrating to Android TV
Page 15: Migrating to Android TV

Android TV / Fire TV / OUYA Design Guidelines

● Design for D-PAD not for Touch interface● Avoid the use of the Mouse or Touchpad.● Emphasize obvious items that can be selected

or interacted with.● Back Button should exit or take back to

previous screen.● Give visual indicators when more information

is provided off screen (i.e. scrolling required)● Compensate for Overscan on TVs

Page 16: Migrating to Android TV

Visually Appealing

● Design with Visual Appeal– Apps are going to be in people's living rooms.

– TVs are ment to be visual displays

– You want the wow factor to help bring people back.

– However it needs to be simple and functional.

● Limit the number of clicks that a person has to get to anything on the screen.– The fewer the clicks the better.

Page 17: Migrating to Android TV

Visually Appealing

● Prefer darker themes.– Lighter themes tend to be to bright and harder to

read

– TV Brightness varies greatly, and depends on room environments.

● Leanback or Holo themes and color schemes work well.

Page 18: Migrating to Android TV

Android TV Leanback Library

Page 19: Migrating to Android TV

Patterns and Anti Patterns

Page 20: Migrating to Android TV

Zones

Design with Zones in mind.

Page 21: Migrating to Android TV

Anti Pattern

D-Pad Navigation can't skip zones. The long scrolling list in the center has to be navigated through to get to the bottom zone.

Page 22: Migrating to Android TV

You can make this Work

Limit the center content to Detail information or focusable items that don't scroll. This allows navigation through the zone quickly.

Page 23: Migrating to Android TV

Google Recommends Vertical Zones

Page 24: Migrating to Android TV

Create Quick Navigation Keys● Provide ways to Navigate quickly through long

lists.● Provide ways to get back to the top of a list

quickly.● To get to the bottom quickly.● Break Long Lists into separate screens.● Provide Filtering/Search to narrow scope of

items.● Devices may have Bluethooth enabled

keyboards or remotes with keybads connected.

Page 25: Migrating to Android TV

Remember to Focus

Page 26: Migrating to Android TV

Focus

Focus will be the most important and time consuming aspect of your app. Getting

Focus and the navigation around on screen focusable items is just as important if not more important than the look of the app.

Android TV Leanback support library provides this for free in many cases.

Page 27: Migrating to Android TV

Avoid the Card Design with Embeddable Clickable Items.

Page 28: Migrating to Android TV

Avoid the Embedded Clickable Item

If you do this, make sure a person can navigate to it! There is no touch screen, and if they have to resort to a mouse pointer you have failed in your design and user experience.

Page 29: Migrating to Android TV

Prefer Android TV Leanback Cards

Page 30: Migrating to Android TV

Horizontal Zone Pattern

Page 31: Migrating to Android TV

Horizontal 2 Zone Pattern

Page 32: Migrating to Android TV

Horizontal Two Zone, Horizontal Grid Scroll View

Page 33: Migrating to Android TV

Horizontal Grid Views Android TV Leanback

Page 34: Migrating to Android TV

Horizontal 3 Zone Pattern

Page 35: Migrating to Android TV

Horizontal 3 Zone. Zone 2 and 3 are Side Scrolling

Page 36: Migrating to Android TV

Avoid Content that Scrolls Vertically in Zone 2!

In general avoid vertical scrolling with horizontal layouts.

Page 37: Migrating to Android TV

Horizontal Zone PatternWith Sliding Menu

Page 38: Migrating to Android TV

Horizontal 3 Zone with Sliding Menu

Page 39: Migrating to Android TV

Text and Icons

● Provide large readable fonts.● Screen space is at a premium. Even at

1920x1080p. – User is sitting about 10ft away so need to make

text and fonts legible from that distance.

– Set up your Google TV development device from that distance.

Page 40: Migrating to Android TV

General UI Consideration● TVs are always at least layout-large and

layout-landscape-notouch resources.● Drawables are HDPI resolution or higher.● TV's are always Landscape.● Darker themes are easier to view than lighter.● TV Apps should be Full Screen Apps. The

app will be used on the largest most popular device in the house. Give it that special treatment.

● Keep your design consistent. Stick with either Vertical or Horizontal pattern throughout the app. Easier for user to learn. If changing the pattern make it a user choice to do so (i.e. multiple layouts)

Page 41: Migrating to Android TV

Android TV Leanback Features

● Support Library with Android Lollipop designed for TVs.– BrowseFragment

– SearchFragment

– DetailsFragment

– PlaybackOverlayFragment

● Provides support back to API 17 Jelly Bean devices.

● Layouts are optimized for TVs by providing a 10% margin on all sides. TVs have overscan.

Page 42: Migrating to Android TV

Android TV Leanback Features

● Contribute Recommendations to the Android TV Leanback Launcher via a Service.

● Provide in App Voice Search● Contribute Global Search Results via a

Content Provider● Model – View – Presenter

– ObjectAdapter

– Presenter

– RecycleView

– Fragments responsible for Click Events

Page 43: Migrating to Android TV

AndroidManifest.xml

● RECEIVE_BOOT_COMPLETED – if your app provides recommendations.

● RECORD_AUDIO – for in App Voice Search● TOUCHSCREEN – false – signifies that this

app is designed to run devices that don't require a touch screen.

Page 44: Migrating to Android TV

Leanback Launcher

Necessary otherwise the app will not show up on the Android TV Launcher

Page 45: Migrating to Android TV

Leanback Theme

● Activities that support Leanback must extend from the Theme.Leanback theme. This helps optimize the activity and layouts for the TV.

Page 46: Migrating to Android TV

Leanback Recommendations

● Intent Service that is scheduled to provide Recommendations to the Leanback Launcher

● Launched after Boot is completed.● Uses Notification Manager ● Content Providers for background images for

cards

Page 47: Migrating to Android TV

Voice Search

● Extend SearchFragment● Create a CardPresenter● Create a Layout for Search that includes the

custom search fragment.● Override onSearchRequested – the built in

Search provider is disabled in Android TV devices.

Page 48: Migrating to Android TV

Dog Food your App

● Get an Android Smart TV, Amazon Fire TV, or OUYA device and test your app there. – Screen resolutions will vary due to Overscan

● Use your own App. If you get frustrated, others will.

● Test both for Touch and for various controller inputs. Remote, Game Controller, Voice– Not all Remotes are created equal

– Not all Game Controllers are mapped the same.

Page 49: Migrating to Android TV

Remember to Focus android:focusable="true" android:focusableInTouchMode="true" android:descendantFocusability="afterDescendants" android:nextFocusDown="@+id/mainGalleryMenu" android:nextFocusUp="@+id/menu_button" android:nextFocusRight="@+id/mainGalleryMenu" android:nextFocusLeft="@+id/mainGalleryMenu">

● View.requestFocus()● View.requestFocusFromTouch()● View.requestFocus(int direction)● Remember to specifically set focus when hiding

and showing off screen views (i.e Sliding Menu Drawers)

Page 50: Migrating to Android TV

KeyCode Events

● Android supports a wide variety of Media Key Codes– Play, Skip Forward, Pause, Stop, Skip Back

● Channel Up and Channel Down make good Page Up and Page Down alternatives for quick navigation.

● Remember many Android TVs do have keyboards in the remote. Provide keyboard short cuts for your app.

Page 51: Migrating to Android TV

Context Menus● Use Context Menus to provide context

sensitive information.– Don't use the Action Bar especially with Grid or

Scrollable contentl. Prefer LeftNav pattern.

– Beware of the dreaded onItemLongClick bug with Remotes and Game Controllers. It'll fire both Click and Long Click events.

● Give option to map Menu key to context menu● Provide alternatives to bring up context menu

● Don't embed your context menus into clickable drop down menus in cards or list items!!!– Users need to reach for mouse or touch pad.

Automatic failure at this point.

Page 52: Migrating to Android TV

What About Testing???

Come to the talk on FridayUnit Testing Android without Going Bald!

You can use existing Testing Tools to Test your Android TV applications.

Page 53: Migrating to Android TV

Code Examples

How do you do it???

Page 54: Migrating to Android TV

Android TV Leanback Resources

● https://github.com/googlesamples/androidtv-leanback – sample application that implements most Android TV Leanback functionality.

● https://developer.android.com/training/tv/start/index.html – Examples and guidelines for implementing Recommendations and In App Search.

● https://www.youtube.com/watch?v=72K1VhjoL98 – DevBytes Using Android TV Leanback