Android™ Bootcamp Training Course
Course Summary
Android™ Bootcamp Training Course is a hands-on training for designing and building mobile applications using Android™ open-source platform. Android™ Bootcamp course explains the philosophy of developing for Android™ through its main application development building blocks and their interaction with one another.
This complete hands-on course encourages students to learn by building increasingly more sophisticated and meaningful mobile applications for Android™.
By the end of the course, each participant will build their own complete Android application incorporating most of the key aspects of the platform. Typically, we build a Twitter app for Android, but there are other choices depending on participants' interests.
This course has been updated for Ice Cream Sandwich changes to Android API and confirmed to be up-to-date for Jelly Bean (no major changes to APIs).
[top] Duration
5 days.
Android™ Bootcamp is composed of the following:- History of Android (30 minutes)
- Android Stack (90 minutes)
- Hello Android (90 minutes)
- Architecting Android Apps (2 hours)
- Debugging and Testing Android Apps (1 hour)
- Android Security Overview (1 hour)
- Activities and User Interface (3 hours)
- Action Bar and Navigation (90 minutes)
- Preferences (90 minutes)
- Advanced UI (90 minutes)
- Services (3 hours)
- Broadcast Receivers (3 hours)
- Content Providers (3 hours)
- Lists and Adapters (90 minutes)
- Fragments (3 hours)
- Testing Overview (3 hours)
[top] Objectives
Upon completion of this course, you will be able to:
- Build your own Android apps
- Understand how Android™ applications work, their life cycle, manifest, Intents, and using external resources
- Design and develop useful Android™ applications with compelling user interfaces by using, extending, and creating your own layouts and Views and using Menus.
- Take advantage of Android's Application Framework API to build complex applications.
- Utilize the power of background services, threads, and notifications.
- Use Android's communication APIs for SMS, telephony, network management, and internet resources (HTTP).
- Secure, tune, package, and deploy Android™ applications
[top] Audience
This course is designed for software developers interested in designing, creating, deploying, and testing applications for the Android™ mobile phone platform. It is valuable to both novices and gurus, who already have experience in developing mobile applications for other platforms.
[top] Prerequisites
To take this course, you must know Java. You should be able to answer most of the following questions:
- What is a difference between a class and an object?
- What is the difference between static and non-static field?
- What is the difference between extends and implements keywords?
- What is an anonymous inner class?
- What is the purpose of @Override?
To refresh your Java skills you can review Marakana's Fundamentals of Java tutorial to get up to speed.
Additionally, knowledge of Eclipse is required. You could watch this 30-minute tutorial to get up to speed with Eclipse.
[top] Instructors
Aleksandar Gargenta is the technology brains at Marakana. Always on top of the latest in software, Aleksandar is the company's radar for technology that matters. His latest ventures are perfecting Marakana's Android Internals and Security courses.
Phew. And if that's not enough, he's also the chief architect of Marakana Spark, the on-demand software platform that powers marakana.com and a number of other training companies. As an instructor he's taught hundreds of classes for everyone from Apple to Disney, from NASA to the Department of Defense.
In his spare time Aleksandar runs the San Francisco Java, Android, and HTML5 User Groups with over three thousand members across the three groups.
Aleksandar holds a bachelor’s degree in Mathematics and Computer Science from the University of Waterloo. He is also a father, photographer, hiker, and a race-car driver :-)
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".


Blake writes the popular and informative blog "Portable Droid"
More about G. Blake Meike...
Ken Jones has thousands of in-class hours teaching advanced technical topics, and over 20 years experience in technical training and documentation targeted towards software developers. Ken has delivered training to various software development teams within the Fortune 1000 such as Cisco, Intel, IBM, Boeing, AT&T, Ericsson/Nokia, and many more. Ken's expertise spans multiple areas of software development; he has trained teams in Java, Javascript, Android, and advanced web development with HTML, CSS, and XML.
More about Ken Jones...
Marko founded Marakana back in 2001 to help underprivileged youth, minorities, and inner-city kids learn web technologies and get ahead in life. So Marakana emerged with goal of helping people get better at what they do professionally, focused on open source software training.
Marko is the developer of Marakana Android Training series. He has taught Android for companies such as Sony-Ericsson, Qualcomm, Ericsson Canada, and many others. Marko is a co-founder of San Francisco Android Users Group and regularly teaches Android Bootcamp at Marakana.
Marko is author of Learning Android book published by O'Reilly Media. This book is based on Android Bootcamp and incorporates best learning practices for new developers to start creating applications for this exciting open source mobile platform.
Marko is also the co-chair of Android Open, an O'Reilly conference focusing on Android ecosystem.
In 2006 Marko Gargenta published "PHP and MySQL By Example", a collection on PHP examples. The book was published by Prentice Hall, world's largest technology publisher and has been also translated to Spanish.
Marko Gargenta obtained his Bachelor of Mathematics Degree from University of Waterloo (Canada's MIT) and has been developing in Java since 1996. He lives in San Francisco, California.
More about Marko Gargenta...[top] Outline
History of Android (30 minutes)
History of Android module focuses on how we got here. The goal of the module is to give us an idea of design philosophy behind Android, and what it may say about the future of the platform. At this high level, we explore both technical and business choices that effect the platform for a long time. We'll look at how and Android operating system gets put together by various parties involved, from Google to carriers.
Topics in this module include:- Vision for Android
- History overview
- Android Open Source Project (AOSP) versions
- OEM add-ons
- Third Party Android add-ons
- Carrier Bloatware
- Android fragmentation
Android Stack (90 minutes)
- Design philosophy
- Open Source licenses
- Linux kernel space
- Native layer
- Dalvik VM
- Application layer
- Apps
Hello Android (90 minutes)
- Android SDK: How to set it up and what it consists of
- About Eclipse: The power of the tools
- Creating a new Android project
- Anatomy of a project: What are all the moving parts
- Running the app: Emulator, real device, tools to monitor them both
Architecting Android Apps (2 hours)
-
What makes up an Android app
-
Activities and Android UI
-
Fragments and best practices for reusable UI
-
Intents, Action Bar, and More
-
Services, IntentServices, Remote Service
-
Content Providers and Loaders
-
Lists and Adapters
-
Broadcast Receivers
-
App Widgets
-
Federation of apps design model
Debugging and Testing Android Apps (1 hour)
This module provides an overview of some of the tools available in Android SDK that can help you with debugging and testing your apps. By the end of this module you should have a general knowledge of what tools are available and how to use them. The tools we'll explore include:
- Logcat
- Debugger
- Traceview
- HierarchyViewer
- Syslog
- Exercise Monkey
- Monkey Runner
- UIAutomator
Android Security Overview (1 hour)
The goal of this module is to provide high level overview of how Android security is architected. By the end of this module, you should know how the apps are sandboxed how the security is enforced. Topics covered include:
- Security design overview
- Application sandboxing
- Using permissions
- Declaring permissions
- Granting and enforcing of permissions
- Social vectors of attack
- Top 10 Bad Permissions
Activities and User Interface (3 hours)
In this module, you will learn how to create basic user interface in Android. You will learn that there is a declarative (XML-based) as well as programmatic (Java-based) approach to creating Android UI. Additionally, you will learn about activities, one of the most important building blocks for Android apps. You will explore at length the lifecycle of an activity as it is highly managed by the system and is important to understand from performance point of view. Topics in this module include:
- Two ways to create Android UI: XML versus Java approach
- Main view properties: width, height, ids, strings, and more
- Structure of UI: Views and Layouts
- Linear Layout vs. Relative Layout vs. Frame Layout vs. Absolute Layout
- Localization of UI
- Best practices for targeting various form factors: phone, tablet, TV
- Handling UI events: a bit about listeners
- Best practices when working designing Android UI
Action Bar and Navigation (90 minutes)
Your app is a collection of various "screens", implemented as activities. You also may have a few services, and other features that require a button to click to activate. Android offers a standardized method for managing menus and navigation across various components of your app in its Action Bar framework. In this module, you will learn how to use Action Bar to implement navigation in your app. Topics include:
- What Action Bar is
- Enabling the Action Bar
- Removing the Action Bar
- Adding Action Items
- Split Action Bars
- Using the App Icon for Navigation
- Implementing the "Go Home" App Icon Feature
- Implementing "Up" Navigation with the App Icon
- Adding Navigation Tabs
- Adding Drop-down Navigation
Preferences (90 minutes)
Your app often needs to store some user data for future use. For example, it needs to know user's login information for an online service, or other settings. Android framework offers a system for just doing that in form of Preferences. In this module, you will learn how to use preferences within your app. Topics include:
- Overview of preferences
- Preference resource: defining what you'll store locally
- Preference activity: displaying the preference screen
- Reading in the preference values
- Programmatically editing the shared preferences
- Registering for preference changes via a listener
- Filesystem overview: where are the files stored and is it secure
Advanced UI (90 minutes)
This module introduces some of the advanced UI techniques that will make your user interface, and experience stand out of the rest. Topics include:
- Create activity layouts programmatically
- Incorporate layout resources into a programmatic layout
- Account for a device's screen resolution when programmatically setting screen dimensions
- Designing for performance
- Designing for multiple form factors
- Testing and optimizing UI
Services (3 hours)
An Android application is just a collection of various building blocks. Services are one of the major such blocks. They represent something working in the "background" in your app. By background, we mean it is not visible, but is crucial to the functionality of you app. In this module you will learn what services are, when to use them, how they work, and how to implement them. Topics covered include:
- Overview of Android services
- Service lifecycle
- Declaring a service
- Registering a service
- Starting and stopping a service
- Threads and other concurrency considerations with services
- Bound versus unbound services
- Remote versus local services
Broadcast Receivers (3 hours)
Broadcast receivers are Android's publish-subscribe mechanism that. It is an essential part of most Android apps. In this module, you will learn when to use broadcast receivers, how to implement them, as well as register them for intent actions. Topics covered include:
- Broadcast receiver usage patterns: when and why to use them
- Implementing a broadcast receiver
- Registering a broadcast receiver via the manifest file
- Registering a broadcast receiver programmatically
Content Providers (3 hours)
An Android app by default cannot access another app's data. This is the cornerstone of Android security, the principle of sandboxing. But often, you do want an app to share some data with others. Content providers are such an interface to data so that the data cab be mashed together across apps. In this module, you will learn how to design and develop content providers. Topics covered include:
- Why content providers: an overview
- Using existing content providers: creating client code that can read and modify the data managed by a content provider
- Creating a content provider: implementing a basic content provider to expose structured data to other applications
- Intelligent data loading: using loaders to retrieve a Cursor from a content provider without blocking your application's main thread
Lists and Adapters (90 minutes)
Android apps often have to deal with data, and frequently large amounts of it as well. Think an email client, opening up a mailbox of tens of thousands of emails. Given that the screen itself is rather small, and network connection often limited, the intelligence of how to efficiently handle large data sets on the screen is crucial to many apps. To help with that, Android offers a number of selection widgets, such as a list view. It also provides for a management of data that such widget display in a form of adapters. In this module, you will learn how to work with Lists and Adapters. Topics covered include:
- Overview of selection widgets
- Working with lists
- Working with adapters
- Implementing a list view and connecting it with an adapter
- Creating custom item views
- Creating custom view bindings
Fragments (3 hours)
Android runs on variety of devices, from phones with small screen sizes, to tablets and large-screen TV sets. Fragments in a nutshell represent a smaller part of a user interface that could take a whole screen, or be part of a larger UI. By creating and using fragments, your app can adapt to variety of devices and screen sizes. In this module, you will get a solid overview of fragments and will learn how to design them, develop them, and use them both statically and dynamically. Topics covered include:
- What is a fragment: an overview and motivation
- The compatibility package: targeting pre-Honeycomb devices
- Fragment lifecycle
- Creating a fragment class
- Creating a fragment layout
- Statically including fragments in an activity
- Dynamically attaching fragments
- Handling run-time configuration changes
- Retaining Fragments Across Activity Re-Creation
- Using Fragments with no Layouts
- Finding Fragments
- Fragment Operations
- Performing Fragment Transactions
- Managing the Fragment Back Stack
- Integrating Fragment Action Bar/Options Menu Items
- Integrating Fragment Action Bar/Options Menu Items (example)
- Communication Between the Fragment and the Activity
- Best Practices: Loose Coupling of Activities and Fragments
- Best Practices: Define Fragment Interfaces to Invoke Activity Behavior
- Best Practices: The Activity as a Switchboard
- Advanced Fragment Initialization
- Implementing Dialogs Using Fragments
- Using a Fragment-Based Dialog
- Fragment-Based Preference Management
- Additional Fragment Subclasses
Testing Overview (3 hours)
Testing is an important part of any app development. There are many facets of testing, such as unit testing, performance, or functional testing. In this module, you will get an overview of various tools that Android supports for testing apps. Topics covered include:
- Testing guidelines: why test and what to test
- JUnit framework: general overview of unit testing and Java's JUnit framework
- Android's unit testing framework: focus on Android JUnit extensions and how to use them to unit test your code
- Using the exercise monkey test tool: pseudo-randomly testing the UI
- Using monkeyrunner tool: scripting functional test cases for your app
- Other testing tools and frameworks: the third-party resources
[top] Additional Notes
Android Meetup Group Organized by Marakana
Marakana team organizes and runs the San Francisco Android Users' Group - an interactive group of Android developers. In our monthly meetings, we discuss Android landscape from both technology and business angles. We often have great presentations by industry experts, group discussions, as well as hands-on sessions. If you are in San Francisco Bay Area, we encourage you to join the group and meet other Android developers.
Android SDK Version
This course is constantly updated for the latest Android SDK, but the instructor will discuss differences between releases as well.
Trademark Notice
Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions.
[top] Student Testimonials
Mark is an excellent teacher. His speaking style is great and easy to follow. He presents the subject in a very approachable manner. It's quite obvious he's passionate about android and is very invested in helping google make it a great platform. Giving the class free access to his books and tutorials was fantastic. Thanks Mark!
Course was fast but good. I certainly learnt things and it cleared up some misconceptions I had about Android. Definitly enjoyed the course.
... The application development part of course (first 3 days) was excellent and exceeded expectations. It is very well constructed to demonstrate all of the necessary core concepts. Marko was excellent! He is very insightful and a pleasure to learn from.
Thank you. Very useful course!
Excellent class, thank you!
This was a great training. The instructor was very well prepared and during the week he was able to keep the pace of the course at the right level.
Overall the course was great. The instructor really knows his stuff. I definitely learned a lot in just a week. Hope this is the beginning of great things!
I was impressed by Ken's deep knowledge of the Android API's and core functionality. He is clearly familiar with many aspects of the device. Ken was easy to understand and follow throughout the training. I have programmed Android for several months and Ken was able to help bring clarity to the work that I have already done. Thanks!
Marko is a fantastic teacher. He is very knowledgeable and well spoken. The hands on coding examples were great. A great hands-on introduction to the world of Android software development.
it's fast, but liked it. lots of material and L10N/I18N topic as well.
Many hours of reading and testing was saved ... this course has let me go to android real world apps from the theoretical to the practical.
Was a great course that really added to my understanding of android applications!
They aren't kidding when they say "bootcamp"!:) Great course!
The level of material was perfect for me. Coming from an iOS world, the course delivered exactly what I needed to make the transition of concepts I know in one world (iOS) to the Android world. Awesome class! Instructor's knowledge is top notch and teaching abilities are great.
This course was great! Marko was professional and at the same time created an easygoing learning environment. The small class size allowed for easy interaction with the instructor. I definitely feel like I can tackle my own android apps now.
It covered wide area of topics through a nice example.
The course met my expectations, it was very well taught and had an excellent format including plenty of hands on activities. The Twitter app project was great to get exposure to the main Android constructs.
This class has been such a great learning experience. Mark is so knowledgeable about Android and was a great teacher!
Great course - I'm new at programming in general so it was pretty intense for me. But I learned a lot and am excited in using what I've learned!
Great course. I have a better understanding of Android and am able to code apps. A good refresher on Java. Thanks for the great class.
Not sure what to expect from the training but was very surprised by how well it was set up. Exactly what I needed. I am ready to work on my first Android app.
Enjoyed the cousre. Thanks for coming out...
Great overall course for Android development. Not going to make me an expert overnight, but definitely pointed me in the right direction to get up and running. Great Job Ken! You know your stuff.
I really like the course. I learned all of the major components to android development and would definitely recommend this course.
The instructor was kind and concerned with motivating the class. He demonstrated very good knowledge of the topics and kept a good pace in the course, giving theory and practice in a well balanced manner.
This class was excellent! Sasa is a great instructor with a good understanding of theory, but also a top notch developer very familiar with the low-level details -- super impressive. This class exceeded my expectations. I learned so much. Thank you. :-)
I found the training to be very "hands-on" and practical - an excellent intro.
Great class, Ken did a great job teaching the subject matter. I am happy with what I've learned and hope to get a start on an app soon.
Overall it cover a good sample on everything. I was able to pick up more information on developing apps through sdk. Things that I had not known by reading. I like the hands on expirience, get to go through small project, better than just a lecture style course.
Really enjoyed the class and learnt way over my head but working on getting more information as the classes touched on some very interesting Android potentials and development that is open to flexibility and use. I really liked the class and was intensely engaged as it makes one understand Android in a whole new level! Bravo Marakana