Big Android BBQ 2012



What's New in
 Jelly Bean
      Copyright © 2012CommonsWare, LLC
Project Butter
●   UI Updates @ 60 frames/second
●   Objective: smoother UI updates
    –   Especially animations
●   Transparent to developers
    –   No code changes to “opt into” Butter effects
●   Google I/O 2012: “For Butter or Worse”

                      Copyright © 2012CommonsWare, LLC
Project Butter Ramifications
●   Only ~16ms Per Frame
    –   Your code on the main application thread
    –   Framework code
    –   Other interruptions (e.g., background process)
●   Net: Get Off the Main Application Thread!
    –   Anything taking more than a few milliseconds
        needs to move to background thread or be
        executed incrementally
                      Copyright © 2012CommonsWare, LLC
Project Butter & Choreographer
06-29 23:11:17.796: I/Choreographer(691): Skipped 647 frames!
The application may be doing too much work on its main thread.

●   Information Message in LogCat
    –   “Skipped N frames” * 16ms = amount of time
        you took on main application thread
    –   The more frames skipped, the more likely it is
        the user will notice
         ●   UI frozen and not responsive
         ●   Animation/scrolling hiccups
                          Copyright © 2012CommonsWare, LLC
Expandable Notifications
●   Alternative Visual Representation
    –   Taller, room for more text or image
    –   Optional action buttons
●   When Appears
    –   When at top of drawer
    –   User expansion via
        two-finger swipe gesture

                      Copyright © 2012CommonsWare, LLC
Expandable Notifications
●   Styles
    –   BigTextStyle: larger amount of prose
    –   BigListStyle: subject lines, news headlines,
        etc.
    –   BigPictureStyle: shared photos, etc.
●   Actions
    –   Up to three
    –   Immediate operations with fewer clicks
                      Copyright © 2012CommonsWare, LLC
Expandable Notifications
●   Creating Them
    –   Use Notification.Builder or
        NotificationCompat.Builder
    –   Create regular Notification
    –   Wrap in a “big” style Notification
         ●   Wrapper “inherits” values from wrapped one (e.g.,
             timestamp)
         ●   Android uses one or the other based upon
             circumstances
                          Copyright © 2012CommonsWare, LLC
READ_LOGS Regression
●   Before
    –   No API for reading LogCat contents
    –   SDK apps could hold READ_LOGS and use
        undocumented means instead
●   Now
    –   No API for reading LogCat contents
    –   Only firmware apps can hold READ_LOGS
    –   Default: can only read own messages
                      Copyright © 2012CommonsWare, LLC
READ_LOGS Regression
●   Effects
    –   Cannot report system error messages via ACRA
        and kin
    –   Limits native IDEs (AIDE, etc.), as they cannot
        show messages from apps they create
●   Reasons
    –   Privacy: too much crap getting logged
    –   Security: reduce blocking attacks
                       Copyright © 2012CommonsWare, LLC
READ_EXTERNAL_STORAGE
●   New Permission
    –   Required if you are reading from external
        storage and do not already hold
        WRITE_EXTERNAL_STORAGE
●   Not Enforced By Default
    –   Jelly Bean: enabled in Developer Options
    –   K+: possibly enabled by default

                      Copyright © 2012CommonsWare, LLC
READ_EXTERNAL_STORAGE
●   Reason: Privacy
    –   Addressing the “any app has access to our
        photos” complaint
●   Warning: No Grandfathering
    –   No indication that apps with low
        targetSdkVersion will be granted this
        permission by default
    –   Users can toggle this on now
                      Copyright © 2012CommonsWare, LLC
Other Notable Changes
●   Full Bi-Directional Text Support
    (no, really, honest, we got it this time!)
     –   Also custom keymaps, to surface other
         characters more easily
●   Fully-Resizable App Widgets
     –   And your code gets to find out, too!
     –   Also get GridLayout and ViewStub support
●   Improved Accessibility
                              Copyright © 2012CommonsWare, LLC
Other Notable Changes
●   Android Beam
    –   Bulk content transfer, kicked off by NFC,
        completed by Bluetooth
●   Google Cloud Messaging
    –   Permanent replacement for Labs' C2DM
    –   Various improvements, still free


                       Copyright © 2012CommonsWare, LLC
Other Notable Changes
●   More Changes for Task Navigation
●   More Options for Lights Out/Full Screen
●   Service Discovery (WiFi, WiFi Direct)
●   Audio Improvements (e.g., codec
    enumeration)
●   Better WebView
●   Etc.
                   Copyright © 2012CommonsWare, LLC
Jelly Bean/API Level 16 Uptake
●   Presently: 1.8% (as of October 1, 2012)
●   Short-Term Growth
    –   Upgrades from manufacturers
    –   Gingerbread contract expirations
    –   Holiday season sales
●   Predictions
    –   10% by February 1, 2013
    –   25% by June 1, 2013
                        Copyright © 2012CommonsWare, LLC

What's New in Jelly Bean

  • 1.
    Big Android BBQ2012 What's New in Jelly Bean Copyright © 2012CommonsWare, LLC
  • 2.
    Project Butter ● UI Updates @ 60 frames/second ● Objective: smoother UI updates – Especially animations ● Transparent to developers – No code changes to “opt into” Butter effects ● Google I/O 2012: “For Butter or Worse” Copyright © 2012CommonsWare, LLC
  • 3.
    Project Butter Ramifications ● Only ~16ms Per Frame – Your code on the main application thread – Framework code – Other interruptions (e.g., background process) ● Net: Get Off the Main Application Thread! – Anything taking more than a few milliseconds needs to move to background thread or be executed incrementally Copyright © 2012CommonsWare, LLC
  • 4.
    Project Butter &Choreographer 06-29 23:11:17.796: I/Choreographer(691): Skipped 647 frames! The application may be doing too much work on its main thread. ● Information Message in LogCat – “Skipped N frames” * 16ms = amount of time you took on main application thread – The more frames skipped, the more likely it is the user will notice ● UI frozen and not responsive ● Animation/scrolling hiccups Copyright © 2012CommonsWare, LLC
  • 5.
    Expandable Notifications ● Alternative Visual Representation – Taller, room for more text or image – Optional action buttons ● When Appears – When at top of drawer – User expansion via two-finger swipe gesture Copyright © 2012CommonsWare, LLC
  • 6.
    Expandable Notifications ● Styles – BigTextStyle: larger amount of prose – BigListStyle: subject lines, news headlines, etc. – BigPictureStyle: shared photos, etc. ● Actions – Up to three – Immediate operations with fewer clicks Copyright © 2012CommonsWare, LLC
  • 7.
    Expandable Notifications ● Creating Them – Use Notification.Builder or NotificationCompat.Builder – Create regular Notification – Wrap in a “big” style Notification ● Wrapper “inherits” values from wrapped one (e.g., timestamp) ● Android uses one or the other based upon circumstances Copyright © 2012CommonsWare, LLC
  • 8.
    READ_LOGS Regression ● Before – No API for reading LogCat contents – SDK apps could hold READ_LOGS and use undocumented means instead ● Now – No API for reading LogCat contents – Only firmware apps can hold READ_LOGS – Default: can only read own messages Copyright © 2012CommonsWare, LLC
  • 9.
    READ_LOGS Regression ● Effects – Cannot report system error messages via ACRA and kin – Limits native IDEs (AIDE, etc.), as they cannot show messages from apps they create ● Reasons – Privacy: too much crap getting logged – Security: reduce blocking attacks Copyright © 2012CommonsWare, LLC
  • 10.
    READ_EXTERNAL_STORAGE ● New Permission – Required if you are reading from external storage and do not already hold WRITE_EXTERNAL_STORAGE ● Not Enforced By Default – Jelly Bean: enabled in Developer Options – K+: possibly enabled by default Copyright © 2012CommonsWare, LLC
  • 11.
    READ_EXTERNAL_STORAGE ● Reason: Privacy – Addressing the “any app has access to our photos” complaint ● Warning: No Grandfathering – No indication that apps with low targetSdkVersion will be granted this permission by default – Users can toggle this on now Copyright © 2012CommonsWare, LLC
  • 12.
    Other Notable Changes ● Full Bi-Directional Text Support (no, really, honest, we got it this time!) – Also custom keymaps, to surface other characters more easily ● Fully-Resizable App Widgets – And your code gets to find out, too! – Also get GridLayout and ViewStub support ● Improved Accessibility Copyright © 2012CommonsWare, LLC
  • 13.
    Other Notable Changes ● Android Beam – Bulk content transfer, kicked off by NFC, completed by Bluetooth ● Google Cloud Messaging – Permanent replacement for Labs' C2DM – Various improvements, still free Copyright © 2012CommonsWare, LLC
  • 14.
    Other Notable Changes ● More Changes for Task Navigation ● More Options for Lights Out/Full Screen ● Service Discovery (WiFi, WiFi Direct) ● Audio Improvements (e.g., codec enumeration) ● Better WebView ● Etc. Copyright © 2012CommonsWare, LLC
  • 15.
    Jelly Bean/API Level16 Uptake ● Presently: 1.8% (as of October 1, 2012) ● Short-Term Growth – Upgrades from manufacturers – Gingerbread contract expirations – Holiday season sales ● Predictions – 10% by February 1, 2013 – 25% by June 1, 2013 Copyright © 2012CommonsWare, LLC