Development Model – Java, XML, and other good stuf • Alternative Development Models – Other languages – Native development – HTML5 and hybrid apps – Games – Other cross-platform options
Activities Host Widgets – Widget = micro unit of UI – Organized via layout managers – Described using XML • Activity as a whole • Portions of an activity (rows in a selection list)
– New IDE, based on IntelliJ IDEA, under development at Google – “Early access preview” available today • Broken enough that is mostly for seasoned Android developers – Should be the long-term focus
Intents Internally – Start your own activities – Start your own services – Send your own “narrowcasts” • Service activity or notifcation → – Send your own “broadcasts” to third parties
Intents Externally – Send a message with the user's choice of “send” application (email? SMS? Twitter? Facebook?) – Ofer to view a certain MIME type – Launch an OS-supplied activity (map) – Launch a third-party activity – Implement a plug-in system
Stores – SQLite: relational database engine, in-process – Files • Internal: not accessible by user • External: accessible by user via mounting device – Shared Preferences • Mostly for user settings • GUI framework for collecting these
– Put icon in status bar (phones) or system bar (tablets) or elsewhere (TVs) – Optional hardware alerts • Ringtone, vibration, etc. – Designed to let user know of work being done in the background
– Audio, video • Decent but not infnite roster of formats/codecs • Some codecs are commercial, may not always be present – Recording, playback – Local, streaming
$25 setup fee – Upload and go • Available on many devices within hours of release • Other Markets Available – Amazon Appstore for Android – Manufacturer stores: Nokia, Samsung, etc. • Self-Distribution
– CPU architectures (x86 vs. ARM vs. MIPS) – May not like C/C++ any more than Java • Pattern #1: Extension Library – Migrate select algorithms into native code – Examples: image processing, signal processing, game AI
Web development, writ small • Key: Cache Manifest – Designate fles that should be cached, beyond standard ephemeral cache – Objective: Allow app to be run offline • Other Facets of HTML5 Specifcation – Storage, WebSockets, video, camera, location tracking, etc.
– May already have Web development talent – Cross-platform • Cons – Need touch-aware coding/libraries – Discoverability an issue • Play Store does not list Web apps • Amazon Appstore for Android does
on a (Java) Native Foundation – Package up HTML/CSS/JS/images into APK – Gives you access to APIs beyond HTML5 specs • Most Popular: PhoneGap – Adobe product, based on Apache Cordova – Cross-platform – Optional hosted build service
Closer to native apps for distribution and capability • Cons – Not a native UI • Big or small problem depending upon audience – Cannot do everything that a native app can
– Ofers own PhoneGap-style hybrid engine for use with Sencha Touch-based apps • MoSync – Another take on hybrid app engine • Rhodes – Web apps, but with Ruby “server”
UI – Code via pluggable “blocks” • Originally created by Google educational unit • Contributed to MIT Media Lab, open source • Apps not really suited for distribution
Apps – You provide details, it generates custom app on a server for you to download and distribute • Focuses – Specifc verticals (e.g., restaurants) via vertical-specifc templates – General “oh, we should have an app” frms
Public Distribution? – UI/UX is fairly important for acceptance, good reviews – Should look like other apps of its ilk • Internal Distribution? – Long history of crap – Look-and-feel issues tend to be lower concern
• Supplied Device? – If so, and if Android, all options on the table • BYOD? – Android Today (think multi-native implementation) – Android Tomorrow (think cross-platform) – Android Forever (gain deep experience in one area)
More Device-Centric, More Native – Contacts? – Camera? – Background data syncing? – Notifcations? • Simpler Requirements = More Flexibility in Development Choice
All Else Equal, Pick a Gentle Learning Curve – Unless learning is the objective... – ...and all else may not be equal • Benefts to Existing Experience – Level of efort = time/expense budget – Deadlines
Official documentation and download site • stackoverflow.com/questions/tagged/android – #1 Q&A resource – See also www.andglobe.com for other sites in a range of languages • Books