Overview
This course enables experienced Java developers to begin writing software for Android devices. The two possible approaches to mobile development (native components vs web applications) are explored in detail, as are the key differences between handsets and tablets. By the end of the course, delegates will be able to design, code, deploy and test components for Android handsets and tablets, and additionally create cross-platform HTML5 web applications that are fully compatible with Android.
Outline
Android Quickstart
- Installing and configuring the Android SDK
- Setting up the Eclipse IDE for Android projects
- The role of each item within an Eclipse Android project
- Specifying supported Android versions and screen sizes
- Creating a simple GUI-based Android application
- Running the sample application in an emulator
- Running the sample application on a real device
Understanding the Android Platform
- Minimum requirements for an Android device
- The Linux-based OS and native libraries
- JSE libraries which are supported on Android
- Introducing the Dalvik Java Virtual Machine
- What makes Dalvik different from a JVM?
- The Dalvik Executable file format in detail
- Services provided by the application framework
- Can an Android device be used as a server?
Building GUI-Driven Applications Part 1
- The class hierarchy of views, widgets and layouts
- Specifying a view hierarchy within an XML document
- How Android processes an XML-based GUI layout
- Specifying a view hierarchy within code
- The essentials of working with each layout class
- Best practices when working with view groups
- Using and combining the standard Android widgets
- Special considerations when accepting textual input
- Different options for attaching event handlers to views
Building GUI-Driven Applications Part 2
- Reacting to the device's screen being rotated
- Storing message text in resource files
- Adding user preferences to the application
- Using adapters to bind views to data sources
- Customising widgets using styles and themes
- Creating new widgets by extending existing ones
- The Infrastructure of an Android Application
- Understanding the lifecycle of an Activity
- How to preserve mutable state via callbacks and bundles
- Starting one activity from another via intents
- Processing intents using filtering and receivers
- Creating and using files in a range of locations
- Performing tasks concurrently via AsyncTask
Expanding the Scope of your Application
- Learning the Apache HttpClient by talking to a POX Web Service
- Using the HttpClient to communicate with RESTful Web Services
- Options for interacting with SOAP Web Services
- Interacting with the social, calendar and voicemail APIs
- Starting and communicating with your own services
- Persisting data via the built-in SQLite database
- Sharing data across apps using content providers
- Using native code to access the underlying OS
Securing Your Android Application
- The Linux and Android security models
- How security is applied at the process level
- How security is applied at the filesystem level
- How user preferences and DB content are secured
- Working with standard application permissions
- Creating new types of application permissions
- Restricting access to components and intents
- Using cryptography APIs directly in Android
- Building Applications for Android Tablets
- Differing expectations that users have for tablet apps
- Taking advantage of additional resources and screen size
- Working with Fragments in Android
Web Application Development for Android Devices
- Review of existing web app development technologies
- A detailed introduction to the new features in HTML5
- Using jQuery Mobile to simplify creating your UI
- Designing pages for use with restricted screen sizes
- Validating forms when the screen size is limited
- Incorporating geolocation information into web apps
- Special considerations when targeting Android devices
Requirements
Delegates should have a minimum of 3 years development experience in either Kotlin, Java or C#. At least one of these years should have been in web application development so that they have a basic working knowledge of HTTP, HTML, CSS, JavaScript and XML. Basic familiarity with Android-based products is very helpful but not essential.