Second-Screen
  Support in
 Android 4.2
    Copyright © 2013 CommonsWare, LLC
Who's On Second?
●   Auxiliary screen
●   Inconsistently available
●   Display-only (no touchscreen)
●   Not:
    –   Simply being on a TV (think OUYA)
    –   Devices with dual primary displays (SONY Tablet
        P)
                      Copyright © 2013 CommonsWare, LLC
The Wayback Machine
●   Android 1.0 through 2.3
    –   Generally nothing
    –   Sporadic device-specific support (e.g., HTC DROID
        Incredible and composite output)
●   Android 3.0 through 4.1
    –   Mirroring
    –   Some limited developer control (video players)
●   Android 4.2: Developer Control
                        Copyright © 2013 CommonsWare, LLC
Getting To Second
●   HDMI
●   Mobile High-Definition Link (MHL)
●   Proprietary Cable
●   Miracast
    –   WifiDirect-based display protocol
    –   “Samsung All-Share Cast” on select Galaxy devices
    –   Added to core OS in Android 4.2, seen on Nexus 4

                        Copyright © 2013 CommonsWare, LLC
Not All Screens Are Created Equal
●   Key Differences
    –   Size (720p, 1080p, etc.)
    –   Density (tvdpi, hdpi, etc.)
●   Net: Different Context for Different Display
    –   Inflate layouts, load resources, etc. using proper
        Context to get the right ones for the targeted
        display

                       Copyright © 2013 CommonsWare, LLC
I Can Haz Second Screen?
●   DisplayManager
    –   System service (DISPLAY_SERVICE)
    –   getDisplays() (all or those in a category, like
        DISPLAY_CATEGORY_PRESENTATION)
    –   registerDisplayListener() to find out
        about changes in mix of displays
    –   New to API Level 17


                      Copyright © 2013 CommonsWare, LLC
I Can Haz Second Screen?
●   MediaRouter
    –   System service (MEDIA_ROUTER_SERVICE)
    –   More general: find preferred “route” for audio or
        video
    –   getSelectedRoute() to find the route to be
        used right now (ROUTE_TYPE_LIVE_VIDEO)
    –   addCallback() to find out route changes
    –   Added in API Level 16
                       Copyright © 2013 CommonsWare, LLC
Presentation: Getting Meta
●   Presentation
    –   Subclass of Dialog, added in API Level 17
    –   Override onCreate(), call
        setContentView()
    –   Supplies Context suitable for use with
        designated Display
    –   When displayed using show(), appears on
        designated Display
                      Copyright © 2013 CommonsWare, LLC
No, I Can Haz Second Screen?
●   Testing Options
    –   Actual “second screen”
    –   Simulated secondary display
         ●   Developer Options → Simulate secondary displays
         ●   Works well with hardware, less so with x86 emulator




                          Copyright © 2013 CommonsWare, LLC
Copyright © 2013 CommonsWare, LLC
Copyright © 2013 CommonsWare, LLC
Ack! Too Many Options!
●   Must Have Second Screen
    –   Presentation-specific app
●   Optional, Dedicated UX
    –   Game using second screen for primary output,
        device screen for control surface and secondary
        output
●   Optional, Using Fragments
    –   Push stuff to second screen or show “inline”
                      Copyright © 2013 CommonsWare, LLC
Fragments of a Presentation
●   Good News!
    –   Presentation extends Dialog, so
        DialogFragment works
    –   DialogFragment supports either show-as-
        dialog or show-as-regular-fragment
●   Bad News!
    –   Since different Contexts, cannot use the same
        DialogFragment instance for each
                      Copyright © 2013 CommonsWare, LLC
Copyright © 2013 CommonsWare, LLC
A Modicum of Control, Please
●   Second Screen: Not a Touchscreen
    –   Whatever shows on second screen is driven and
        controlled by what is on the primary screen
●   Example: Video Player
    –   Second screen shows the video playback
    –   Primary screen has play/pause, fast-forward,
        rewind, SeekBar, IMDB content, chat screen, etc.

                      Copyright © 2013 CommonsWare, LLC
A Modicum of Control, Please
●   Separate Fragments/Views
    –   One for what is shown
    –   One for controlling what is shown
●   Mirroring Content
    –   Same fragment/view, shown on both displays,
        controlled by primary screen




                        Copyright © 2013 CommonsWare, LLC
Present Imperfect
●   Activity-Based
    –   Presentation extends Dialog, must have an
        activity to show a Dialog
    –   Cannot have second screen driven by service,
        with primary screen running something
        independent
    –   Samsung, multi-window apps, and second
        screens?

                      Copyright © 2013 CommonsWare, LLC
Present Imperfect
●   Activity-Based
    –   Must dismiss() Presentation as part of
        switching to a new activity → flicker
         ●   Briefly shows mirroring before new Presentation
             appears
    –   Similar flicker if you try switching from one
        Presentation to another


                         Copyright © 2013 CommonsWare, LLC
Odd Possibilities
●   Exercise Equipment
    –   Equipment screen serves as external display for
        Android device
●   Smart Watches
    –   Miracast to monitors, TVs, etc., with watch face
        serving as control surface



                      Copyright © 2013 CommonsWare, LLC
Predictions, Sure To Go Wrong
●   Demise of Google TV
    –   Greater emphasis on Miracast and kin
    –   Parts cost cheaper for TVs
●   Wireless Display Standards Fight
    –   Apple AirPlay Mirroring, WiDi, WirelessHD, etc.
●   Manufacturers Pushing the Envelope
    –   Samsung and a multi-window extension
                      Copyright © 2013 CommonsWare, LLC
Q&A

Copyright © 2013 CommonsWare, LLC

Second-Screen Support in Android 4.2

  • 1.
    Second-Screen Supportin Android 4.2 Copyright © 2013 CommonsWare, LLC
  • 2.
    Who's On Second? ● Auxiliary screen ● Inconsistently available ● Display-only (no touchscreen) ● Not: – Simply being on a TV (think OUYA) – Devices with dual primary displays (SONY Tablet P) Copyright © 2013 CommonsWare, LLC
  • 3.
    The Wayback Machine ● Android 1.0 through 2.3 – Generally nothing – Sporadic device-specific support (e.g., HTC DROID Incredible and composite output) ● Android 3.0 through 4.1 – Mirroring – Some limited developer control (video players) ● Android 4.2: Developer Control Copyright © 2013 CommonsWare, LLC
  • 4.
    Getting To Second ● HDMI ● Mobile High-Definition Link (MHL) ● Proprietary Cable ● Miracast – WifiDirect-based display protocol – “Samsung All-Share Cast” on select Galaxy devices – Added to core OS in Android 4.2, seen on Nexus 4 Copyright © 2013 CommonsWare, LLC
  • 5.
    Not All ScreensAre Created Equal ● Key Differences – Size (720p, 1080p, etc.) – Density (tvdpi, hdpi, etc.) ● Net: Different Context for Different Display – Inflate layouts, load resources, etc. using proper Context to get the right ones for the targeted display Copyright © 2013 CommonsWare, LLC
  • 6.
    I Can HazSecond Screen? ● DisplayManager – System service (DISPLAY_SERVICE) – getDisplays() (all or those in a category, like DISPLAY_CATEGORY_PRESENTATION) – registerDisplayListener() to find out about changes in mix of displays – New to API Level 17 Copyright © 2013 CommonsWare, LLC
  • 7.
    I Can HazSecond Screen? ● MediaRouter – System service (MEDIA_ROUTER_SERVICE) – More general: find preferred “route” for audio or video – getSelectedRoute() to find the route to be used right now (ROUTE_TYPE_LIVE_VIDEO) – addCallback() to find out route changes – Added in API Level 16 Copyright © 2013 CommonsWare, LLC
  • 8.
    Presentation: Getting Meta ● Presentation – Subclass of Dialog, added in API Level 17 – Override onCreate(), call setContentView() – Supplies Context suitable for use with designated Display – When displayed using show(), appears on designated Display Copyright © 2013 CommonsWare, LLC
  • 9.
    No, I CanHaz Second Screen? ● Testing Options – Actual “second screen” – Simulated secondary display ● Developer Options → Simulate secondary displays ● Works well with hardware, less so with x86 emulator Copyright © 2013 CommonsWare, LLC
  • 10.
    Copyright © 2013CommonsWare, LLC
  • 11.
    Copyright © 2013CommonsWare, LLC
  • 12.
    Ack! Too ManyOptions! ● Must Have Second Screen – Presentation-specific app ● Optional, Dedicated UX – Game using second screen for primary output, device screen for control surface and secondary output ● Optional, Using Fragments – Push stuff to second screen or show “inline” Copyright © 2013 CommonsWare, LLC
  • 13.
    Fragments of aPresentation ● Good News! – Presentation extends Dialog, so DialogFragment works – DialogFragment supports either show-as- dialog or show-as-regular-fragment ● Bad News! – Since different Contexts, cannot use the same DialogFragment instance for each Copyright © 2013 CommonsWare, LLC
  • 14.
    Copyright © 2013CommonsWare, LLC
  • 15.
    A Modicum ofControl, Please ● Second Screen: Not a Touchscreen – Whatever shows on second screen is driven and controlled by what is on the primary screen ● Example: Video Player – Second screen shows the video playback – Primary screen has play/pause, fast-forward, rewind, SeekBar, IMDB content, chat screen, etc. Copyright © 2013 CommonsWare, LLC
  • 16.
    A Modicum ofControl, Please ● Separate Fragments/Views – One for what is shown – One for controlling what is shown ● Mirroring Content – Same fragment/view, shown on both displays, controlled by primary screen Copyright © 2013 CommonsWare, LLC
  • 17.
    Present Imperfect ● Activity-Based – Presentation extends Dialog, must have an activity to show a Dialog – Cannot have second screen driven by service, with primary screen running something independent – Samsung, multi-window apps, and second screens? Copyright © 2013 CommonsWare, LLC
  • 18.
    Present Imperfect ● Activity-Based – Must dismiss() Presentation as part of switching to a new activity → flicker ● Briefly shows mirroring before new Presentation appears – Similar flicker if you try switching from one Presentation to another Copyright © 2013 CommonsWare, LLC
  • 19.
    Odd Possibilities ● Exercise Equipment – Equipment screen serves as external display for Android device ● Smart Watches – Miracast to monitors, TVs, etc., with watch face serving as control surface Copyright © 2013 CommonsWare, LLC
  • 20.
    Predictions, Sure ToGo Wrong ● Demise of Google TV – Greater emphasis on Miracast and kin – Parts cost cheaper for TVs ● Wireless Display Standards Fight – Apple AirPlay Mirroring, WiDi, WirelessHD, etc. ● Manufacturers Pushing the Envelope – Samsung and a multi-window extension Copyright © 2013 CommonsWare, LLC
  • 21.
    Q&A Copyright © 2013CommonsWare, LLC