Android

The world has changed. Most people today are carrying mobile devices with them at all times. The most popular operating system powering these devices is Android. If you are interested in reaching this market, you must be able to deliver applications on this platform. Whether you are a budding or experienced software developer with little to no experience with creating Android applications, after this course, you will be well equipped to tackle the Android market.

This is our first coLearning class that encourages you to attend with a team. Whether it's the team you work with every day or a newly formed one. Don't have a team? Don't worry, apply for which role (see below) you'd like to take and we'll help match you with some new friends.

G. Blake Meike

Instructor

G. Blake Meike
Twitter

Blake is an engineer with more than 20 years of experience, much of it with Java. He's built systems as large as Amazon's massively scalable AutoScaling service and as small as a pre-Android OSS/Linux and Java based platform for cell-phones.

He's currently deep in Android. Blake is co-author of three books on Android, including O'Reilly's best-selling, "Programming Android" and the Wiley's upcoming "Enterprise Android

Carlus Henry

Instructor

Carlus Henry
Independent Developer

Carlus has worked for Gordon Food Service as a Software Developer, for ISD as a Tech Team Lead, as a Software Developer Consultant for Process Professionals, and most recently as a Software Developer Consultant at Impact Business Group. Carlus also coordinates the local Java developers user group in Grand Rapids.

Being Rescheduled

Cost

  • $800 - AIGA Member
  • $995 - Factory Member
  • $1,395 - (NON) Member

Attend

Supplement Your Learning

As part of the Community
Check out Conga for meetups & dates

And over Coffee With Creators
Every Wednesday morning at The Factory from 8:00am-9:30am

Course Goals


Android Onboarding

Learn some fundamentals of Java and Object Oriented Design, not to mention Design Patterns. We will also be studying at a high level all of the various parts that make up an Android Application.

Layout

When developing any applications, the experience that you give your customers is extremely important. Here, we will be talking about various tools that will assist you in the layout of the views in your application.

Styles / Theme

Looking for that consistent look and feel across your application with minimal effort? Then you want to leverage Android’s Style and Themes

Activities

At the heart of every Android application is the Activity. We will learn more about the Activity and how it is used.

Action Bar

Introduced in Honeycomb, the ActionBar has become a pivotal part of most Android Applications. In this section you will also meet Android’s root inter-component messaging system, Intents.

Fragments

In order to allow your applications make effective use of devices with a variety of sizes and shapes, your application will need to use fragments. They extend a UI to tablets, TVs, and beyond

Concurrency

An Android application must feel snappy and responsive, even while it is using the network. In order to do this, it must confront one of the most difficult problems in programming: concurrency. Android has several tools that make concurrency easier. Using them effectively is the key to a robust application

Android Architecture Overview

Building an Android apps is quite a bit different than building apps for many other platforms. On Android, apps don’t have well defined beginnings and ends. A well designed app appears to be running continuously… despite the fact the OS is constantly killing it! If this sounds familiar, you are probably a Web Application developer. Android Apps are tiny WebApps!

Services

Not everything you do in Android requires a User Interface. Sometimes, you want to do things in the background like pull down an RSS feed or contact some remote web service. This is where Services fit in.

Content Providers

Your customer will want to be able to use your applications, regardless if a network is available or not. We will discuss how to store the state of your application using the Content Provider’s REST API, and the local SQLite database that usually backs it.

Location Service

Android is for mobile devices - emphasis on mobile. One of services that you can tie into is the Location Service in order to determine the location of the device.

Before Class You Should


The Basics

In order to be successful in this course, you should have a general understanding of programming concepts - these concepts include variables, methods / functions, conditional statements and loops. You should also have access to your own computer to use during on-site class time. You should also have access to the internet - whether that is home, coffee shop, or the library or through a membership at The Factory. The computer that the you decide to uses will need Java, minimally 1.7, and the Eclipse Android Development Toolkit. An Android device would be helpful, but certainly not mandatory. In addition to having access to a computer, you must be able to attend all required class periods and meet the minimum attendance for supplemental programming.

A Team

This class is, as is any substantial product, about your team. In order to be successful in this course, you will need to build a team that has the following skills:

  • Designer: You will need at least one person capable of doing production quality design. The designer will learn a new, XML based, design language, with CSS-like capabilities, and will be responsible for driving the team to an attractive, intuitive and engaging UI
  • Lead Developer: You will need one developer on your team who has strong experience with Java, preferably JEE. The developer must have experience with concurrent programming, generics, and the implementation of common design patterns (Observer, MVC, Template, etc.) in Java and will mentor less experienced developers as needed. The lead developer will drive the team to a robust, bug-free architecture.
  • Junior developers: You will probably want one or more junior developers on your team. The application you will develop, in this class, will require substantial work. Spreading the load will increase you chances of success. Junior developers will own implementation tasks of appropriate size and difficulty and will drive them to completion.
  • Producer: You will need someone responsible for coordinating your team's efforts. The producer will own the team goal and track progress towards achieving them, including timeline, QA process, etc.

Note that this is not a list of people, it is a list of roles: on some teams a single person may occupy more than one of them. We will, however, be asking your team to identify the person in each roll. You are most welcome to add additional roles if you like.

In order to qualify for this class, a team must deliver, on the first day of class, a trivial Android "Hello World" app. There will be a pre-class session that will help you install the Android tool chain (Java 1.6 or greater, the Android SDK, Android Studio, ADT, etc) if you need help doing that.

After Class You Will Understand


You will be part of a team that produces a production quality Android application that is available in the Google Play store. You will have a chance to follow your passion, as it relates to Android development, from inception to release. The course will present the following topics, in detail; you and your team can choose the ones you wish to pursue. At the end of the class, at least one member of your team will:

  • Understand Android system Architecture
  • Understand Android application Architecture
  • Understand how to design Android apps for multiple devices
  • Understand the standard Android Concurrency tools: AsyncTasks, IntentServices and Loopers, and their application
  • Be able to write a network client for Android
  • Understand Content Providers and REST in Android
  • Understand and be able to use the Android Location APIs