Android Bootcamp Training Course
The Android™ Bootcamp Training Course is a hands-on introduction to designing and building mobile applications using the Android™ open source platform. Android™ Bootcamp explains the philosophy of developing for Android™ through its main application development building blocks and their interaction with one another.
This completely 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 the interests of participants.
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)
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
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 as well as gurus (who already have experience in developing mobile applications for other platforms).
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 NewCircle's Fundamentals of Java tutorial.
Additionally, knowledge of Eclipse or IntelliJ is required. You could watch this 30-minute Eclipse tutorial to get up to speed.
Adam Breindel brings over 10 years of successes working with cutting-edge technology for small startups as well as major players in the travel, media/entertainment, financial, productivity, and consulting industries.
In addition to web sites, GUI applications, and mobile device software, Adam has also built high-volume middleware for one of the world's largest banks, and produced a new, modern integration to a 1960s-vintage mainframe app for one of the world's largest airlines.
Adam focuses on designing and coding systems in a way that yields predictable results, leverages best practices and high-productivity tools, minimizes excess code, and is fun to do. He has also spoken at tech conferences, written articles and skill assessments, and produced an open source tool for software development. Adam has enjoyed teaching large and small groups, covering topics from nuts-and-bolts Java programming to merging ideal process with real-world constraints in an organization.More about Adam Breindel...
Chris has over 15 years experience in various software development technologies and environments. He began his career in the shrink-wrapped software industry writing server applications, proceeding to work for an R&D company on early SOAP technologies development, then writing large-scale cross-platform integration systems in the OCR and data storage industry. Later, he moved into the web market writing server-side code for the automobile and financial industries. Chris has extensive experience in C++, C, C#, Java, and PERL.
Chris entered the mobile market writing Android applications for credit union home banking. He has consulted in the design and development of complex Android applications. He now writes Android-based solutions for the airline in-flight entertainment market from the framework up to the user experience level.
Throughout his career, Chris has enjoyed the evolution of the software – and hardware – industries. Chris enjoys all aspects of the information technology world. Many of his hobbies revolve around computers and networking; however, he also enjoys SCUBA diving, where he is a certified dive master and instructor.More about Christopher Stanley...
Dave Smith is the Android Practice Lead at NewCircle, where he focuses on development and maintenance of courseware materials.
Dave has worked in developing software at all levels of the Android platform since 2009; from writing user applications using the SDK to building and customizing the Android source code for embedded devices. Prior to that, he was an embedded applications developer and hardware systems integrator for the M2M industry, working mostly with 8 and 16-bit microprocessors. His favorite mobile projects are those that integrate custom accessory hardware with consumer devices or involve building Android for embedded platforms. Today he specializes primarily in integrating custom device interfaces, such as USB and UART, with application layer services on embedded Android hardware.
Dave is also passionate about providing resources for developers that they can make use of long term. He is the author of the popular Android book Android Recipes: A Problem Solution Approach published by Apress; a cookbook style text dedicated to getting Android developers up and running quickly by providing real-world useful examples of how to use the Android SDK and NDK to build applications quickly and well. Dave is a regular speaker at Android conferences, where he usually speaks on topics related to hardware integration and framework internals. He frequently shares ideas via the NewCircle Stream, his personal development blog, Twitter (@devunwired), and Google+.
Dave received his degrees in Electrical Engineering and Computer Science from the Colorado School of Mines, and is a licensed Professional Engineer.More about Dave Smith...
Doug Bateman is the Director of Training at NewCircle, where he oversees the quality and direction of NewCircle’s training offerings.
Doug has delivered over 100 corporate trainings on technologies including Java, Spring, Hibernate, Python, and Android and draws from over 15 years of experience as a professional software architect.
Previously Doug was the director of professional services for The Middleware Company, responsible for training, consulting, and new course development. Some of his notable projects and customers include Cisco, Hotwire.com, HSBC Bank, NASA, and the Florida State water management system.
In his spare time, Doug enjoys sailing and snowboarding.More about Doug Bateman...
Geoff spends most of his time leading a team developing specialized Android and iOS apps for law enforcement and regulatorily agencies. He is also an independent app developer with apps on the Apple App Store and Google Play Store. Geoff has been an adjunct professor at Loyola University Maryland in the Computer Science Graduate Program since 2003.
Geoff recently presented an class at AnDevCon 2013 in Boston on Automated Build Processes for Android Apps.More about Geoff Matrangola...
Justin is a driven, entrepreneurial, serial CTO with 35 years in the business of video games, developing and delivering titles on 26 platforms. He is creator/co-creator of dozens of land-based casino and social casual casino games, successfully developing a number of F2P and real-money gaming related properties.
He has worked on such franchises as Civilization, Pitfall, Hotwheels, Tyco, Star Wars, Shrek and Battletanx and with Disney, eBay, Microsoft, Apple, Lucasarts, Activision, Mattel, Vivendi Universal and SONY as clients. Justin has extensive experience with consumer facing commercial software, large-scale websites and other types of digital and physical products.More about Justin Lloyd...
Larry has spent over 16 years leading teams, designing and developing software and embedded systems for multiple markets. His ability to understand complete systems and the software stack has lead to high quality and high performance designs. In addition to developing device drivers, platform software and applications, Larry has developed and presented training for internal teams, end customers and technical conferences on highly technical content. Larry is currently the CTO and co-founder of HiQES, a engineering services company.
Five years ago, Larry was tasked with leading a new team to do Android platform software development, so he has experience diving headlong into new technology. Larry spearheaded internal ramp-up of developers, developing Android kernel drivers and middleware, and native code starting with the first public releases of Android. In fact, Larry was developing native C/C++ services and apps for Android before the first release of the Android NDK! Since that time, Larry has been the lead developer on three different new Android platforms, multiple Android platform extensions and applications.More about Larry Schiefer...
Marius Mailat has been developing commercial software since 2000. His focus is mobile applications architecture and development for Android, QNX and iOS.
He is an experienced Java developer who spent the majority of his career building large-scale Java applications for Xerox and Sabre Travel Network in Germany.
Android projects in which he has been involved are banking interfaces and shopping tools for Android. His interest in the secrets of Android platform was geared towards building Defense Squad Mobile Security app, a free, simple to use and innovative Android security solution. Marius is the founder of the Romanian Android Community Androider.ro which has now around 5000 active members.More about Marius Mailat...
Maximiliano Firtman is one of the leading experts in mobile and web 2.0 development in the Americas today. From development and private consulting work, to writing books and speaking at conferences, to training some of the most advanced software teams around the globe. Max has been a Nokia Developer Champion since 2006 and Adobe Community Champion since 2011. He is the author of the books Programming the Mobile Web and jQuery Mobile: Up & Running, both published by O'Reilly Media. He has also written books in Spanish distributed in Latin America and Spain, such as AJAX, Web 2.0 Para Profesionales. You can follow him on twitter at @firt.
Today Max focuses on HTML5, CSS3, mobile web, multiplatform hybrid development and WPO (Web Performance Optimization). His Mobile Web Programming Blog discusses mobile web development with quite good success finding new things on devices (such as the accelerometer API in iOS) and creating the most complete mobile emulator guide up to now. He has also launched the free service Mobile Tiny URL for easy URL typing on mobile devices. In September 2011 Max has also created a new project Mobile HTML5, a compatibility tableof every mobile platform and its HTML5 support.
Max is the founder of two user groups: ARFUG -official Adobe User Group- and Mobile Argentina; and has organized lot of events in the last years, including MobileCamp and Adobe en Vivo Argentina. Max has presented at many conferences across the US, Europe and South America like Velocity, OSCON, Breaking Development, Nokia Talk, GOTO Conference, Campus Party, Adobe Lite Days, Adobe en Vivo, MobileCamp, and BarCamp.More about Max Firtman...
With over 20 years of experience in the tech industry, Ralph Tavarez has worked with big companies like Texaco, Morgan Stanley, Viacom, and the global cell phone distributor Brightstar. He has prior experience with startups as the CTO of the US division of Submarino.com, the Amazon of Brazil.
Ralph has focused primarily on mobile development, since the launch of the iPhone, and has real work experience with successful apps such as the Android port of Control4, a home automation product available at Best Buy.
As an instructor, Ralph brings current real-world experience to mobile development and practical solutions to common mobile development challenges.More about Ralph Tavarez...
Ron is an entrepreneur and software development consultant. He has a long history of developing for performance and safety critical software, leading development groups, training application and platform developers, and helping companies in the process of board bring-ups. He also has experience with the design and execution of embedded systems products, security best practices and product start-up.
He specializes in all aspects of distributed systems and Android internals. As the Founder and CTO of Nubo, the first Remote Android Workspace for the Enterprise, he is the designer and original developer of the first Android Remote Display Protocol.
Additionally, Ron is a lecturer at Afeka's college of Engineering, where he has developed and taught the first ever academic Android Internals Course. Ron holds a Master's of Computer Science from Bar-Ilan University.More about Ron Munitz...
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)
Understanding how the entire Android operating system is put together is important in order to understand how to leverage everything it has to offer. This module provides an overview of each layer of the stack and its role. We'll look at both the business and the technical design choices. Topics in this module include:
- Design philosophy
- Open Source licenses
- Linux kernel space
- Native layer
- Dalvik VM
- Application layer
Hello Android (90 minutes)
The goal of this module is to have you write a simple Hello, World application. By the end of this module, you should be able to identify main parts of an Android app. You should also be able to verify that your tools are setup properly and that you can run the application on an Android device, either physical or emulated. Topics covered include:
- 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)
Android framework provides some new and different concepts for developing an app. The goal of this module is to introduce you to main components used to create Android apps. By the end of this module, you should have a good idea what Android app building blocks are, and their key properties. For each building block, we'll explore its typical usage, the life-cycle, and gotchas related to the implementation. Most of the focus of this module is on the conceptual understanding at the lines-and-circles level of the design. Topics covered include:
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
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:
- Exercise Monkey
- Monkey Runner
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?
- Overview of Android Testing: unit, functional, integration, black/white box
- Android Testing Tools: JUnit, Monkeyrunnner, UIAutomator/UIAutomatorViewer, Robotium, Espresso
Additional Notes [top]
Android SDK Version
This course is constantly updated for the latest Android SDK, but the instructor will discuss differences between releases as well.
Android is a trademark of Google Inc. Use of this trademark is subject to Google Permissions.
Student Testimonials [top]
This course was great! The pace felt fast at first, but once I got familiar with how the labs are conducted, it turned out to be just right. More courses should follow your approach. I thought the MyTwitter example was perfect for the type of device. Much better than the video store example everyone seems to use.
Excellent Course! Excellent Teacher!
Great course. I wish you did a follow on course. As for topics for that, just allow participants to email you their topics & problems.
The class was superb! I wasn't exactly sure what I wanted to learn or get out of the class, but the class not only got me excited about the subject, but satisfied my curiosity as it evolved.
Great class -useful hands on experience and real time stuff. Right on time for our project as well !Thanks .
I really enjoyed the class. I have never done Android programming before and I learned a lot. The instructor was really great. He was very knowledgable, helpful, and answered a lot of my questions. It was a fun class.
Great Course!...the Instructor Ken is so much prepared, kind, polite, always available to answer to all questions...and he is a GREAT person!
Thank you. Very useful course!
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.
The instructor demonstrated command of Android development and a deep understanding of overall software design concepts. I highly recommend this class.
it's fast, but liked it. lots of material and L10N/I18N topic as well.
Excellent class, instructor had a high degree of expertise in Android and SW engineering best practices. the class was flexible to tailor to my project and interest area.
Marko, GREAT class! Thanks.
Overall, I was very impressed with the course, and I feel very confident designing Android applications.
Overall great course to get started with Android with lots of in dept information on how to do a good working app.
I'm used to a monotonous, conservative approach to teaching, but I definitely enjoyed and preferred the friendly and sometimes goofiness of the instructor. The laughter is entertaining and makes it easier to stay engaged and not get bored... it's definitely a rarity in technical engineering courses.
This course was very informative. It took 1 project and incorporated the main parts of Android and the instructor made it easy to understand. I would recommend it to anyone who is interested in Android development. Its better than reading books!!
Android Bootcamp is one of the best training class that I've attended. The instructor is very knowledgeable and the course structure he designed was pretty good. The hands-on experience of building a sample android app has been a great learning out of this class. I'd strongly recommend this training class and instructor.
Great class. I regret not taking the full week class.
Excellent class, thank you!
Overall, I really enjoyed the class and the experience. Mark is a quirky guy, but a subject matter expert who kept it fun and interesting (except for content provider, that was boring :)).
<p>Dave is amazing! Extremely knowledgeable and a fantastic teacher. Answered all questions in detail and made sure that the content was understood irrespective of ow much time it took.</p> <p>He seemed to have the same level of energy at 9 in the morning and at 5 in the evening. Extremely patient and just happy to teach.</p>
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. :-)
Marko is a great teacher and explains how things work well. I learned a lot during the class. It really worth the trip from Taipei to San Francisco.
Great Hands-on course, learned more about developing Android apps using hand-on experience than a slide show presentation.
Ken is highly knowledgeable in the subject area and gave very concise explanations. His teaching style kept me engaged and gave me all the tools I'll need to continue learning android development. I also picked up a ton of best practices. Overall I found the course to be exactly what I needed!
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.
The instructor has mastered his subject matter and as an bonus he is an excellent developer. The learning wasn't bounded by hours in the classroom but with extra materials and access to instructor's web site, it's a long term benefits.