keep me informed
Like Us on Facebook Follow Us on Twitter Watch AnDevCon on YouTube connect with andevcon on linked in
Catalog
Hotel
Classes
Tutorials
Speakers
Register Now
Exhibit at AnDevCon
Android Developer News
sponsors
PLATINUM
BlackBerry
Intel
Qualcomm
GOLD
Airpush
AT&T Developer Program
Comcast Interactive Media
New Relic
PayPal Developers
SecureAuth
Symantec
SILVER
Amazon Appstore
froglogic
NETGEAR Developers
Perfecto Mobile
Pluralsight
Samsung Developers
Scandit
StartApp
Windows Azure
OTHER EXHIBITING COMPANIES
Adaptive Digital
Apress
Artifex
Crittercism
dot42
Immersion
LEADTOOLS
Millennial Media
NVIDIA
R.BOT
Twitter
uTest
BAG INSERT SPONSOR
DeNA
START-UP ALLEY
BugSense
Livio Connect
Zumero


 


CCR Registered
CCR Registered

AnDevCon Classes 2013
Choose from more than 65 classes on mobile app development and put together your own custom Android developer training experience. Whether you need beginning Android 101 classes or the most hardcore deep dives into embedded Android, you will find the training you need at AnDevCon. A rigorous review of the classes after each conference allows us to weed out the weaker classes and speakers. Classes at AnDevCon average almost 9 on a ten-point scale and classes scoring below an 8 are not invited back. No wonder AnDevCon is the largest Android developer training conference in the world.
class description box
Filter classes by :
Day                         Time Slot
Speaker  Level  Topic Area  Clear Filters
Wednesday, May 29
10:00 AM - 11:15 AM

A Deep Dive into Renderscriptstarburst image Has code image

Due to Android’s use of Java as the primary development language and environment, many developers believe the only way to support high-performance mathematics for items such as highly computational 3D graphics is to develop most of their applications in native code (C/C++) using the Android NDK. Introduced in Android 3.x as a simplified way to boost performance of mathematical calculations and 3D graphics operations, Renderscript offers a compelling alternative without requiring the developer to deal with native code and JNI.

In this class, we will cover what Renderscript is, then dive into typical use cases, pitfalls and debugging. The underlying details of the Renderscript implementation will also be covered, so you gain an understanding of the technology.

Additionally, we will cover Renderscript usage and an in-depth examination of its capabilities and underpinnings. The class will include code samples to demonstrate the technology as well as reviewing the internals. You should be familiar with Android development and the Android SDK tools. Previous knowledge of 3D graphics is not required.

Level: Intermediate
Topic Area: Developer Essentials
Android Fundamentals: What I Wish I Knew When I Started! image

This introductory class is for relative beginners – that is, experienced programmers who have little or no experience with Android. Before you attend this session, you will be expected to have already installed the SDK, done a Hello-world tutorial, and have a basic knowledge of the building blocks of both Java and those that comprise Android: Activities, Intents, Services, Content Providers, Broadcast Receivers, Views and the Manifest.

In this case, we’ll present simple application development best practices as well as design patterns to avoid.  Here are a few we’ll cover:
  • Activities are not applications.  This is important for several reasons, but it’s an oft-made beginner mistake.
  • The UI thread and when you should stay away from it.
  • How to deal with many screen resolutions (Hint: NEVER use an  AbsoluteLayout).
  • Critical differences between Android and other mobile platforms.
New to Android? This class will make you feel right at home.

Level: Overview
Topic Area: Developer Essentials
Android Performance Tipsstarburst image Has code image

Android application development, like every other client side technology, can suffer from basic performance issues. This class looks at how to identify performance bottlenecks in your app using open source and commercial load testing tools during development. We'll take a look at some classic examples of why your app is under performing and what options you have to optimize your Java code and when you should and should not move to the NDK. Finally, we'll also look at how to use analytics to make sure your app remains fast and responsive after it is released.

Level: Advanced
Topic Area: Developer Essentials
BLE (Bluetooth Low Energy) Is Finally Here for Android!starburst image Has code image

BLE in the past year has exploded. From the numerous kick-started startups to larger players taking advantage of lower-cost BLE hardware implementations. From health and fitness to home automation. From entertainment, sports and security to a seemingly constant stream of new innovative use cases.

We'll look at the BLE specification in detail, the GATT protocol, and the 30+ BLE profiles and services, from alert notification to transmission power and more.

We'll look at the history of the spec, but specifically focus on the history of Android-supported devices and the chipsets they use (from Broadcom to TI), and of course review the current list of BLE ("Smart Ready")-enabled Android devices.

We'll focus on best compatibility practices when using the several APIs available to date in order to support as many devices with your BLE Android applications. Since not all the devices will support the latest Android API, you'll learn how to roll your own compatibility wrapper. And we'll also look at debugging tools and techniques in a hands-on coding session.

We'll connect to actual BLE devices to be demoed during the session, such as wristwatches, heart-rate monitors, key fobs, and possibly even forks, eyeglasses, toys, stickers and more. BLE device-development kits will be reviewed with a walkthrough on developing your own BLE device.

Yes, BLE has been available for some time for IOS developers, but the good news for Android developers is that you can write BLE apps right now for off-the-shelf BLE devices even if they currently claim only iOS support.

Level: Intermediate
Topic Area: Developer Essentials, Embedded Android
Developer Tools Essentials, Part I Overview Has code image

Developing Android applications can be challenging. Luckily, there is a robust set of tools that helps simplify the process. This two-part class will present an overview of the tools currently available as part of the standard development environment.

During the first part, we will describe the most important tools, show how to configure them properly, and demonstrate their effective usage. We will spend some time discussing how to effectively integrate the tools into your workflow so you’ll be able to develop more productively. Throughout the class, we will highlight some important shortcuts that will make your development easier and more efficient.

This class is appropriate for all levels of developer; it will cover the essential tools that Android developers use in their normal workflow. We will highlight the most important tools that you will use to create and develop applications. This class will also focus on the basic tools, including ADB, DDMS, the emulator, the UI designer and the ADT plug-in tools.

We will use an Eclipse-based project to demonstrate the important concepts, so it is recommended (but not essential) that you have the current Android tools installed on your machine to follow along.

(Part II: Developer Tools Essentials, Advanced.)

Level: Intermediate
Topic Area: Developer Essentials
Introduction to Android Animation Has code image

Over the past year, the quality of apps in the Android market has increased substantially. Developers are taking Android UI seriously and producing beautiful apps every day. Animations can be a great way to add that extra level of polish that makes your app really stand out, while providing the implicit visual cues that make your app intuitive to navigate.

Using detailed code examples, this class will show you how and when to implement animation in your own Android apps. In this class, you will learn:
  • The major animation APIs in Android, including Drawable animation, View animation and Property animation
  • How to create natural-looking animations using Interpolators
  • Shortcuts to animating your UI using ViewPropertyAnimators, AnimationSets and layout animations
  • Performance tips, gotchas, and best practices to ensure your animations are tasteful and beautiful
This class is intended for developers familiar with Java and the Android framework. You should understand the basics of Android views, how to create XML layouts, and the Activity life cycle.

Level: Intermediate
Topic Area: Developer Essentials
11:30 AM - 12:45 PM

A Deep Dive into ViewPagerstarburst image Has code image

ViewPager, introduced nearly three years ago, is now the foundation of many Android app UIs, yet not everyone has experienced it or explored all its possible uses. This class will start with a basic introduction of setting up ViewPager, before covering all sorts of fun things you can do with it, including:
  • Integrating ViewPager with the action bar
  • Showing multiple pages at a time
  • Writing custom PagerAdapters for specialized circumstances
  • Using a ViewPager on some devices (phones) with side-by-side fragments on other devices (tablets), and more!
To get the most out of this class, you should have basic Android application development experience.

Level: Overview
Topic Area: Developer Essentials
Battle-Tested Patterns in Android Concurrency Has code image image

Make use of those extra cores in your new device! The newest generation of Android devices contains multiple cores, which when used properly can boost the performance of your application and enable a buttery smooth user interface.

However, threading and concurrency are never easy. There are many options for parallelization and backgrounding of the work that an app has to do, but which solution is appropriate for which circumstance? And what are the specific problems that can come up that are unique to Android?

In this class, we'll cover the upsides and downsides of plain Java threads, AsyncTasks, Loaders and Services. We'll discuss the situations where concurrency is necessary, and proven patterns that solve those problems. You will also take home working code samples that demonstrate these patterns.

To get the most out of this class, you should be an experienced Android developer, and have a general understanding of Java and threading.

Level: Advanced
Topic Area: Developer Essentials
Developer Tools Essentials, Part II Advanced Has code image

Android application development has many challenges. Applications get complicated fast, and it can be difficult to isolate performance issues or identify bugs. There are a variety of tools included in the standard Android developer toolkit that help identify issues quickly. Knowing how to use the tools effectively will help you produce better applications.

During the second part of this two-part class, we will demonstrate the advanced developer tools. We will show how to configure them properly, demonstrate their effective usage, and suggest some key use cases where the tools are most effective.

This class will highlight the advanced developer tools that will allow you to take your development to the next level. The class will focus on the tools used to identify performance or UI issues. These include Traceview, Hierarchy Viewer, Lint, Monkeyrunner and others.

We will use an Eclipse-based project to demonstrate the important concepts, so it is recommended (but not essential) that you have the current Android tools installed on your machine to follow along.

(Part I:  Developer Tools Essentials, Overview.)

Level: Advanced
Topic Area: Developer Essentials
Enterprise Infrastructure, Tools and Tricks for Teams Developing Android Applicationsstarburst image Has code image

Have you been developing Android applications for a while? On your own? And there is just too much to do? Congratulations! But what next? Android application development is growing up, and larger and larger teams are working on multiple mobile applications. And these applications have to tie back into one or many server-side enterprise applications. The complexity of a typical Android application requires the use of a number of external libraries for interoperating with Web services and other systems; abstracting the Android API across platform versions; improving the performance or maintainability of the source code; and many more aspects. Learn about a number of great libraries available as open source, where to get them, and how to start including them into your application easily.

As a next step, we will learn about repository management. Learn how to enjoy great build performance and stability, and how to gain access to an easy mechanism to distribute your own libraries and components internally as well as to partners and clients. Once you are using a repository manager, you will be able to easily distribute your applications across teams and potentially implement a multi-stage release process with notifications and rollbacks, if necessary.

Using all these libraries brings tremendous benefits to you. It however also means that you are responsible for license compliance, and we will show you some accepted practices for ensuring that your applications comply. Unfortunately, these components can be affected by security issues as well. We will examine the ideas of Component Lifecycle Management, and check out some of the tools available to help you take control over potential security and license issues.

Once your development efforts scale even further, you will need to examine your version-control system usage. We will look at a few practices for using branches effectively and ensuring that development efforts on multiple features integrate well. Adding a continuous integration server into your development infrastructure will allow you tie everything together.

Level: Intermediate
Topic Area: Developer Essentials
Leveraging Android's Linux Heritage Has code image

Although Android is built on top of Linux, it uses almost none of the components traditionally found in a standard Linux distribution or an embedded Linux system. Can "classic" Linux apps be made to run with or under or on Android? Can such apps be made to "talk" to Android components and vice-versa? Beyond getting the basic BusyBox, glibc and glibc-compiled apps running under Android, this talk will go over some tips and tricks for making classic Linux apps coexist and interact with the Android stack on the same Linux kernel.

This presentation is for embedded developers wishing to understand how they can leverage "legacy" Linux and "embedded Linux" applications and software components in an Android environment. It assumes familiarity with Linux and "embedded Linux." To benefit fully from this presentation, you should also be familiar with the basics of Android's internals or have attended the “Embedded Android” tutorial.

Level: Intermediate
Topic Area: Embedded Android
Performance Challenges in Facebook Feed Developmentstarburst image Has code image

In 2012, major components of the Facebook for Android app were rewritten, including News Feed and Timeline. Previously, these components were mainly a hybrid of Web and native technologies; however, native doesn't mean it will be fast. In this class, we will discuss the major performance challenges faced and how they were nailed out. Topics will cover architectural design, GC and memory optimization, as well as view optimization and more.

Level: Intermediate
Topic Area: Developer Essentials
1:45 PM - 2:15 PM

Android Apps on BlackBerry 10 image

The BlackBerry Runtime for Android apps allows you to quickly and easily repackage your existing Android applications to run on BlackBerry 10 smartphones and the BlackBerry PlayBook tablet, allowing you to deploy and monetize your apps to a brand new audience via the BlackBerry World storefront. Join BlackBerry’s expert on Android to learn how you can expand your user base to the completely redesigned and reinvented BlackBerry 10 mobile computing platform.

This class is sponsored by BlackBerry.

Level: Overview
Topic Area: Developer Essentials
BYOD Is a Risky Business, but Only for the Unprepared image

We are well into the age of information. BYOD is not a fad. Employees have a wide variety of mobile devices in which to connect to the network. Cyber security professionals need a proven way to enforce and extend identity governance from the enterprise across a plethora of mobile devices. An employee’s lack of security can now be your emergency. Who is responsible from a legal standpoint?

BYOD statistics:
  • 81% of employees use at least one personally owned electronic device for business (Harris Interactive survey, February 2012).
  • 59% of employees surveyed use mobile devices to run line-of-business applications (Ibid).
  • 74% of companies allow BYOD usage in some manner (Aberdeen Group, February 2011).
  • 50% of companies have experienced a data breach due to inadequate device security (Ponemon survey, 2012).

This class is sponsored by SecureAuth.

Level: Intermediate
Topic Area: Developer Essentials
Don’t Lose That Key! The Importance of Code Signing on Android image

For Android developers, the open nature of the Android platform allows for great freedom and creativity in the building of applications relative to more-restrictive platforms, but it can also leave the door open for developers with malicious intentions. Google has established baseline security practices for developers in its Android SDK, but even these measures can’t catch everything. Just last April, Google Play removed 29 data-stealing applications that mimicked popular games in Japan after they were identified by Symantec.

One way developers can mitigate the risk of Android application mimicry is through code signing. While Android requires all code to be signed, it is not a perfectly secure process. Developers can sign with a certificate they create on their own, but trusted third-party authentication from a Certificate Authority has never been required. Also, that certificate has to be valid for a minimum of 25 years, and upon releasing a newer version of an app, the developer needs to find the original certificate and resign the code, otherwise the older version of the app will remain on the user’s device instead of being replaced. For corporate developers, even more complicated accountability issues exist.

Attend this class to learn about these security issues for developers, as well as best practices for good security hygiene in mobile application development. Additionally, you will see a code-signing solution that allows for better key management, auditing and reporting of apps signed, as well as secure storage of apps and keys.

This class is sponsored by Symantec.

Level: Overview
Topic Area: Android Business, Developer Essentials
How to Get Early Access to Next-Generation Mobile Processors image

The amount of tools available to mobile developers has exploded over the past three years, giving you the ability to look beyond simple Nexus devices and use hardware designed specifically for your needs. Qualcomm provides developers special hardware with the latest Snapdragon processors, months before they are available in commercial devices. This allows you to produce apps with advanced capabilities that are ready for consumers the minute a given processor is available. Examples of these capabilities include: UltraHD 4K video, console-quality 3D graphics, dedicated DSP, camera-based and ultrasonic gestures, gigabit networking and more.

These mobile development platforms are available in the form of smartphone, tablet, SoM and mini-ITX development boards. One of the most unique features of this hardware is its ability to work with bundled software that can display actual power usage by different hardware subsystems like the CPU, GPU, screen, memory, Wi-Fi, and audio. This makes it possible to accurately measure and optimize power usage by a single app.

These devices also come with access to special SDKs for graphics, augmented reality, advanced sensor support and more. As the app economy grows and the Android app space becomes increasingly crowded, these tools are essential in order to produce the most power-efficient apps that take advantage of the newest features.

This class is sponsored by Qualcomm.

Level: Overview
Topic Area: Developer Essentials
The Basics of Mobile Payments image

Mobile payments are gaining traction all over the world. It is believed that by 2020, cash and cards could be replaced by swiping smartphones. This class provides a deep dive into mobile payments and how they are changing the face of payments. The class aims to answer: What are mobile payments? What are mobile payment systems around the world? And what are important considerations when building a mobile payments solution?

This class is sponsored by PayPal.

Level: Overview
Topic Area: Developer Essentials
2:30 PM - 3:45 PM

Building Your First Social Appstarburst image Has code image

In this class, you'll get an introduction to Facebook's APIs and SDK for Android. We'll show you how to use Facebook Login to make signup simple; personalize user experience by fetching user data into your app; and let people share stories from your app with their friends.

This intro class assumes no prior knowledge of developing with Facebook. We will provide sample code and walkthroughs. By the end, you will have built a simple social application.

To build on information learned in this class, attend "Making Sticky Social Apps."

Level: Intermediate
Topic Area: Developer Essentials
Java and the Android Stack: A Security Perspectivestarburst image

As mobile devices become an integral part of an individual's daily life, security and privacy are of paramount importance. Mobile platforms like Motorola's Linux Java, which was a derivative of Java, followed Java's security model. With Android, the story is not the same. With its layered architecture, security in Android begins from the platform. Most of the development on Android is done using Java. So a natural question is, does Android follow Java's security model?

This class will discuss both Java and Android security models in detail. We will discuss Java’s sandbox model, JVM, security manager, access controller, class loaders, and language and application security. For Android, we will discuss the Android platform, Crypto APIs, and application-level security. We will then try to summarize and draw conclusions on whether or not Android follows Java's security model. You will walk away with in-depth knowledge of both the Java and Android security model, and will be aware of security artifacts in Android that you can use to develop secure applications.

Level: Overview
Topic Area: Developer Essentials
Optimizing Android UI: Tips for Creating Fast and Responsive Applications Has code image image

Building a successful Android application requires more than just putting something in the market. If you want to delight your users, you have to create an app that smoothly animates and is responsive to the touch. Details matter. No one likes to use an app that stutters during scrolling and fails to respond to taps.

In this class, you will learn practical techniques you can use to speed up the drawing of your UI. With detailed code examples, you will learn:
  • Strategies for moving long-running operations off the UI thread, including how to effectively use Handlers and Services
  • How to create smoothly scrolling lists by reusing views and implementing the ViewHolder pattern
  • Using ViewStubs, RelativeLayouts and GridLayouts to optimize the drawing of your UI
  • How you can use Loaders to keep your UI updated with asynchronous changes in your database
This class is intended for people already familiar with Java and the Android framework. You should understand the Activity life cycle and how data adapters work, and have a basic understanding of Android’s XML layout.

Level: Intermediate
Topic Area: Developer Essentials
Patterns for Connected Apps, Part Istarburst image Has code image

Nearly every successful app today relies on connectivity to provide a compelling user experience. While third-party APIs and cloud services provide a very simple way to implement connectivity, there are times when you may want to implement your own connected features and retain complete control of your assets. This class will provide you with several useful basic patterns that can be used as building blocks to implement your own server-based features.

What we'll cover:
  • Working code examples and demos. Both the Android code and server-side PHP will be presented.
  • Basic connectivity patterns will be presented, including an approach for determining Internet connectivity and displaying real-time status and server availability. A splash screen implementation will be covered, including background downloading of static content.
  • Apps often rely on images of large size or quantity, which must be downloaded. This can easily lead to out-of-memory conditions. Lazy loading and caching examples for the ListView, GridView and Gallery widgets will be presented, which allow image-heavy apps to function well even when an Internet connection is not available.
This class will also provide examples using HTTP get and post functions to implement dynamic spinners for centralized server-side data such as filename lists, as well as a server-based approach for accepting feedback and sending e-mails from within your app. Additionally, the class will provide ideas and examples, enabling you to implement your own connected features, several of which will be covered in the companion class, "Advanced Patterns for Connected Apps." We will conclude with a question-and-answer session.

(Part II: Advanced Patterns for Connected Apps.)

Level: Intermediate
Topic Area: Developer Essentials
Renderscript Rosetta Stonestarburst image Has code image

Renderscript is another tool in the developer's toolbox, and the greatest challenge is knowing when to use it. On every Android device, there are a number of languages and frameworks, each of which provides a different level of support for creating performant code. Java is the lingua franca of Androids powered by the Dalvik VM/JIT. The NDK gives you the near-metal abilities of C/C++. Renderscript is another framework geared toward making the most out of multicore devices, and it has its own pros and cons.

This class will cover the various engines that are in everyone's hands and go through at least one example of the same algorithm implemented in various frameworks to see how they are put together. Performance and debugging comparisons between the various versions will be discussed. Familiarity with C and threads is useful to follow the discussion, but direct experience in a non-Java language is not required. By the end, you should have a better understanding of trade-offs and issues while using Renderscript.

Level: Advanced
Topic Area: Developer Essentials
Tips, Tricks and Secrets of the Android Multimedia APIs Has code image

Some of the most compelling uses for Android devices involve rich media. In this class, you will learn to use the APIs that Android provides for audio and video, and how best to integrate them into your app.

We will cover the MediaPlayer component, which plays audio and video streams at a high level. This is good for prerecorded content, but more advanced audio processing requires more control. For those needs, we will cover AudioTrack for audio playback and AudioRecord for recording. And for professional purposes, we will also briefly discuss the new media framework in Jelly Bean. You will leave with working code samples for each of the APIs discussed, including Jelly Bean's MediaCodec for decoding raw audio.

To get the most out of this class, you should have some Android development experience, and a basic understanding of how digital audio and video works.

Level: Advanced
Topic Area: Developer Essentials
4:00 PM - 5:15 PM

Advanced Patterns for Connected Apps, Part IIstarburst image Has code image

Nearly every successful app today relies on connectivity to provide a compelling user experience. While third-party APIs and cloud services provide a very simple way to implement connectivity, there are times when you may want to implement your own connected features and retain complete control of your assets. This class will provide you with several advanced patterns that can be used as building blocks to implement your own sophisticated server-based features.

The class will demonstrate working code examples. Both Android code and server-side PHP will be presented. It is recommended that you have a basic knowledge of HTTP and server-side programming.

A centralized server-based voting and commenting system will be designed and implemented, which will allow users to rate content and share comments within your app. Although Android provides a simple RatingBar widget, a server-based approach is ultimately required to allow your app to support networked voting and commenting. 

Displaying stylish in-app charts of dynamic datasets is not a trivial task. The class will review several approaches, including in-app libraries and server-side generation. A server-based solution will be presented that allows apps to display attractive charts generated from centralized server-side data.

Writing and debugging server-side scripts can be time-consuming, especially when you want to focus on your Android apps. A searchable streaming video platform will be presented that leverages open-source Content Management System components and plug-ins to streamline development of a complex project. With basic connectivity patterns and a huge library of open-source server components, the possibilities for our Android apps are endless! We will conclude with a question-and-answer session.

(Part I: Patterns for Connected Apps.)

Level: Advanced
Topic Area: Developer Essentials
Agile Androidstarburst image Has code image

There's no reason why agile practices and Android can't go hand in hand. Learn how to add TDD (test driven-development, or unit tests) and BDD (behavior-driven development, or functional tests), as well as continuous integration environments, to your next Android project. Using Robolectric, Cucumber gems and a Jenkins server, this class will walk you through how to quickly get started with adding agile best practices to your Android projects.

Level: Advanced
Topic Area: Developer Essentials
Android Application Security by Examplestarburst image Has code image

This class is all about securing Android applications. Security is an integral part of all applications, including gaming, social, commerce and local. We will cover the essentials of getting Android components, secure inter-component interaction, permissions, manifest file artifacts, and crypto APIs. We will also cover some emerging technologies and experiments on Android, like NFC and payments. All of this is done with plenty of code snippets that you can directly use in your apps. At the end of the class, you will walk away with an in-depth knowledge of Android application security and examples of doing it right.

Level: Intermediate
Topic Area: Developer Essentials
Android as the New Embedded Linux

Linux has been used in embedded systems for quite some time now. "Embedded" in fact represents a substantial part of Linux's use. Yet, to this day, there's no single definition of what "Embedded Linux" is. For all practical purposes, "Embedded Linux" remains a set of ad hoc recipes for building embedded systems based on the Linux kernel, each such system requiring a separate API spec and license vetting.

Android on the other hand is a shrink-wrapped embedded Linux distro that has a stable, consistent API, a growing developer community, and OEM-friendly licensing. Will these benefits make Android the default building block for Linux-based embedded systems? If so, what does that mean for the wider embedded world in general?

We will look at the history, architecture and drivers behind each, and discuss what the future likely holds.

Level: Intermediate
Topic Area: Embedded Android
Building an Efficient Background Sync Engine Has code image

It's a problem felt by nearly all mobile software developers: How do you get data from a remote source into your application without making users wait, filling up their hard drives, or destroying their batteries? In this class, you will be shown how to build your own persistent data cache so that your users can have fast, clean and efficient data instantly at their fingertips.

We will also discuss Sync Adapters, Content Providers, and networking tricks for efficiently and quietly moving data into—and out of—your mobile applications.

Level: Intermediate
Topic Area: Developer Essentials
Making Sticky Social Appsstarburst image Has code image

Good social apps keep users engaged and interacting with their friends. This class will build on "Building Your First Social App" to show you how you can create apps that keep users coming back—and sharing with their friends. We'll introduce you to Open Graph, and show you how to create compelling stories that will drive traffic to your app. This class will also briefly cover ads and promotion on Facebook.

This class assumes some knowledge of Facebook's APIs. We will provide sample code and walk through a simple Timeline app.

Level: Intermediate
Topic Area: Developer Essentials
Thursday, May 30
8:30 AM - 9:45 AM

A Developer's Dream: Never Having to Talk to a Lawyerstarburst image

Navigating through HTML code is easy enough, but have you ever had to talk with a lawyer? Talk about an entirely different language! They don’t answer your questions. They qualify everything they say. And they use a language that only they understand. If you develop mobile apps, the last thing you want to do is attempt to navigate through the legal system.
 
The instructor regularly advises clients, in their own language, on how to avoid entering a legal maze with no exit. He is an attorney, but one that addresses the needs of the mobile app developer in a clear and concise manner. His guidance in this class will help you understand what you need to know about online privacy, and how to best maximize your Internet presence without spending time in a court room.

Level: Overview
Topic Area: Developer Essentials
Android OpenGL ES Essentials, Part I and II Has code image

Ready to make some hardware-accelerated triangles? This two-part, 150-minute class will start with the basics and work up to some high-class code snippets that will get your graphics flying. This "OpenGL 101" class still requires a basic understanding of Android development, but even a seasoned graphics programmer may still learn a thing or two.

Level: Intermediate
Topic Area: Developer Essentials
Creating ePub Books for Android Has code image

Thinking of writing or creating an eBook? Come to this class to learn what ePub is (hint: It's a limited subset of XHTML), and how Android handhelds and tablets are different from the Kindle. We'll talk about limitations to the format and what types of material lend themselves to ePub. We'll also leave a chunk of time to discuss specific challenges (technical or conceptual) with your eBooks, so bring your questions. Participants will leave this session with a good understanding of what tools are available for creating ePubs, when not to use ePub, and how to submit your ePub book for sale via various channels.

Level: Intermediate
Topic Area: Developer Essentials
Effective Android HTTP, Part I and IIstarburst image Has code image

This two-part, 150-minute class provides an overview of three Android HTTP clients: HttpURLConnection, Apache HTTP Client, and OkHttp. You will learn the relative merits of each, and then dive into a full set of problems and solutions that most apps need to handle.

We'll start small, making a basic HTTP request from an Android app. Next, we'll learn how to monitor that HTTP request using Charles, an HTTP debugging proxy. Once we've seen all the moving parts in place, we'll unit-test our HTTP code with MockWebServer.

Once the groundwork is in place, we'll walk through typical problems and their solutions. We'll upload resources (without exhausting memory), configure a cache (and the corresponding server), compress content, harden SSL, and discuss authentication. We'll provide concrete examples of how to map REST APIs to Java interfaces using Retrofit. And we'll provide best practices and an example for downloading resources in the background.

Attend this class to see that the HTTP protocol is very flexible, and how to make it work in your applications while conserving bandwidth and battery.

Level: Advanced
Topic Area: Developer Essentials
Hacking APKs for Fun and Profit (Mostly for Fun), Part I and II Has code image image

Dive deep into the internals of Android in this two-part, 150-minute class. You will explore the wonders of Dalvik bytecode, smali syntax, decompilation tools, patching techniques, and common methods you can use to (try to) protect your apps.

Extremely hands-on, you'll be downloading a very popular app, modifying it, and messing around with its behavior. Even if you're not that interested in APK hacking, you'll leave this class with the sort of deep appreciation for Dalvik that makes good Android developers great.

Level: Advanced
Topic Area: Developer Essentials
Inside Android's User Interface Has code image

Android is a very complex stack, comprised of several dozen novel components and moving parts. Still, it's intrinsically a user-centric system and, therefore, the parts that deal with the user interface are of special interest to anyone aiming to put Android in a device. This class will examine the internals of Android's user-facing components. Specifically, we will cover the inner workings and interactions of the Window Manager, Surface Flinger, Input Method Manager, and the rest of the system. We will also cover key display and input components such as the Status Bar, Soft Keyboard and Notifications.

This class will be especially useful to developers intending to use Android in user-facing embedded systems; those needing to implement support for their graphics hardware; and anyone interested in the internals of Android's graphics and input layers.

Level: Advanced
Topic Area: Embedded Android
Mastering the Android Touch System Has code image

This class provides an in-depth look at the Android touch input system. We will examine the inner workings of how Android handles touch events within a view hierarchy. This will include how Android passes touch events between Views, Activities and the Window, as well as opportunities developers have to interact with and modify this chain.

We will then take a look at the affordances provided by the system to handle a variety of standard single- and multi-touch events and gestures, as well as advanced techniques for creating truly custom touch handling.

You should have a strong basic knowledge of working with Android views. Knowledge of the basic click handlers in the view framework is assumed. Sample code will be available ahead of time for those who would like to follow along with the examples.

Level: Advanced
Topic Area: Developer Essentials
11:30 AM - 12:45 PM

Android OpenGL ES Essentials, Part I and II Has code image

Ready to make some hardware-accelerated triangles? This two-part, 150-minute class will start with the basics and work up to some high-class code snippets that will get your graphics flying. This "OpenGL 101" class still requires a basic understanding of Android development, but even a seasoned graphics programmer may still learn a thing or two.

Level: Intermediate
Topic Area: Developer Essentials
Bringing Up Android on Your Favorite X86 Workstation or Virtual Machine, Part I Has code image

This class introduces the concepts of AOSP and how to use it in order to configure and build one of the most popular Android devices available: The Android emulator, for an x86 target. You will then learn a reincarnation of the AOSP, intended to bring Android to as many x86 devices as possible. You will see its structure and compare it with the AOSP, and demonstrate how such a build works within Virtual Box, QEMU and more.

Level: Intermediate
Topic Area: Embedded Android
Effective Android HTTP, Part I and IIstarburst image Has code image

This two-part, 150-minute class provides an overview of three Android HTTP clients: HttpURLConnection, Apache HTTP Client, and OkHttp. You will learn the relative merits of each, and then dive into a full set of problems and solutions that most apps need to handle.

We'll start small, making a basic HTTP request from an Android app. Next, we'll learn how to monitor that HTTP request using Charles, an HTTP debugging proxy. Once we've seen all the moving parts in place, we'll unit-test our HTTP code with MockWebServer.

Once the groundwork is in place, we'll walk through typical problems and their solutions. We'll upload resources (without exhausting memory), configure a cache (and the corresponding server), compress content, harden SSL, and discuss authentication. We'll provide concrete examples of how to map REST APIs to Java interfaces using Retrofit. And we'll provide best practices and an example for downloading resources in the background.

Attend this class to see that the HTTP protocol is very flexible, and how to make it work in your applications while conserving bandwidth and battery.

Level: Advanced
Topic Area: Developer Essentials
Exploring Android SDK Add-ons for Devicesstarburst image Has code image

Android SDK add-ons provide a simple mechanism for allowing a device to expose additional functionality not included in the standard Android APIs. This functionality allows OEMS as well as third-party developers to create applications that include value-added features for specific targets. At the same time, an SDK add-on provides OEMs a way to extend the platform without breaking Android compliance.

This class will cover how to install and use SDK add-ons to extend the functionality of applications using a real-world sample. Additionally, a new sample SDK add-on will be created as the class explores how an SDK add-on is created, what one can do, security concerns, and how to package and deploy an SDK add-on for a new device.

This class will be a lecture/discussion about Android SDK add-ons, giving examples and showing how applications can leverage a vendor’s add-on as well as how an OEM team can create a new add-on for a device. The class will include some code to demonstrate the concepts and behaviors. You should be familiar with Android development and the Android SDK tools.

Level: Advanced
Topic Area: Android Tablets and Beyond
Hacking APKs for Fun and Profit (Mostly for Fun), Part I and II Has code image image

Dive deep into the internals of Android in this two-part, 150-minute class. You will explore the wonders of Dalvik bytecode, smali syntax, decompilation tools, patching techniques, and common methods you can use to (try to) protect your apps.

Extremely hands-on, you'll be downloading a very popular app, modifying it, and messing around with its behavior. Even if you're not that interested in APK hacking, you'll leave this class with the sort of deep appreciation for Dalvik that makes good Android developers great.

Level: Advanced
Topic Area: Developer Essentials
How to Leverage Your Online and Mobile App Presencestarburst image

Virtually every business has an online presence. Many businesses recognize that millions of people access the Internet via their smartphones and are creating mobile apps to maximize their customer’s online experience. If the entire goal is to direct people to your website, another goal should be to determine who is coming to your website, what they are doing and what you should be doing about it. All of this is possible and legal, provided you have a privacy policy that explains what you are doing. In California, failure to have a proper privacy policy may mean a $5,000 fine for each time you collect the information of someone that downloads your app! Attend this class to learn how to avoid that.

Level: Overview
Topic Area: Developer Essentials
Targeting App Success, Part I image

Writing apps for fun is fine, but making them more profitable has been known to increase the fun. If you have an app available in Google Play Store or elsewhere, you are marketing a product. Understanding some of the principles of marketing will make a difference on the amount of money you can bring in.

If you are a software developer and don’t want to spend a year studying Internet marketing, come and see how the principles of Internet marketing apply to promoting your apps in ways that even software engineers can understand (there will be math). Topics will include business models for apps, marketing funnels, keyword research, and other key marketing concepts. Actual examples will be shown.

We will take an app idea from the target audience through research and refinement, app discovery, and installation. Increase your app's reach, its rating, and its number of installs through some simple and some more complex steps.

Note: The presenter was formerly employed as a software developer, but has since formed his own business with an app at the top of its category. Insights are from his own personal experiences and from Internet-marketing courses.

Level: Intermediate
Topic Area: Android Business
1:45 PM - 3:00 PM

Android Platform Security Underpinningsstarburst image Has code image

Android security is quite multifaceted, and not surprisingly given the depth and complexity of the Android OS. In this class, you will learn what makes up the various layers of security and how they work together. By the end, you’ll have a solid understanding of various security concerns from the low-level kernel to the high-level app permissions, and everything in between. This class will focus on the entire platform, not just the apps layer.

We’ll start with the Android architecture from the security perspective, followed by the startup and boot process of a typical device. Once you understand that, we’ll deep-dive into Android security architecture, app signing, user IDs, file access, multi-user support and permissions. Next, we’ll provide an overview of file-system encryption, rooting, and memory security. Finally, we’ll touch on device policy administration, malware, SE Android, and some other vectors of attack.

This class assumes basic understanding of operating systems and is based on the Jelly Bean multi-user version of Android OS.

Level: Advanced
Topic Area: Developer Essentials
Bringing Up Android on Your Favorite X86 Workstation or Virtual Machine, Part II Has code image

This class is a more comprehensive tutorial on how to configure and build an Android desktop machine. You will be shown a recipe for building and testing our Android build on various Virtual Machine configurations, which will address both the Android framework and the Linux kernel.

The class will suggest at least two comprehensive use cases of building for VirtualBox, and for building a full working laptop (including Ethernet, Camera, Bluetooth, WiFi, sound and graphics acceleration), proving that an Android system can be a nice replacement for any desktop.

You will enjoy a fascinating journey bringing Android from the Embedded Linux world back into a desktop solution. We will address topics such as integrating with Google Apps, handling "Google Play" filters, setting the best-fit resolution, and debugging the platform and applications with the conventional Android and Linux tools.

Level: Advanced
Topic Area: Embedded Android
Building NFC-Enabled Android Applications Has code image

Android’s support for Near Field Communications (NFC) offers developers a powerful new metaphor for mobile phone interaction: Physical Touch. NFC supports far more than secure financial transactions. Popular games like "Angry Birds Magic" have already incorporated NFC (you have to touch your phone to another NFC-enabled phone to unlock game levels) to expand the social interaction of mobile gaming, and a new breed of enterprise applications that tout proof of presence for remote workers already exists. Industry research has demonstrated that NFC provides a more efficient and friendlier user experience than QR codes.

This advanced class covers the nuts and bolts of NFC development on the Android platform. You will learn the basics of NFC, including the types of RFID tags that the technology supports, as well as a primer on security concerns and tag storage limitations. Code examples will be provided to demonstrate how programmers can leverage the NFC Data Exchange Format open standard inside their applications for reading/writing data to/from RFID tags. You will also be introduced to the NFC Tag Event open standard for back-office integration.

You are not required to have an NFC-enabled phone, but are strongly encouraged to attend with an NFC-enabled handset, such as the Google Nexus S (3G), HTC Amaze (4G), or Samsung Galaxy Nexus (4G), since the Android emulator does not support NFC emulation.

Level: Advanced
Topic Area: Developer Essentials
Connecting the Dots: Bluetooth in Your Applicationstarburst image Has code image

This class provides a look at the basics of how Bluetooth technology works and the different modes through which an external device can communicate with an Android handset or tablet. We will explore how devices pair, connect and communicate within the context of the Android framework. You will also gain an understanding of how Bluetooth devices advertise their capabilities using discoverable services.
 
We will work through example applications using the framework APIs to do simple serial communication over the RFCOMM protocol, and integrate with higher-level devices like headsets using Profiles.
 
You should have an understanding of basic framework concepts like Intents and BroadcastReceivers. Sample code will be available ahead of time for those who would like to follow along with the examples.

Level: Intermediate
Topic Area: Developer Essentials
Effectively Leveraging Open Sourcestarburst image Has code image

Application development is becoming an increasingly complex process. Providing the latest widgets and UI patterns, dependency injection and state management, interacting with RESTful APIs, and choosing the right combination of helper classes is a full-time job—and we haven't even begun to get to the content and styling of your app. Thankfully, the open-source community has been providing and supporting libraries, which make all of these tasks easier.

This class will cover eight libraries through which you can measurably increase the quality of your application and improve the end-user experience. We will start with a quick overview of each library, including their use cases and brief code examples. After we have been introduced to each library, we'll dive deep into two examples of how combining these together can greatly simplify your application. The first example will cover the complexities of network request and response dispatching, and how to separate its logic away from your UI. The second example will build on the first in order to leverage proper testing techniques on the desktop and on the device for an end-to-end tested solution.

At the end of the class, you will leave with strong application patterns built on open source, which will speed up development time and improve overall quality.

Level: Advanced
Topic Area: Developer Essentials
Incorporating Touch Feedback in Your Apps to Improve the UX Has code image

In an ocean of apps, how do you differentiate yours? Cool graphics and sounds are now commonplace and no longer leave the same impression on gamers and avid mobile users.

With touch-screens as the UI of choice in mobile devices, haptic feedback has started to get more attention in recent years, but it is still one of the most overlooked yet valuable aspects of the mobile experience, especially in games. Come to this class to learn how to implement console-like gaming effects to get your games and other apps noticed for increased revenue possibilities with handset manufacturers and carriers.

This class will teach you the same methods Sega, Rockstar Games and Handy Games use to maximize the Android vibrate function using the free Immersion SDK, from simple UIs to more complex gaming use-case scenarios. You will learn how to implement these vibration feedback effects into your own games, as well as learn core vibration design principles to follow when implementing gaming effects. A simple sample application will be used in Eclipse as a tutorial for the class; files will be provided. A PowerPoint presentation and hands-on hardware demonstration of good touch design will also be provided.

Level: Intermediate
Topic Area: Developer Essentials
Targeting App Success, Part IIstarburst image

Are you eager to build a sustainable business based on Android apps? Learn how to maximize your chances of success without inviting too much stress. Learn specific things you can do to improve your app business and accomplish the tasks outside of coding. The focus is on tools and techniques that will work for a small business or individual, even if you are just one person working out of your home office, like the presenter.

We will talk about how to truly measure profit and how it can make a difference in how you make decisions. Also, learn how to find help and tools affordably as a small business.

We will continue our journey through the app-marketing funnel to track success metrics after the install, including where analytics, conversions, usability, and communications with customers come into play. We will then talk about specific ways to expand your reach outside the market with organic and/or paid promotion, and how to track the return on investment.

Level: Advanced
Topic Area: Android Business
3:30 PM - 4:00 PM

Bring Your Apps to New Screens, Small and Huge, with NVIDIA SHIELD and Tegra 4 image

In January, NVIDIA announced its upcoming Tegra 4 chip, and in a surprise move also announced its first consumer electronics device, the SHIELD handheld, to come in June. With dedicated game controls, high-quality built-in speakers and support for secondary display on TVs, SHIELD opens up a wealth of opportunities for application developers of all genres.

In this class, learn why game and app developers are rallying around this new device and chipset. Find out how to properly support landscape displays, external displays like TVs, and alternative input devices to control your application. Also, find out what NVIDIA can do to help you develop better applications and reach premium users, from Tegra 4’s performance and features to NVIDIA’s Android tools to help you get the job done. And, of course, we’ll have SHIELD on-hand so you can see and hear what the future has to offer Android developers!

This class is sponsored by NVIDIA.

Level: Overview
Topic Area: Android Tablets and Beyond
Deep-Dive into the Android App Economy image

As the leading independent mobile advertising and data platform, Millennial Media has a unique view into all aspects of the Android mobile ecosystem, from the latest mobile trends in demand by top brand advertisers to the impact that specific Android operating systems and devices are making on the app economy. Join Millennial Media’s director of global monetization solutions as he provides a closer look into the latest Android devices, apps, and opportunities that can help you achieve your revenue and monetization goals.

This class is sponsored by Millennial Media.

Level: Overview
Topic Area: Android Business
Removing the Android Test Automation Obstacles image

It’s not a secret: The Android platform is fragmented and complex. Developing automation for mobile is quite different from developing for desktop, since the mobile environment is much more complex and dynamic, and has elements that the developer finds different. Test-automation developers struggle with finding both the right approach and right solutions to develop efficient cross-device automation that can handle Android application testing complexities on smartphones and tablets, and on target versions.

Automation for mobile today ought to be able to recognize various Object types on the device screen, some received from the application through the OS level, some visual, some Web-based. How does the automation developer overcome these challenges and build an automation framework that easily works not only on version 1.0, but on future versions and older devices as well? These are the exact topics we will cover in this class. We will also see a live demo on how to handle complex applications, recognize the different objects, and more.

This class is sponsored by Perfecto Mobile.

Level: Intermediate
Topic Area: Developer Essentials
Samsung + Developers = Android image

"Samsung is the only Android manufacturer that matters now," according to Business Insider, and has amassed 42% of all Android shipments by the end of 2012, according to the IDC.
 
The reason is you, the Android developer.
 
For this, Samsung designed a new program catered to your needs with visibility, monetization, access to test devices, a marketplace catered to expanding your reach, a host of Android tools we just released at developer.samsung.com, and a team of engineers ready to offer real technical support.
 
Please join us as we share details about new and upcoming SDKs, tools and opportunities to work with Samsung Developers, and a Q&A.
 
Note: This class will also include a brief coding session around the Samsung Chord, our new multi-user SDK for Android.

This class is sponsored by Samsung.

Level: Overview
Topic Area: Developer Essentials
Steering The Ship: Influencing Design as a Developer image

This class will give you a solid start on the knowledge you’ll need to come up with Android-appropriate user interfaces and to convince your UX designers that you’re right. The presenter will introduce the concept of Responsive Design, the practice of designing not for “phone and tablet,” but for flexible layout based on available space. You will learn key Android techniques for the implementation of responsive design, including the use of resource folders and modular layouts. The review will include highlights of the Android Design Guidelines and other important resources to make your apps shine with Android style. The session will conclude with a real-world example of an Android application that went from looking like an iOS port with a design unfamiliar to Android users to a consistent and stylish app that can easily be called “Android-y” and “Awesome.”

This class is sponsored by Comcast.

Level: Intermediate
Topic Area: Developer Essentials
Test Your Mobile App's Performance with Application Resource Optimizer image

Mobile Web and application performance are just as (if not more) crucial than traditional Web optimization. Based on AT&T’s study of top mobile applications, there is a lot of performance optimization potential for mobile applications. We will introduce the Application Resource Optimizer (ARO), a free open-source tool that allows you to test your mobile application’s performance. The ARO tool runs network traces of your app and grades your application against 13 best practices. We will show how simple fixes based on these best practices can dramatically speed up mobile applications. Typical results are 10-40% speed improvement, while also reducing data usage and lowering battery drain!

This class is sponsored by AT&T.

Level: Intermediate
Topic Area: Developer Essentials
Friday, May 31
8:30 AM - 9:45 AM

Designing for Androidstarburst image

Designing for Android is equal parts technical as it is pure design. Terms and abbreviations like resolution, density and XHDPI may as well be foreign languages to non-technical people. Developing for Android successfully requires collaboration between a developer and designer.

Good design can mean the difference between success and failure, and it goes beyond looking pretty. The way that a user interacts with your app can determine how much they'll use it, if they'll recommend it, and if you'll make money. That said, there are standard ways of doing things in Android. Successful designs are the designs that are balanced and don't go too far. A pretty design is just that until it's built.

It behooves the design and development process when both parties—designers and developers alike—understand and help guide each other when creating and developing for mobile. Developers don't need to be thinking like designers; designers should start thinking more like developers.

Design isn’t just about making something look or feel pretty. In actuality, it's ultimately about solving a problem. It's not about colors or fonts, it's about function. And form should follow function, particularly when designing for mobile.

This class will focus on the ways that developers and designers collaborate, the key bits of information that developers often assume people know, and common workflow best practices that ensure the job gets done right the first time. We'll also talk about clients and their expectations from both sides of the fence, and why it's important to be seen as working as a cohesive team.

The instructors work at Huge, a digital agency that provides business strategy, design, marketing and technology services.

Level: Overview
Topic Area: Developer Essentials
Getting Mobile with Android and Windows Azure Mobilestarburst image Has code image

Android is fast becoming the No. 1 mobile OS for development. If you want to build Android apps, you NEED to know about using the cloud. In this class, we’ll talk about connecting Android apps to Windows Azure Mobile Services to take advantage of easy data storage, authentication, push notifications and more. You’ll leave knowing how to get an easy-to-use back end up and running, and how to focus on building a great app.

Level: Intermediate
Topic Area: Developer Essentials
Introduction to Continuous Integration Server Usage Focusing on Android Developmentstarburst image Has code image

Never heard of Continuous Integration Servers like Hudson, Jenkins, CruiseControl or Bamboo? Already using one? Great. You will learn what CI servers are out there for you to use and how easy it is to start using them. We will look at available services as well as how to run your own CI server cluster locally or in the cloud.

With a CI server, you essentially get another team member on your development team who never stops working. We will demo how to set up a new instance of a CI server on a machine and configure it for your usage. Learn how easy it is to build your application, whether you are using Ant, Gradle or Maven. We will explore what sort of scheduling options are typically available to run your builds, and how it all integrates with your version-control system. Once we have a build running, we will add some other projects to the mix and build up a full pipeline of builds.

Adding executions of unit test runs into the mix will make it more interesting. Really cool things start happening when you add devices and emulators and run Android instrumentation tests. And maybe you will want to take screenshots automatically, or capture logs and test results for each build.

With all this happening, we will tie it back to your team by looking at notification options and further automations for release and distribution of your application. During the whole class, we will ensure that you learn many of the best practices of CI server usage in general and specifically related to Android application development, and walk away with a firm conviction to add a CI server to your team.

Level: Intermediate
Topic Area: Developer Essentials
Maps v2... and You!starburst image Has code image

Late 2012 brought Android developers a replacement for the venerable Maps SDK add-on, known as the Maps v2 library. Maps v2 offers many improvements, such as vector-based maps with a look closer to that of the regular Maps application, plus the ability to embed maps in fragments. However, Maps v2 has a different API than the old MapView, and it has its fair share of issues as well. This class will show how to integrate Maps v2 in your app, how to accomplish the same sorts of things you did with the old MapView, and how to work around various Maps v2 issues. You should have experience with building Android UIs, including the use of fragments.

Level: Intermediate
Topic Area: Developer Essentials
Save the Battery! App Design and Testing for Better Power Consumption Has code image

Power consumption is a very important and vital part of a successful Android device and application launch. If the iPad and iPhone are any indicators, good battery life is an essential part of a successful device and mobile application launch. Many operators and OEMs now pay attention to the application’s power usage profile as a measure of acceptability of the app.

This class will focus on how to design and test Android applications to be more power-efficient and prolong battery life. We’ll cover:
  • An overview of batteries that are used in Android devices, their chemistry, charge and discharge behavior
  • How to objectively measure power consumption in different application and usage scenarios in Android devices
  • Areas that an application developer and/or a device designer can effectively control to optimize power consumption, including screen usage, UI design, network services usage, and input device usage
  • Setting up a power profiling and power consumption lab that doesn’t break your bank account

Level: Advanced
Topic Area: Developer Essentials
The Fragment Transition, Part I and IIstarburst image Has code image

This two-part class is perfect for developers who already have an Android app in the market and who want to make the switch to using fragments or developers just starting out who haven't used fragments for past projects.

In two hands-on labs you will learn how to begin a fresh project using fragments and how to convert an existing activity-based application to use them. Please bring a laptop with the Android SDK installed. If you don't have a laptop or don't have it installed - don't despair! You will be encouraged to pair program with another student.

You will learn techniques for starting a fresh project, renovating an existing Android codebase, optimizing for tablets, and balancing the use of new APIs while maintaining backward compatibility. The best part is that you can start using fragments now without throwing out all your code!

Level: Advanced
Topic Area: Android Tablets and Beyond, Developer Essentials
10:00 AM - 11:15 AM

Automated App Builds Made Easy - Now With Gradlestarburst image Has code image

Android developers have had access to robust source control, IDEs and automated testing. It’s time they were able to scale that last hurdle of an automated build.

Continuous Integration and other software engineering best practices demand an automated build process. However, many Android app developers find it difficult to create an automated build process. Out of the box, the Android development environment makes light work of building your app in the Eclipse Interactive Development Environment. However, anything approaching a modern app with libraries and other components demands a more robust build process. Developers could spend a lot of time learning these tools on their own. Also, these tools have evolved in the ADT, and many of the how-to's out on the Internet are outdated, causing more confusion, frustration and time-wasting.

Imagine always having a build ready to go into testing with your team’s latest commits. This makes nightly builds a dream. Testers don’t have to have ADB set up with drivers for all the various devices they are testing with; they can simply download the latest APK.

Do you have a complex build set up with various third-party libraries, your own libs, and pro and free versions? Do you need code pulled in from some sort of code-generation step? Do you have one person on your team that is responsible for doing the build and live in fear that there will be some minor configuration change, costing you hours of productive time?

In this class, you will see a complex configuration with several libraries producing multiple artifacts of an actual app on the Google Play Store. This will show developers how to use the built-in tools of the ADK, ANT and Jenkins, as well as how to write some custom scripts so that they can have a professional automated build system.

Level: Advanced
Topic Area: Developer Essentials
Exploring Glassstarburst image

ok, glass...lets explore! Google Glass is amazing, exciting and full of potential. This class will cover the basics of what Glass is (and what it isn't), what it does today and what it could do in the future. We'll cover how you can interact with Glass via ADB to run a version of Ice Cream Sandwich and your own APKs. We'll talk about why you probably shouldn't do this. We'll cover how to run Glass on a Nexus 7 tablet.  We'll get into the Mirror API and go over application design guidelines, the timeline and many other topics related to Glass. We'll cover frequently asked questions from what will Glass look like in prescription frames to usage experiences such as what's its like to mountain bike or play ping pong with Glass. This class will be led by Glass explorer #117.

Level: Overview
Topic Area: Developer Essentials
Little RASCAL 0.07—A License to Learnstarburst image Has code image

RASCAL is an acronym that stands for Remote Access Self Contained Android Learner. It is the working title of an automated device that students with short- and long-term disabilities may use to attend classes or other events. It is fully mobile and able to move from classroom to classroom. It allows the student a better long-distance learning experience than teleconferencing or Skyping. The student will be able to fully interact with their classmates and instructors.

Little RASCAL “walks” on four wheels that are driven by an Arduino processor (with a WiFi dongle). The processor is remotely controlled by an Android device. The Android device (cell phone or tablet) “finds” the RASCAL on the remote network and controls it via a client app on the Android device. The controller interface uses either the touch-screen. The RASCAL’s “face” is an Android tablet, complete with a webcam, microphone and speaker. The tablet will display the live image of the user and allow him or her to interact in real time with anyone that crosses its path. The RASCAL has 360-degree mobility and is therefore not limited to a straight-ahead view while stationary. It is powered by a rechargeable lithium “bicycle-type” battery.

This class will include a demonstration of the Little RASCAL, a review of the electronics and mechanics, and a line-by-line review of the Arduino and Android code required for the RASCAL and remote user’s devices.

Note: The instructor is developing the Little RASCAL on his own time. He is not trying to market this concept or find investors. His hope is to share this idea and the simple technology behind it.

This class will demonstrate a functioning proof of concept.  The Li'l Rascal is a work in progress.

Level: Intermediate
Topic Area: Embedded Android
Protecting Your Android Source Code Has code image

Due to the design of the Java Virtual Machine (JVM), it is relatively trivial to reverse-engineer Java code from Java JAR and class files. While this hasn't been an issue in the past (since most Java files are hidden on the server), it is an issue on Android phones where the client-side Android APK files are easily obtained and just as easy to decompile back into source.

Come to this class to learn how and why this is possible by unraveling the APK into DEX files and the tools that are currently available to decompile your APKs back into Java or JavaScript source code with the click of a mouse. We'll show some of the security issues that this raises, such as inadvertently allowing people to gain access to credit card information or back-end systems when someone has complete access to your source. We'll also look at open-source and commercial obfuscation tools and other techniques you should be using, such as C++ coding, Google encryption, watermarking and more to stop people from gaining access to your Android code.

While we don't expect any previous knowledge of decompilation or obfuscation techniques before the session, we can promise that at the end of the session, you will be armed with enough information to safeguard your intellectual property from what is a very significant but little-understood issue.

Level: Advanced
Topic Area: Developer Essentials
The Fragment Transition, Part I and IIstarburst image Has code image

This two-part class is perfect for developers who already have an Android app in the market and who want to make the switch to using fragments or developers just starting out who haven't used fragments for past projects.

In two hands-on labs you will learn how to begin a fresh project using fragments and how to convert an existing activity-based application to use them. Please bring a laptop with the Android SDK installed. If you don't have a laptop or don't have it installed - don't despair! You will be encouraged to pair program with another student.

You will learn techniques for starting a fresh project, renovating an existing Android codebase, optimizing for tablets, and balancing the use of new APIs while maintaining backward compatibility. The best part is that you can start using fragments now without throwing out all your code!

Level: Advanced
Topic Area: Android Tablets and Beyond, Developer Essentials
Tracking User Behavior Creatively Has code image

Tracking user behavior is an indispensable means of behavior analysis that can play a tremendous role in shaping the future of a company’s product. It can mean the difference between delivering a standout application users adore, or a confusing, complicated mess that people don’t want to use. It is a powerful tool that can provide invaluable feedback to a company, delight the user with “Easter eggs” and surprises, provide an extra layer of security, or even scare the user if employed thoughtlessly.

This hands-on class will explore creative strategies and best practices for tracking user behavior in an Android application. In addition to introducing session attendees to Google Analytics for mobile Web applications, we will discuss tips and techniques for building custom and granular tracking features. You will complete the class with a better understanding of user-behavior analysis, how to deploy user-tracking features in their Android application, and what resources are available to them.

Note: It is highly recommended (but not required) that you bring a laptop with the SDK and IDE installed. Ideally, at the end of the class, you will be able use a simple Android application, and the results of the tracking features (as a group and down to individual users) will be projected. The simple Android application will be available to users as a template before and after the conference.

Level: Intermediate
Topic Area: Developer Essentials
2:00 PM - 3:15 PM

Advanced Techniques for Developing Powerful, Yet Lightweight Android SDKs Has code image

The Android app ecosystem is exploding. Developers need better tools now more than ever, and the number of third-party SDKs is also growing to meet the developer's needs. Unfortunately, many of these SDKs are poorly developed and extremely difficult to use.

In this class, you will learn best practices and advanced techniques for developing an SDK for Android. We'll explore how to design and build an SDK for stability, testability, overall footprint size, and, most importantly, exceptional ease of implementation. During the class, we'll develop a simple but well-architected SDK, and uncover and explain many of the challenges you may encounter.

Topics include device-feature detection, support for multiple application types (from Widgets to Services to Foreground GUI applications), API design, privacy of end-user information, and coding patterns to support developer customization. We'll conclude with advanced topics from lesser-known but very useful tricks to minimizing impact on application start-up time, to reducing memory footprint and persistent CPU use.

Level: Advanced
Topic Area: Developer Essentials
Android Enterprise Securitystarburst image Has code image

Android provides the plumbing to make it an enterprise-grade mobile platform of choice, but there are also numerous shortcomings that yet need to be addressed. This class explores some of the enterprise security concerns of Android. Topics covered include:
  • Encryption: data encryption, whole disk encryption, VPN, keystore and keychain APIs, app encryption
  • Rooting: to root or not, controlling access to root, known root exploits, malware rootkits 
  • Device Administration: API overview, security policies, enabling device administration 
  • Malware: lessons from the field, detection, removal, Google's services 
  • Other Security Concerns
This class assumes basic understanding of operating systems and Android security. Ideally, you would have attended the "Android Security Underpinnings" class prior to seeing this one. This class is based on Jelly Bean multiuser version of Android OS.

Level: Advanced
Topic Area: Developer Essentials
Beautiful Android on a Shoestring Has code image

Want to make your app beautiful, but cannot afford a designer? Fear not: There are many easy techniques to prettify your app. Attend this class and learn how to use XML and Java to touch up your Android app with gradients and round corners, tiled backgrounds, custom fonts, and responsive components that look different when focused on and pressed. You will also learn various and free resources to incorporate into your app, such as color schemes, graphics, patterns and icons.

Level: Intermediate
Topic Area: Developer Essentials
Becoming More Effective with the Android Emulatorstarburst image Has code image

Are you leveraging the Android Emulator fully? Perhaps you don’t even utilize it at all due to its reputation for slowness. However, teams from around the world have been steadily improving and enhancing the Emulator: It is faster, can emulate a wider range of devices, and can do more than the older versions could.

In this class, we will show you how to take full advantage of what the Android Emulator has available. We will show you why the Android Emulator is one of the most useful tools that an Android developer has access to and dispel some common myths about it. We will cover recent advances in the emulator like the Intel x86 system images and hardware acceleration. We will look into how to emulate different devices like the Kindle Fire, Nook and Nexus. Speed is a consideration, so we’ll show you ways of how to make starting the emulator up faster.

You will also learn when it is better to use the Android Emulator and when it is better to use an Android device. The Android Emulator also makes it easy to simulate some real-world scenarios that are harder or costlier to do with a device (such as receiving SMS messages), and we will show you how to simulate real-world events inside of the Emulator. You will also learn how the Emulator behaves like a rooted device.

Level: Intermediate
Topic Area: Developer Essentials
Handling the Complexities of Images in Android, Part I and IIstarburst image Has code image

As most Android developers know, dealing with the extreme degree of fragmentation in the Android ecosystem is often challenging. Among the more difficult challenges is managing memory usage, as devices that are in the market today can have as little as 13MB of memory. Now imagine the pains that developers go through when faced with the headache of massive bitmaps eating up memory in a millisecond.

In this 150-minute class, you will be guided through advanced debugging topics, discuss the complexities of image and memory management in Android, and then walk through the creation of a successful, powerful image-management utility. Come to this class to learn about advanced techniques that will help you optimize the performance of your apps. Learn about Android’s memory limitations and the role the garbage collector plays in your app’s performance and complexity.

We will conclude the class by walking through the instructor's open-source image-management solution that gracefully handles most of these issues in a simple-to-use package.

Level: Advanced
Topic Area: Developer Essentials
Little Apps, Big Car Crashesstarburst image Has code image

Think your app is the next big thing and ready to be used everywhere? Think again. Attend this class to learn the problems that lie ahead as apps are moved into vehicles. With announcements from Ford and GM offering open systems for app developers, a big problem awaits: fragmentation and crashes. We will discuss the state of the connected car industry, the danger zones when developing for the vehicle, and brands that are getting it right. We will discuss:
  • Is my app ready for the car? How can it be?
  • How will open development platforms from GM and Ford help or hurt me?
  • How can I make my app safer for use in the car?
  • How can I make money by getting my app into the car?
  • What should I be aware of for the future of connected cars when it comes to my app?
Level: Intermediate
Topic Area: Developer Essentials
3:30 PM - 4:45 PM

A Hands-on Guide to Product-Centric Mobile Apps and the Internet of Thingsstarburst image Has code image

In this class, we will introduce the notion of a product-centric mobile application. We will first give an overview of different product-centric and auto-ID use cases and technologies in the consumer and enterprise space. We will then discuss selected use cases/apps, and explore the core technologies and services (such as mobile barcode scanning, mobile OCR, and/or data and analytics services) required to implement them. The class will conclude with a hands-on development demo on how to design and implement a simple product-centric application that effectively supports a business process.

Level: Overview
Topic Area: Android Business, Developer Essentials
A Primer to SyncAdaptersstarburst image Has code image

Companies have been searching for data synchronization methods to facilitate business operations since the Web’s early days. Today, data synchronization has transcended from nice to have to an expectation, especially since most devices are bestowed with Internet connectivity.

This class will seek to clearly lay out the SyncAdapter, Android’s scantly documented implementation for data synchronization. We will discuss when to use the SyncAdapter strategy, key actors in the system and their roles, authentication (and not), and making connections to different data sources. You will leave with an understanding of the SyncAdapter and how to build custom ones.

Level: Intermediate
Topic Area: Developer Essentials
Android Testing: Better Apps and Happier Developers Through Trusted Techniquesstarburst image Has code image

This class is for anyone interested in improving user experience and developer happiness, focusing on test-driven development and a wide range of testing best practices. Specific tools and tips for unit testing, regression testing, performance testing, usability testing and security testing will be covered. Tailored to Android development, we will review Robotium, Roboelectric, MonkeyRunner, cloud hardware services, JUnit, AndroVM, Travis, Jenkins, and other tools. We will also talk about speeding up emulator performance to win back valuable development time. You will leave this class with many new ideas to improve your development life cycle, resulting in better apps for happier users.

Level: Intermediate
Topic Area: Developer Essentials
Handling the Complexities of Images in Android, Part I and IIstarburst image Has code image

As most Android developers know, dealing with the extreme degree of fragmentation in the Android ecosystem is often challenging. Among the more difficult challenges is managing memory usage, as devices that are in the market today can have as little as 13MB of memory. Now imagine the pains that developers go through when faced with the headache of massive bitmaps eating up memory in a millisecond.

In this 150-minute class, you will be guided through advanced debugging topics, discuss the complexities of image and memory management in Android, and then walk through the creation of a successful, powerful image-management utility. Come to this class to learn about advanced techniques that will help you optimize the performance of your apps. Learn about Android’s memory limitations and the role the garbage collector plays in your app’s performance and complexity.

We will conclude the class by walking through the instructor's open-source image-management solution that gracefully handles most of these issues in a simple-to-use package.

Level: Advanced
Topic Area: Developer Essentials
Intent + Service + Content Provider = Plugin Architecture Has code image

Android developers often lament the inability for Android to natively discover and launch application extensions via plug-ins. The native Java ServiceLoader class is now included in the Android SDK, but it isn’t nearly as effective as it is under Java Standard Edition. Java class-loader solutions often introduce more problems than they solve, and in practice, Android’s class-loader separation ensures that object instances created in one Activity or Service aren’t visible inside of another Activity or Service.

All is not lost, however. Android provides all the requisite pieces for truly powerful plug-in architectures: Intents, Services and Content Providers. The Content Provider fulfills the role of the plug-in registrar. Services, even when deployed in separate applications, represent the plug-ins available for discovery. Finally, the Intents provide the inter-process communication mechanism that lets all of these disparate pieces work together.

You will leave the class with an understanding and sample code that demonstrates how to create a simple Content Provider implementation that serves as a plug-in registrar. Techniques for declaratively classifying different types of plug-ins (services) and dynamically registering new plug-ins will also be covered in-depth. Application and service metadata discovery using the Android PackageManager class will also be covered. The class will wrap up with a mini-primer on the Android IBinder interface specifically in the context of cross-process method invocations.

You are encouraged to have a primitive understanding of how Android Intents are used. No prior experience with either Services or Content Providers is assumed.

Level: Advanced
Topic Area: Developer Essentials
Reusable Custom Components Has code image

Have you ever extended a View class? If not, this session is for you. We will start from a simple example of enhancing the TextView class, and finish with a complete custom view with its own size measurement, drawing function and custom attributes. We will also discuss the best practices for custom views. What is the different between a custom view and a fragment? How about a compound control? When to use which? By the end of the session, you will know not only how to create reusable custom components, but also when to use them.

Users should have successfully developed an end-to-end app beyond "Hello World" and tutorials prior to taking this class.

Level: Advanced
Topic Area: Developer Essentials