2. Agenda
Applico: Who We Are
Android – What is it?
Android Classic
Android Tablet
Android Now - ICS
Android Compatibility
Future of Android
3. Applico
Headquartered in Manhattan (23rd and
3rd), with offices in LA, Chicago and
Boston (2012)
We make mobile apps … and more!
Technical footprints come from the DoD
We don’t just make apps, we make
systems.
4. Android – What is it?
Technology stack that includes an
operating system and a set of APIs
Based on the Linux kernel and Java.
Supports SQLite for data storage
Supports various media formats
Integrated browser based on WebKit …..
And More!
5. Android 1.6 – 2.X
Classic Android (< 3.0)
Each Screen (Activity) has its own activity
lifecycle
onCreate
onRestart
onStart
onResume
onPause
onStop
onDestroy
6. Android 1.6 – 2.X
Tomaximize screen real-
estate, navigation
elements were off screen
Menu Button
Gesture’s are rarely used
The back button was
used to navigate
throughout the app
7. Android 1.6 – 2.X
Rotation changes had the potential to kill
long running processes.
3D Animations (for the most part) were
dedicated tasks for OpenGL
There is no support for hardware acceleration
Devices typically fell into 4 sizes and 3
resolutions
Small, Normal, Large, X-large (2.3)
LDPI, MDPI, HDPI
8. Honeycomb
Honeycomb (3.x) is targeted at just tablets
Each Activity still has its own lifecycle, but that
activity now contains elements (Fragments)
each with their own lifecycles.
onAttach
onCreate
onCreateView
onDestroyView
onDetach
9. Honeycomb
Pre-Honeycomb Honeycomb
Activity Activity
Fragment A Fragment B
I have one model view and I have one I have one
controller! model view model view
and and
controller! controller!
10. Honeycomb
How can you add fragments to your activity?
Programmatically
FragmentTransaction ft =
getFragmentManager().beginTransaction();
FooFragment frag = new Fragment();
ft.add(id, frag);
Ft.commit;
Through Layouts
<fragment android:name=“com.foo.FooFragment”
android:Id=“@+id/foo”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”/>
Don’t think of Fragments as UI elements!
11. Honeycomb
Nomore menu
options!
Hardware button is
being phased out
All navigation is being
moved to an on
screen model
System Bar
Action Bar
12. Honeycomb
New Animation library Renderscript
Renderscript is based on C. Provides some performance
gains over OpenGL
Usability, while it is a set of new APIs it does simply
development and makes the initialization of rendering
easier
Support for large heap. Devices can allocate up to
256MBs to the heap compared to 2.X which is 16MB
Multiple Screen Sizes are now based on width:
Before: res/layout-small, res/layout-normal, res/layout-
large
Now: We use minimum screen
width, res/sw600dp, res/sw800dp
While it’s not idea it gives developers more control when
dealing with OEMs
13. Ice Cream Sandwich – 4.0
Ice Cream Sandwich!!!!
It’s a unified version of the OS that combines
Honeycomb and 2.X
Fragments and Loaders
On Screen Navigation – Good-Bye Hardware
Buttons!
Build once for phones and tablets, no need for
multiple APKs.
Also adds facial unlock, NFC, camera
enhancements, a social networking api, an official
calendar API (Hooray!) and much more
14. Ice Cream Sandwich
How do I check for dual pane mode?
Add a view to your layout!
If the View is null, start a new activity, otherwise show the
fragment
View detailsFrame =
getActivity().findViewById(R.id.details);
if(detailsFrame != null){
mDualPane = true;
}
If(mDualPane){
showFragment(…use the fragment manager)
}else{
startActivity();
}
17. Compatibility
How do I target the largest audience?
Android penetration of Feb 1, 2012
Android 4.0 : 1%
Android 3.0 : 3.5%
Android 2.2 – 2.X: 86.4%
*Source: http://developer.android.com/resources/dashboard/platform-versions.html
Unless you need specific 3.0+ API support
target 2.2+!!! (You can still turn on large heap
and hardware acceleration in the manifest
file, older versions will still run and ignore it!)
18. Compatibility
Why?
There are a lot of nice APIs available for 3.0+,
but the biggest changes to prepare for are the
architectural and navigational ones.
85%+ is using 2.2!
How can I make legacy apps feel
ICS/Honeycomb like and use the new design
patterns?
Compatibility packages!
Support for Android 1.6+
19. Compatibility
What’s in it?
Official Android Package supports Fragments!
ActionBarSherlock is an open source extension to
the compatibility package!
*source: http://actionbarsherlock.com/
How do I use it?
The official support package is a jar that you can
include in your project
The ActionBarSherlock is a library project
Using these libraries will help prepare you to
officially support ICS while not having to design
two apps and maintain two apk’s.
20. Future of Android
ICS will penetrate the market slowly.
Need for multiple APKs will dwindle
Ultimately I would bet on the back button
disappearing (usability issues)
More NFC!
Integration with Android@Home