Android Development

Android Development

Audience

This course is for enterprise application developers wishing to build a mobile front-end. It is also applicable to games developers wishing to develop for mobile phones as well as programmers wishing to extend their platform capabilities.

Prerequisites

Familiarity with the Java Programming Language. Having attended our Java Programming course would be ideal.

Duration

5 days. Hands on.

Course Objectives

The Android platform is the development environment for Android phones and Tablets. This course provides an in depth introduction to Android Development for those familiar with Java and Object Oriented Programming. The course contains numerous practical sessions throughout the class aimed at giving attendees a thorough understanding of the topics.

Course Content

Section 1 Get started fast with Android

Module 1 An introduction to Android and Android Studio
An overview of Android
Types of devices
Types of apps
A brief history
Versions
System architecture
How apps are compiled and run
An introduction to Android Studio
How to work with the Welcome page
How to open an existing project
How to view the user interface for an app
How to view the code for an app
How to run an app on a physical device
How to run an app on an emulator
The user interface

Module 2 How to start your first Android app
The Tip Calculator app
The user interface
How to create a new project
How to develop the user interface
How to work with a layout
How to add widgets to a layout
How to set the display text
How to work with resource files
How to set properties
Common properties
The XML for the user interface

Module 3 How to finish your first Android app
How to write the Java code
How to work with an activity
How to remove the v7 appcompat support library
How to get references to widgets
How to handle the EditorAction event
How to get and set the text for widgets
The lifecycle of an activity
How to save and restore values
The Java code for the app
More skills for finishing an app
How to work with the Gradle build script
How to work with dependencies
How to work with the Android manifest
How to set the launcher icon for an app
How to use the documentation for the Android API

Module 4 How to test and debug an Android app
Basic skills for testing and debugging
Typical test phases
How to check the layout
How to handle runtime errors
How to trace code execution
How to use LogCat
How to use toasts
How to use the debugger
How to set and remove breakpoints
How to step through code
How to inspect variables
How to inspect the stack trace
How to create emulators
How to create an emulator for a tablet
How to create an emulator for a phone with a hard keyboard and DPad

Section 2 Essential Android skills

Module 5 How to work with layouts and widgets
An introduction to layouts and widgets
A summary of layouts
A summary of widgets
The View hierarchy
How to work with layouts
How to use a linear layout
How to use a table layout
How to use a frame layout
How to nest layouts
How to provide a landscape layout
How to work with widgets
How to use editable text views
How to use check boxes
How to use radio buttons
How to use spinners
How to use seek bars
How to display images
How to show and hide widgets
How to add scroll bars
How to display web content

Module 6 How to handle events
A summary of listeners
High-level events
Low-level events
Four techniques for handling events
How to use the current class as the listener
How to use a named class as the listener
How to use an anonymous class as the listener
How to use an anonymous inner class as the listener
When to use each technique
How to handle high-level events
How to handle events for check boxes and radio buttons
How to handle events for radio groups
How to handle events for spinners
How to handle events for seek bars
How to handle low-level events
How to handle Key events
How to handle Touch events
The Tip Calculator app
The user interface
The Java code for the activity

Module 7 How to work with themes and styles
An introduction to themes and styles
Three common themes
How to supply different themes for different APIs
How to convert an existing project to the AppCompat theme
How to work with styles
How to define a style
How to apply a style
How to create a style sheet
How to work with themes
How to modify a built-in theme
How to modify the AppCompat theme
How to modify a theme depending on the API
How to modify the text appearance for a theme
A summary of built-in themes
How to apply themes
How to work with colors
How to define colors
How to apply colors

Module 8 How to work with menus and preferences
How to work with menus
An introduction to menus
How to define a menu
How to display an options menu
How to handle option menu events
How to start a new activity
How to work with preferences
An introduction to preferences
How to define preferences
How to display preferences
How to get preferences
How to use preferences
More skills for working with preferences
How to group preferences
How to enable and disable preferences
How to use Java to work with preferences

Module 9 How to work with fragments
An introduction to fragments
Single-pane and multi-pane layouts
The lifecycle methods of a fragment
How to use single-pane layouts for small screens
How to create the layout for a fragment
How to create the class for a fragment
How to display a fragment in an activity
How to create a preference fragment
How to display a preference fragment in an activity
How to use multi-pane layouts for large screens
How to add multiple fragments to a layout
How to detect screen width
How to control the soft keyboard
Other skills for working with fragments
How to get a reference to a fragment
How to replace one fragment with another

Section 3 The News Reader app

Module 10 How to work with threads, files, adapters, and intents
An introduction to the News Reader app
The user interface
The XML for an RSS feed
How to work with threads
How threads work
How to execute asynchronous tasks
How to execute timed tasks
How to update the UI thread
How to work with files
How to download a file from the Internet
How to parse an XML file
The RSSFeedHandler class
The RSSFeed class
The RSSItem class
How to work with adapters
How to create the layout for a list view
How to use an adapter to display data in a list view
How to handle events for an adapter
How to work with intents
How to pass data between activities
How to view a URL in a web browser
How to dial or call a phone number
The News Reader app
The activity_items layout
The ItemsActivity class
The FileIO class
The activity_item layout
The ItemActivity class

Module 11 How to work with services and notifications
How to work with the Application object
How to define the Application object
How to register the Application object
How to use the Application object
How to work with services
The lifecycle of a service
How to create a service
How to register a service
How to start and stop a service
How to use threads with services
How to test a service
How to view all services
How to work with notifications
How notifications work
How to create a pending intent
How to create a notification
How to work with system services
How to display or remove a notification
How to check if a network connection is available
The News Reader app
The NewsReaderService class
The ItemsActivity class
The FileIO class

Module 12 How to work with broadcast receivers
How to work with system broadcasts
A summary of the system broadcasts
How to code a receiver for the boot completed broadcast
How to code a receiver for the connectivity changed broadcast
How to work with custom broadcasts
How to create and send a custom broadcast
How to code a receiver for a custom broadcast

Section 4 The Task List app

Module 13 How to work with SQLite databases
An introduction to databases
The user interface for the Task List app
An introduction to SQLite
An introduction to the Task List database
The business objects for the Task List app
How to create a database class
How to define the constants for a database
How to define the SQL statements that create a database
How to create or upgrade a database
How to open and close a database connection
How to add public methods to a database class
How to retrieve multiple rows from a table
How to retrieve a single row from a table
How to get data from a cursor
How to insert, update, and delete rows
How to test the database
How to test the database class
How to clear test data from a device
How to work with the database file
How to use DB Browser for SQLite

Module 14 How to work with tabs and custom adapters
How to use tabs
How to add the TabManager class to your project
The layout for an activity that displays tabs
The class for an activity that displays tabs
The class for a fragment that displays tab content
How to use a custom adapter
A layout for a list view item
A class that extends the layout for a list view item
A class for a custom adapter
A class for a fragment that uses a custom adapter
The Task List app
The user interface
The activity_task_list menu
The TaskListActivity class
The activity_add_edit and spinner_list layout
The activity_add_edit menu
The AddEditActivity class

Module 15 How to work with content providers
An introduction to content providers
URIs for content providers
MIME types for content providers
How to add supporting methods to the database class
How to create a content provider
How to start a content provider class
How to provide for querying
How to provide for inserting rows
How to provide for updating rows
How to provide for deleting rows
How to register a content provider
How to use a content provider
How to use a custom content provider
How to use a built-in content provider
How to work with a dialog box
How to import the dialog class and interface
How to build and show the dialog box
The Task History app
The user interface
The XML for the layouts
The Java code for the activity

Module 16 How to work with app widgets
An introduction to app widgets
A Home screen that has app widgets
How to remove app widgets
How to add app widgets
How to create app widgets
How to create the layout
How to modify the database class
How to create the provider class
How to configure an app widget
How to register an app widget
How to test an app widget

Section 5 Advanced Android skills

Module 17 How to deploy an app
An introduction to distribution and monetization
How distribution works
How monetization works
How to create a release build
How to prepare an app for release
How to create the signed APK file
How to distribute directly to the user
How to distribute via a website
How distribute via email
How to publish on Google Play
How to set up a publisher account
How to use the Developer Console to publish an app
How to view the listing for an app

Module 18 How to work with locations and maps
An introduction to locations and maps
The user interface for the Run Tracker app
An introduction to determining location
An introduction to maps
An introduction to the Google Maps Android API
How to configure the Google Maps Android API v2
How to create a new Google Maps project
How to add Google Play services to an existing project
How to get a Google Maps API key
How to set permissions and features
How to work with locations
How to connect to Google Play services
How to get the current location
How to handle a failed connection
How to get location updates
How to make sure GPS is enabled
How to work with Google Maps
How to add a map fragment to a layout
How to display a map
How to zoom in on a location
How to add markers
How to add lines
The Run Tracker app
The activity_run_map layout
The RunMapActivity class
The RunTrackerService class

Virtual Courses

ALL of our courses can be delivered virtually. And our Bath public schedule of courses are now available as live virtual sessions, using the popular Zoom Virtual Classroom and remote labs. Delegates can test their access at: www.zoom.us/test

Public Courses

On-Site Courses

Can't attend one of our public classes? Booking for multiple people?

All our courses are available on your site! Delivered for your staff, at your premises.

Contact us to find out more...