Tims GoogleIO 2011 Notes

Here are some random notes from Google I/O 2011 sessions that I (Tim Bird) attended:

Day 1 Keynote
100,000 million activations, 400,000 activations per day, 200,000 apps, 4.5 billion app installs

Honeycomb 3.1 is coming - Xoom now, other tablets later, Google TV

Ice Cream Sandwhich coming Q4 - unified TV, tablet, phone OS, open source

movies on Android market books on Android market music beta - music manager instant mix moving pinning music - cache recently played music --- new devices - 18 month of updates --- 300 devices --- Android Open Accessory fitness demo arduino dev. board Android@home android compatible lights and hardware hub - project tungsten attendees get a Samsung tablet

Honeycomb highlights
Holo theme new - books, movie studio improved interface

renderscript tabbed browser fragments - like mini-activites use Android compability toolkit to get fragments for 1.6 platforms

system bar - always on, but can dim sometimes action bar - app home, menu, overflow menu contextual action bar renderscript init - called on startup root - called every frame return value = interface rate uses LLVM compiler
 * Java program talks to it
 * no JNI needed - variable access is automatic

harware accelleration automatic (if turned on in manifest)

Developer Pro Tips
http://goo.gl/a4c639

how to get features - be best and innovative

start activity based on API level

get user feedback
 * send exceptions and use google analytics
 * randomize user sets and test different features (like layouts)

read developer blog

Android backup service re-install apps is device gets wiped
 * Fresh - use passive location provider
 * Psychic - save user preference, to right thing (what user expects)
 * Adaptive - display correct keyboard
 * Smooth - no pauses - make everything asynchronous
 * 60ms delay can cause visible jitter

Open Accessory SDK
devices with host mode now support USB keyboard & mouse, game controller explanation of host and device USB sides new 3.1 USB host protocol support accesory is host, device is on USB gadget side

manifest specific related accessories strings flow from host to device (includes URL - for web site or app related to accessory)

Fireside chat
no notes taken. Session was all Q&A.

Python
google app engine is python youtube used it a lot Django vs. Rails (pretty similar?) Twisted is pretty different
 * Django = db-based web dev platform
 * creates db manager interfaces automatically

Youtube used to use psycho, but doesn't any more

PyPy is sometimes more performant than C-Python Developer who worked on psycho now works on PyPy Guido doesn't consider psycho safe

Day 2 keynote
chrome is on 6-week release schedule speech being added tinkercad webgl = 100 times faster than canvase 2d

GST & eclipse for mobile apps
uibinder - mobile UI in any form factor
 * firebug dev tool
 * shows packet traces

web for google TV
2 million internet-connected TVs in 2010 43 million in 2014

4 main app areas:
 * media consumption with social aspect
 * apps that span devices
 * casual games
 * paired virtual controllers

drawing game with touch controller per person

10-foot UI only 720p or 1080p

overscan: action-safe=3.5%% away from edges title-safe=5-10%% away from edges

STAR: don't build to edges - have spacing and padding

it's easy to over-saturate - tone down oranges and reds

STAR: non-white background is better (white is like SHOUTING) black is a normal default background for TV

STAR: test contrast on a real TV

use big fonts, small text snippets, san serif

avoid scrolling, have very strong focus (DVD does this wrong a lot)

support arrow keys support back key correctly - use hash location

google TV auto-zooms - don't try to be pixel-perfect

design guide
 * give visual feedback
 * do motion
 * (one other one)

TV ui templates available from google also UI libraries

http://goo.gl/8ajdi

code site and forum

Android apps for Google TV
Google TV = platform

honeycomb 3.1 this summer

All old and new devices will have:
 * Android compatibility
 * Android market
 * adb

SDK add-on will be available for emulator and with TV APIs

Should optimize application for D-pad

TV is always landscape mode (some apps only work in portrait)

List view should be in columns:

tab tab list button

should be converted to:

tab tab  list   button

action bar standardizes app controls. action bar is a vertical list on left size of screen.

1280x720 = 213 DPI => 960 dp x 540 dp 1920x1080 =320 DPI => ditto

calibration = canvas = full screen

can't count on exact pixel dimensions. 1692x952 = minimum size

tips:
 * can use qemu now
 * can try to get a fishtank device

can use emulated touch screen - "faketouch"

Need to specify touchscreen requirements in manifest

app won't show up in market for TV if app requires NDK, camera, microphone, sensors

anymote protocol - send keys and mouse events to TV

Google has nothing to say about access to TV feed.

http://goo.gl/Nns9f

watch for us on stack overflow - "GooglTV"

3.1 TVs will still use Chrome

Samsung and Vizio ore new OEMs

user accounts is on roadmap

I happened to sit next to Mark Friedman, a technical lead on the AppInventor project

Android dev tools
tools.android.com

XML editors manifest = form-based editor

no draw9-patch tool, but it's coming

want rendering in eclipse to match the device, but this is hard

demonstration of new layout WYSIWIG editor

can refactor code by extracting layout pieces and creating includes. This avoids a lot of layout duplication.

use same styles throught.

Relative layout tool shows arrows denoting relations between layout elements.

Can do animation preview.

XML text edit completion

Android asset studio - web app

Some possibly little-known tools:
 * DDMS logcat
 * traceview - a 3rd party contributed the eclipse integration
 * DDMS - get HPROF (which is a memory allocation dump) and use with MAT - memory analysis tool (which is another eclipse plugin)
 * See google I/O presentation about android memory use (which I missed)

Emulator issues:
 * is currently very slow for large-screen devices
 * renderer is the big problem
 * ARM, and HW emulation is not to bad for performance


 * emulator now has a snapshot mode - can reboot super-fast

Demonstration of host-native rendering - looks good, much faster, needs some work to be completed.