CommonsWare offers a variety of one-day seminars on introductory, intermediate, and advanced Android app development topics. Each seminar stands alone, though you can combine them, such as combining the five introductory seminars into a week-long hands-on introductory course.

Here you can find thumbnail descriptions of the seminars, along with links to detailed agendas for each of them.

Introductory Seminars

These seminars are designed for newcomers to Android or those who learned Android on an ad hoc basis and want a more formal education.

You want to get involved with Android app development. Great! Lots of people are developing Android apps every day. However, that does not mean that it is necessarily easy to get started or deliver that first app. Assuming that you have already learned Java, you need to learn about the core pieces of Android, including getting your first project up and rolling.

Most Android devices have touchscreens. A large part of what goes into an Android app, therefore, is the user interface to show on those touchscreens, so the user can interact with the app. Android has its own UI framework, distinct from those you may have used in Web development or other client-side programming. Hence, it is important for you to understand the basics of assembling an Android user interface.

Not surprisingly, many apps need to store data on the device. That might represent data entered by the user, generated by the device (e.g., sensor logs), retrieved from some server, and so on. When it comes to servers, we might not only want to read data from the server, but send data to it. All of this I/O may take some time, and so we also need to consider how that I/O will impact our app's performance.

Two of the most important components in Android are broadcast receivers and services. Broadcast receivers are used for responding to — or possibly sending — broadcast messages between apps (or within our own app, in the case of "local broadcasts"). Services are our primary engine for background work, for anything from downloading a large file to synchronizing data with a server.

Files and databases are for storage that your app manages. When you need to share information with other apps — or with the OS itself — we tend to turn towards content. Android's content system allows us to interact with other apps as if they offered tiny REST-style Web services, without the overhead and security issues involved in TCP/IP.

Intermediate Seminars

These seminars are designed for developers with some experience in writing Android apps who are looking for continuing education and getting deeper into Android.

2017 has brought us Android O, the next major version of the Android OS. As with most previous major version updates, Android 8.0 changes a variety of things that developers are used to, plus adds a variety of new and exciting (to some) capabilities.

At the 2017 Google I|O conference, one of the major new items that was announced was the Architecture Components, where Google is now supplying libraries to help with dealing with lifecycles (e.g., activity lifecycles) and SQLite storage.

Android user interfaces can range from the very simple to the very complex. If you have already implemented some basic user interfaces — or have attended the basic UI seminar — then this seminar can help you deal with more elaborate scenarios. In particular, this seminar is focused on building blocks of user interfaces independent of any particular design aesthetic (e.g., material design). This seminar also looks into how Android's renewed focus on larger screens (e.g., Chrome OS devices), and its corresponding multi-window and drag-and-drop features, can be leveraged within your app.

Getting your Android app to work is tough enough. Getting it to work in a performant fashion requires additional effort. And, unlike crashes that get your attention, poor app performance is "the silent killer" that can drag down your users' devices and their satisfaction with your app. In this one-day seminar, we will review five key Android app usage metrics (RAM, CPU, power, local storage, and bandwidth) and discuss how to measure and optimize your app's use of each.

Security has been getting a lot more attention recently, due to high-profile attacks that have garnered lots of news coverage. Mobile security is no different, as app developers have to take into account how to secure their apps — and, by extension, their users and those users' data — from attackers bent on absconding with, or damaging, data.

Testing Android apps sometimes feels like it is more complicated than writing the apps themselves. There seems to be a dizzying array of testing tools and frameworks, and it may not be clear to you how these work together and which ones to choose for different circumstances.

Advanced Seminars

These seminars are designed for experienced developers looking for continuing education into specialized areas within Android.

There are many ways for apps to integrate with other apps. Sometimes, the "other apps" are special ones, like the home screen or Web browsers. Sometimes, the "other apps" can be fairly arbitrary. Usually, our integration is "loosely coupled", where our apps do not know much, if anything, about the other apps that we integrate with. But it is this sort of integration that powers the overall Android ecosystem, allowing apps to work with other apps and provide a (relatively) seamless experience for the user.

Everybody loves multimedia. Everybody loves multimedia on really big screens. Hence, not surprisingly, Android has its own set of media APIs to collect and consume multimedia, and Android has a few options for getting that media to larger screens, like televisions and projectors.