U.K. freephone: 08000 438 478
train@cogentlogic.com

Android Training

We offer a comprehensive Android training course for Java developers and an advanced Android training course for Android developers needing to progress. We provide a Java training course too. All courses are hands-on and of five days duration.

Advanced Android App Development
The course starts with coverage of Android Studio, intended for delegates not yet familiar with the IDE. Overlays and view flippers provide straightforward examples of Android development that also give delegates practice using Android Studio.

We progress to consideration of different API Levels in the same application, using Drag and Drop and View Pagers as examples with and without direct backward compatibility, the latter through the Android Support Library.

Custom components offer a way to create controls that conform to our own designs and integrate with the IDE.

It is commonplace for Android apps to call server-based APIs running on our servers, typically as RESTful web services using JSON. Such calls enable us to provide customers with access to realtime information and access to their account settings, e.g. billing details. We can implement secure logons through OAuth. Android provides a WebView enabling us to present users with current interactive content, within their apps, that comes from our servers.

We move on to cover broadcasts, broadcast receivers and services, including our own notifications and foreground services that provide user-interaction. Library projects are a convenient way to implement services because they can readily be reused as a component for multiple apps. (The service approach is almost obligatory and certainly desirable for most non-trivial apps, as will be made clear in the last four course modules.)

For apps that perform time-intensive tasks we usually need to make use of threading to ensure that our apps remain responsive to the user and, frankly, to ensure that they just plain work! Threading (or multithreading, if you like) is covered in detail, including traditional Java threads and Android's AsyncTasks. Of course, background threads are pretty much synonymous with asynchronous processing so it is natural also to want to delay or repeat tasks using timers. We often want our asynchronous tasks to complete without the system going to sleep on us: we can use WakeLocks to achieve this.

Android devices typically provide a range of sensors, giving our apps feedback about motion, position and the environment. We cover the common sensors in detail and this leads us into location services and maps.

The Android Device Administration API enables us to customise the way our employees use the devices we provide for them. For example, we might want to streamline their access to e-mail servers and enhance security by implementing remote control features.

Network connectivity is often a crucial service for an app. We need to know when we have network access, how to recognise when we don't have it and how to deal with intermittent connections. Our apps need to provide the user with a robust and seamless experience that transcends the vagaries of unreliable network connectivity. We also cover Bluetooth and NFC interoperability between devices.

There are a great many C/C++-based libraries out there. In fact, your company or organisation may well have proprietary libraries that have been developed over a number of years that provide crucial services and a range of in-house software. Such libraries can be used by Java software, including Android apps, through the Java Native Interface (JNI). Android exposes native functionality through its native development kit (NDK).

We provide you with a new Android device that you will configure for root access. You will then see how easy it is to access the entire filing system and to do network protocol analysis for testing and debugging purposes.

We can use OpenGL ES through Android NDK both for 2D and 3D rendering and we explore how to do just that.

Cryptography made available to us through the Android SDK is both restrictive and open to abuse by government agencies, hackers and other disreputable entities. We can, nonetheless, implement genuinely secure software solutions that transcend these limitations. Cogent Logic provide one-day cryptography training courses for Java and C developers. On this Advanced Android App Development course we provide an introduction to secure software by covering symmetric-key and asymmetric-key cryptography.

Google Cloud Messaging for Android (GCM) enables us to send messages from our servers to our apps, keeping users up-to-date with current data and informed of events as they happen.

Finally, we consider how to develop robust apps, making use of a service-based paradigm that treats Android activities as fickle transients! We see that system-provided settings don't really work that well, at least not across all devices, and see how we can implement our own reliable settings system. We discover how to easily test our apps across hundreds of devices and go into depth about what is probably the most important part of this course: self-monitoring and reporting as a means to develop our way out of the awfulness that is support tickets!

As you can probably tell by now, we understand the advanced issues involved in Android development because our course developers and trainers have the experience that comes from years' of commercial Android development. We've been there and are still there and we can prepare you for the same!

Course modules:
  • 1 Android Studio (IntelliJ IDEA)
  • 2 Overlays (FrameLayout)
  • 3 View Flipper
  • 4 Handling Multiple API Levels – Drag and Drop
  • 5 View Pagers
  • 6 Custom Components (controls)
  • 7 RESTful Web Services and JSON (Geocoding)
  • 8 OAuth
  • 9 WebKit (WebView and Javascript)
  • 10 Broadcast Receivers and System Broadcasts
  • 11 Services
  • 12 Library Projects
  • 13 Notifications
  • 14 Foreground Services
  • 15 Threading and AsyncTasks
  • 16 Timers
  • 17 Wakelocks
  • 18 Sensors
  • 19 Location Services and Maps
  • 20 Device Administration Apps for Enterprises
  • 21 Managing Network Connectivity (Airplane Mode and Network State Changes)
  • 22 Bluetooth
  • 23 Near Field Communication (NFC)
  • 24 JNI
  • 25 Android NDK
  • 26 Rooting Devices for Debugging (File System Access and Network Protocol Analysis)
  • 27 OpenGL ES
  • 28 Symmetric Key Cryptography
  • 29 Asymmetric Key Cryptography
  • 30 Google Cloud Messaging for Android (GCM)
  • 31 Building Robust Apps
  • 32 Automated Testing on Hundreds of Devices
  • 33 Implementing Reliable Settings
  • 34 Reducing Support Tickets: Self-Monitoring and Reporting Apps

Copyright © 2012  Cogent Logic Ltd.          The Android logo is a trademark of Google. 'Ruby on Rails' and the Rails logo are trademarks of David Heinemeier Hansson.