Done – Daniel Freeman (in front 5th from right), my colleagues and I at the end of the 5 days training.
I will be joining a 5-day intensive boot camp on Smartphone (Android) Applet Developer Training Program - ICONapps (Batch FOUR) which will be conducted from Sept 1-7, 2010 by Daniel Freeman.
Who is Daniel Freeman?
- Android, Java application development expert, with well-regarded accomplishments in the field.
- Joined British Telecom Laboratories. Became involved in the ‘Skyphone’ development and has beat four worldwide competitors to become an AEEC aeronautical standard.
- Involved in standardization for the first Pan-European Digital Mobile (GSM) standard and CCITT standards committees in the USA.
- Involved in My Voice Activity Detector for mobile telephony use, which became a European Standard. This algorithm is still implemented in every GSM mobile phone worldwide. (There are over 3.3 billion phones, and most are GSM).
- Awarded the ‘IPU4+ Inventors Prize’ by the Intellectual Property Unit of BT for patented inventions.
The lessons covered
1) The Basics: An introduction to the major components of an Android application, what tools and
languages one uses to make an Android application, and what an Android activity looks like.
2) Simple GUIs, Part One: How to create a user interface using layout XML files, how to use fields,
labels, and buttons, and how to organize them into rows and columns on-screen.
3) Simple GUIs, Part Two: How to organize widgets in other forms, and how to use checkboxes and
4) Development Tools: How to use the Dalvik Debug Monitor System (DDMS) to inspect error logs,
manipulate files on the emulator, and simulate incoming calls and GPS fixes. Also, how to use the
Hierarchy Viewer to inspect a running activity's user interface, to isolate problems and ensure the
user interface meets designer specifications.
5) Selection Widgets: How to use adapters to convert data collections into rows in a list, how Android
operates with or without the use of a touch-screen, and how to use “spinners” (dropdown selection
6) Fancy Lists: How to make rows in a list involve multiple pieces of data, and then how to do that
efficiently, without wasting memory or CPU time.
7) Fancy Widgets: How to collect dates and times from users, how to implement user interfaces with
tabs, and how to otherwise put more information in an activity than can fit on a single screen.
8) Menus and Messages: How to set up option menus (launched via the hardware MENU button),
how to set up context menus (launched via a long-tap on a user interface element), how to display
dialog boxes, and how to display short message “toasts” on-screen.
9) Threads: How Android works with operating system threads, how to allow a background thread and
foreground thread to work together to update a user interface, and how to indicate to the user that
background processing is ongoing (“progress indicators”).
10) The Activity Lifecycle: What causes activities to be created and destroyed; what you should do
when activities are created and destroyed; when activities are paused, stopped, started, and
resumed (and what to do in those cases); and how to save your user interface state in case the
activity is being ejected from RAM due to low memory conditions.
11) Resources: How non-Java assets (e.g., images) are packaged in an Android application, how to
externalize and internationalize strings, and how to declare multiple layouts or drawables to
accommodate multiple screen sizes and densities.
12) Databases: What SQLite is and how it relates to Android, how to create a database and update its
schema when the application is updated, how to query the database, how to manipulate the
contents of the database, and how to use transactions with the database.
13) Using Multiple Activities: Why you may wish to use more than one activity to manage your
application's user interface, how to add a second (or subsequent) activity to your application, how to
launch other activities in your application, and how to integrate activities from the Android operating
system (e.g., browser, map) into your application.
14) Preferences and Files: How to store user preferences in Android and where they reside on the
device, how to collect user preferences from the user via the standard Android preference user
interface, and the limitations on reading and writing files using standard Java file I/O operations.
15) Rotation Events: What happens by default when the user changes the screen orientation from
portrait to landscape, how to maintain activity state when the orientation is changed, how to block
orientation changes, and how to have the orientation change always be triggered by the
16) Using HttpClient: How to access the Internet from your Android application, how to call out to Web
services using the HttpClient library, and how to parse XML or JSON data that the Web services
17) Creating Services: What roles services play in an Android application, how to add a service to your
application, and how to define what that service will do.
18) Using Services: How to start or bind to a service, what the difference is between starting and
binding to a service, and how to allow the service to asynchronously update an activity based upon
external actions (e.g., received email message).
19) Remote Services: Why you might want to expose a service's API to other applications on the
device, what AIDL is and its role in remote services, how to convert a local service to one that
supports remote access, and how to support listener objects across process boundaries.
20) Notifications: How to display an icon in the status bar (or play a sound, shake the phone, flash a
light, etc.) to let the user know about something that has gone on in the background (e.g. received
21) Location Tracking: What sources of location data are available in Android, how to request that
Android notify you when the device moves, and how you and the user can collaborate to determine
the best possible source of location data available based on user criteria.
22) Maps: Options for integrating maps into an Android application, how to integrate Google Maps into
an activity's user interface, how to control what the map is displaying, and how to highlight points of
interest on a map.
23) Media: How to play back audio and video on an Android device, what media formats are supported,
and what limitations Android places on streaming media playback.
24) Camera/Sensors: How to set up picture preview with the camera, how to take a picture with the
camera, how to find out what direction the device is pointing, and how to detect device movement in
25) App Widgets: What an app widget is, how to define a new app widget, and how to control what an
app widget looks like on the user's home screen.
26) Advanced App Widgets: How to control when the app widget gets updated, how to launch
activities from an app widget, how to collect configuration settings from the user for an app widget,
and how to support multiple copies of an app widget for the same user.
27) Testing: What JUnit is and how it is used outside of Android, how to run JUnit test suites in an
Android emulator, how Android extended JUnit to support GUI testing, and the usage of the “test
monkey” for simulating random user input.
28) Production Applications: How to digitally sign Android applications, how to prepare an application
for distribution, how to upload an application to the Android Market, and how to distribute an
Android application outside of the Android Market.
29) Making Money at Mobile: Recommendations on how to choose an application to build and how
you should go about promoting it, and other business models to consider beyond selling individual
applications to individual users.
30) Android Beyond Java: Other ways to create Android applications without using Java (e.g.
HTML5), what the Native Development Kit is and why you would use it, and how to integrate
scripting languages into an Android application.
31) Other Mobile Platforms: Comparison of application development on iPhone, Windows Phone,
Blackberry, Symbian, WebOS, and Android.
What a tough training in this Ramadhan… I will survive!!!