In Advanced Android™, you will learn advanced topics such as how to create remote services using Binder IPC, how to develop parts of your app in C/C++ using NDK, how Android security is architected, and how to test your code. You will also learn how to use some of the more popular Android APIs such as Audio, Video, Location, Wifi Direct, Sensors and many more.
This course is the sequel to Android Bootcamp and is designed for those who already have basic Android knowledge.
The Advanced Android™ course was recently redesigned and expanded significantly.
You should be familiar with basic Android development. We recommend that you take Android Bootcamp, or have equivalent knowledge.
You should be familiar with the basic Android building blocks such as Activities, Services, Provider and Receivers. You should also be able to create a minimal Android UI and understand your way around the Android SDK tools.
Advanced Android teaches you how to use some of the most popular APIs in Android. This, in turn, allows you to create significantly more powerful apps and to take advantage of everything the Android Framework has to offer.
Advanced Android™ gives you a toolbox that you can use to create professional Android apps.
Native Development Kit (NDK) (3 hours)
Android is put together of about equal parts Java and C. So, it's no wonder that we need an easy way to bridge between these two totally different worlds. Java offers Java Native Interface (JNI) as a framework connecting the world of Java to the native code. Android goes a step further by packaging other useful tools and libraries into a Native Development Kit, or NDK. NDK makes developing C/C++ code, that works with an Android app, much simpler than if one was to do it by hand. Topics covered include:
- What is an NDK?
- Why NDK?
- Java Native Interface (JNI)
- Using NDK
- NDK and JNI by Example
- NDK's Stable APIs
- Lab: NDK
Binder Inter Process Communications (1 day)
Fundamentals of Android Inter-process Communications
This module covers the fundamentals of the Android Inter-process communication based on the Binder. By the end of this module, you will understand how to create bound services, how to send parcels across the process lines, and how to make asynchronious binder calls. We will illustrate the key capabilities of the Android IPC menachism on a working example app that progressively becomes more and more sophisticated. Topics covered include the following:
- Parcelables and serialization
- Binder and IPC fundamentals
- Binding a service
- AIDL and publishing an API
- Creating and binding to a remote service
- Implementing client-side service connection
- The purpose of stubs and proxies
- Passing parcelable data between processes
- Making asynchronous binder calls
Concurrency in Android (3 hours)
Content Providers in Depth (3 hours)
After completing this module students will be able to create and use complex content providers. The module addresses Sqlite, file and network based providers as well as Cursors and optimization issues involved in their use in inter-process communications. The module also addresses URI desing and creating and using access permissions:
- Best practices for SQLite Content Providers
- FIle base Content providers: BLOBs and JSON
- Network based Content providers and caching
- Using Cursors
- Optimizing Cursors for IPC
- URI Design
Testing Android Apps (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. Students will understand and be able to use JUnit both from Java and from the Android platform. They will become familiar with basic IoC coding patterns and be able to use the Mocks provided as part of the Android platform. In addition students will become proficient with other tools: TraceView, Monkey, and the Debugger. 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
- 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
Security for Android (3 hours)
- Overview of Android security architecture
- Application signing
- UserIDs and file system
- Using permissions
- Declaring and enforcing permissions
Android Audio and Video APIs (3 hours)
Android provides a rich set of APIs to support various audio and video playback and recording. In this module, you will learn how to create an audio recorder and playback app, a video recorder and a camera app. Topics covered include:
- Audio playback: Playback and streaming, management of audio policies, hardware and focus.
- Audio recorder: Capturing audio and saving it on the device.
- Video playback: Playback of prerecorded video files.
- Camera: How to record video as well as take pictures in both raw and jpeg formats.
Connectivity APIs (3 hours)
Android provides support for quite a few ways to connect your device to other devices and the cloud. In this module, we'll explore the capabilities of Android connectivity APIs. This module is a comprehensive overview of connectivity APIs. For a deep dive into a specific type of connectivity, look up a related module. For each API, we will look at an example app that illustrates its key features. Topics covered include:
- Wifi Direct
- Best practices: optimizing for battery
Android WebKit API (3 hours)
- Using WebView in your apps
- Building Web Apps in WebView
- Handling page navigation
- Debugging Web Apps
- Best Practices for Web Apps
Android Location API (3 hours)
Location is one of the key features for a mobile device. In this module, you will learn how Android location framework works and best practices for using it. Topics covered include:
- Location service overview
- Using various location providers
- Using location listeners
- Overview of geo coding
- Overview of Google Maps external library
Sensor API (3 hours)
In this module, developers will be introduced to the Android Sensor Manager and the APIs for the devices it controls. You will learn to use each of the standard sensors, such as temperature, light, pressure, acceleration, motion, and orientation. Topics covered include:
- Introduction to the Sensor Manager
- Overview of various sensors
- Listening to sensors and processing sensor data
- Best practices for working with sensors
Device Administration API (3 hours)
Device Administration API provide a framework for creating apps that can enforce certain policies on a device. These policies were designed with the enterprise requirements in mind. In this module you will learn what Device Admin API can and cannot do, as well as how to create an application that becomes an administrator on user's device. Topics covered include:
- Overview of Device Administration API
- Supported policies
- Developing a Device Administration app
- Managing and enforcing policies
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.
James is an experienced developer and has spent a majority of his career building large-scale online applications at Accenture and at several Web-centric consulting firms. He now specializes in training Java developers to be more productive by using the latest technologies and frameworks.
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.
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.
Ron has also presented at a number of conferences, including: Embedded Linux Conference, Android Builders Summit, AnDevCon, WearableDevCon, DroidCon, mdevcon, Mobile World Congress, and CommunicAsia.