keep me informed
Like Us on Facebook Follow Us on Twitter Watch AnDevCon on YouTube
Register Now
ADCIII
View the Course Catalog
Classes
Workshops
Speakers
Exhibit at AnDevCon
 
PLATINUM
Apkudo
Barnes and Noble
BlackBerry
BlackDuck Software
Millennial Media
Qualcomm
GOLD
Airpush
Pioneer Zypr
StartApp
Symantec
uTest
Xamarin
SILVER
Amazon Appstore
AppLovin
GREE
Rightware
SecureAuth
Sony Mobile Communications
OTHER EXHIBITING COMPANIES
AppFlood
Artifex
Arxan Technologies
Crittercism
DeviceAnywhere by Keynote Systems
Google
Helpshift
Immersion
IMO
Intrinsyc
MHL
Mobile Iron
Orasi
Pluralsight
Show Media
Soasta
Tap For Tap
MOBILE CONFERENCE APP SPONSOR
Falafel Software
EXCLUSIVE T-SHIRT SPONSOR
Pioneer Zypr
BAG INSERT SPONSOR
Airbnb
App Annie
Wiley
LIGHTNING TALKS SPONSOR
Opera Software
REGISTRATION GIVEAWAY
Samsung Developers
DRINK TICKET SPONSOR
Groupon


 


CCR Registered
CCR Registered

Filter classes by :
Day                         Time Slot
Speaker  Level  Topic Area  Clear Filters
Wednesday, December 5
10:00 AM - 11:15 AM

Attacking Android Insecuritystarburst image Has code image

At the moment, Google Play and the other Android app stores are perceived as the Wild West of the mobile world. This class is aimed at Android app developers looking to deal with the insecurity that surrounds Android apps these days, with malware, fake Android apps and more, and how to create a secure app.

In this class, we'll look at the different options for signing APKs, as well as taking an in-depth look at Android permissions and secure coding practices. We'll also look at what tools are available from Google, as well as open-source and commercial alternatives to help you create trustworthy apps.

Level: Advanced
Topic Area: Developer Essentials
Designing Responsively with CSS3 Has code image

This session will start with a discussion of what is meant by building a responsive Web design that uses a single markup source to format itself effectively between smartphones, tablets, and desktop computers.

We will walk through live code examples to construct a Web page from scratch using HTML5, CSS3, and media queries to create a Web page layout that flows seamlessly between the different device and Web browser widths and device screen sizes. We'll wrap up by looking at the pros and cons of such approaches and how to strategize integrating responsive design into your team's workflow.

Level: Intermediate
Topic Area: Developer Essentials
Developer Tool Essentials, Part I 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 are 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 plugin 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: Advanced Developer Tools.)

Level: Intermediate
Topic Area: Developer Essentials
Dive into Android Fragments Has code image

The compatibility library is currently very important to the Android ecosystem. With it, all apps targeting 1.6 and above can use features such as Fragments and loaders to build compelling Android applications.

This session will cover Fragments from the introduction of what they are, and will conclude by covering advanced usages using the FragmentTransaction and RoboGuice's Event Manager (event bus) system to communicate between Fragments at runtime (allowing you to decouple your code using a more event-driven architecture). You will also be introduced to the some basic back stack management in this session.

Level: Intermediate
Topic Area: Developer Essentials
Hacking APKs for Fun and Profit (Mostly for Fun), Part I & 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
The Wonderful World of Wearablesstarburst image Has code image

While a lot of attention has been paid to getting Android apps onto bigger screens, like tablets and televisions, there is also a movement to get Android involved in smaller screens, designed to be worn more than carried. In this class, we will examine the current crop of wearable Android devices and accessories, explore what it takes to get your apps to run on them (or, in the case of accessories, link to them), and discuss what business opportunities there are in the wearable device space.

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

Advanced Developer Tools, Part II 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 Tool Essentials.)

Level: Advanced
Topic Area: Developer Essentials
Architecting Android Apps Has code image

Android brings to the table a whole new set of building blocks. Each has its own unique properties. Building an app is mashing them together in a unique way. Often, there are multiple approaches to seemingly the same result. Knowing what component to use and when is often a balance of art and science.

In this class, we’ll explore main building blocks of Android: activities, services, providers and receivers, as well as intents that glue them all together. We’ll learn about properties and variations of each. By the end of this class, you should know how to write a straw-man implementation of basic building blocks, when to use them, and how to connect them together. This class is based on Ice Cream Sandwich release of Android.

Level: Intermediate
Topic Area: Developer Essentials
Hacking APKs for Fun and Profit (Mostly for Fun), Part I & 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
KVKit: A Simple, Powerful, ORM and Key-Value Store Has code image

Created specifically for Android, KVKit is a free, open-source, Object Relational Mapping (ORM) library that also allows key-value store functionality when you don't need full database functionality. This class will show you how to use KVKit to do each of the two types of storage, and how it accomplishes this in a very small footprint. Both key-value and ORM storage implementations are thread-safe. Both are optimized specifically for Android.

Hibernate is much too large for Android, and has unneeded complexity to accomplish its data storage and retrieval tasks. It has a complex developer API and too many dependencies that use up large amounts of disk space and RAM. Hibernate also uses more CPU resources than needed or desired for a mobile device. A much simpler, yet just as powerful, design is needed. KVKit has such a design and simple developer API. Come find out how to do key-based queries, query by example, key-path queries and store data, and how easy using an ORM and a Key-Value store can be.

The first portion of the class shows you how to use these two KVKit tools. The second shows you the good bits, the guts of the design and implementation, how to manipulate SQLite, how to use JSON, how to handle threading safely, and how to store, retrieve and cache data. You can choose the depth to which you want or need to understand how these tools are used and implemented for Android.

Level: Advanced
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” workshop.

Level: Intermediate
Topic Area: Embedded Android
1:45 PM - 2:15 PM

Create the Next Great App Using the Snapdragon MDP image

Join Qualcomm to learn about the Snapdragon Developer program and the latest development platforms for Android, and how you can take advantage of them to innovate and accelerate time to market for your next-gen apps. Developers will gain valuable insight on the Snapdragon S4 Mobile Development Platforms (MDP), and the latest tools and resources to help create optimized and differentiated apps that run on the powerful Snapdragon processor.

This class is sponsored by Qualcomm.

Level: Overview
Topic Area: Android Tablets and Beyond, Developer Essentials, Embedded Android
Innovate More. Code Less. Optimizing Open-Source Utilization image

Best-in-class companies are leveraging up to 80% of their code from the world of open source, necessitating new, robust management and governance practices. With over 650,000 open-source projects, and more than 6,000 new Android-related open-source projects in the past year, our ability to adequately leverage this opportunity requires a systematic approach to the search, selection and management of open source. In this class, we will talk through a phased approach to increasing your use of open source, leading to faster Android development while significantly reducing risk. Join us and learn how you can spend more time innovating by leveraging more open source.

This class is sponsored by Black Duck Software.

Level: Intermediate
Topic Area: Developer Essentials
Instrumentation 101: A 30-Minute Primer Has code image image

Have you ever wanted to immerse yourself in the world of Android instrumentation, but only had 30 minutes or so to do it? You're in luck because our 30 minutes will be jam-packed with all kinds of Android instrumentation goodness. This sponsored class will teach you the ins and outs of Android instrumentation and test automation. Come to learn how to effectively use the Monkey, MonkeyRunner and Robotium test-automation tools to better exercise your Android apps. You will be sure to leave with greater knowledge and better practices for Android test automation. Plus, you might even leave with a nifty new Apkudo t-shirt. Nice one.

This class is sponsored by Apkudo.

Level: Intermediate
Topic Area: Developer Essentials
Introduction to Android and Hardware Interaction image

With the next iteration of the Accessory Development Kit and many open-source hardware resources such as Arduino, creating new devices and accessories to interact with Android has never been easier. In this class, we'll introduce the Accessory Development Kit, how to create basic interactions, and demonstrate some cool projects we have worked on.

This class is sponsored by Millennial Media.

Level: Intermediate
Topic Area: Developer Essentials
NOOK Developer Workshop Has code image image

Join NOOK Developer for a session on NOOK Apps. Learn about the development process, from app creation to app submission, as well as marketing opportunities once your apps are in the NOOK Storefront. Come hear about our newly announced products—NOOK HD and NOOK HD+—and discover how to quickly monetize your business in the NOOK Storefront for both UK and US markets. In the US, top-selling apps gross more than $100,000 in the first 30 days of sale.

This class is sponsored by the Barnes & Noble NOOK Developer Program.

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

Android as the New Embedded Linuxstarburst image

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
Android OpenGL ES Essentials Has code image

Ready to make some hardware-accelerated triangles? We'll 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
Beautiful Android on a Shoestring, Part Istarburst image 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, tiling background, custom font an responsive components that look different when focused and pressed. You will also learn various and free resources to incorporate into your app, such as color schemes, graphics, patterns and icons.

(Part II: Hands-on Icon Creation.)

Level: Intermediate
Topic Area: Developer Essentials
Creating Apps for Google TV, Parts I & II Has code image image

In this two-part, 150-minute class, you will learn how to optimize Android applications to run on a television-type device. First, you will see how to optimize your user interface design for "non-touchscreen" devices and get real-world examples of how to implement efficient UIs for large screen devices.

Since the most exciting TV applications revolve around streaming content, the second half of the class focuses on streaming media to Android applications. You will get an overview of common encoding and hosting techniques and see how to create applications delivering high quality video content.

Many of the best practices and examples you will see can be used to improve the quality of all Android applications, and when used early in the design and development cycle, will result in flexible and reusable Android applications, which can scale from the smallest to the biggest screens.

Level: Intermediate
Topic Area: Android Tablets and Beyond
Deep Dive into Android IPC/Binder Frameworkstarburst image Has code image

Inter Process Communication (IPC) has been a part of Android since 1.0, and yet most of us take it for granted. Intents, content providers, and system service managers hide the IPC infrastructure provided by Binder, but without it, the Android OS and our apps would simply fall apart. Binder/IPC is the glue that holds it all together. It enables Android's memory management, security sandboxing, efficient threading, and countless other features on the Android platform.

In this class, we will first go wide and discuss IPC on Android in general. We'll see what it makes possible not just for system framework APIs, but also for us, the Android developers, who can take advantage of it to build efficient suites of Android apps. We'll tackle both Java and C++, standard and custom data types, sync and async execution modes, wide-open and secured services.

We'll then go deep and get to the bottom of Binder. We'll discuss how it works from the kernel driver all the way to the application code, including its threading context, discovery mechanisms, security implications, instrumentation and debugging, latency, and comparisons to other frameworks. Finally, we'll discuss its limitations and how to best deal with situations where we need to efficiently exchange large memory blobs or files with remote processes.

Binder/IPC certainly does not fall into the new or sexy category, but if you want to learn about how Android really works or build apps that talk to each other efficiently, then this session is for you.

Level: Advanced
Topic Area: Developer Essentials
Going Native with NDKstarburst image Has code image

Android is not the only mobile platform based on Java, but what is unique to it is that you can augment your Java application with C/C++, or any code that will compile to the native binary. There are number of reasons why you’d want to use native code within your application, from boosting performance, to accessing legacy code and shared libraries.

In this class, we’ll demonstrate how to use the Native Development Kit (NDK) to develop from scratch an application that uses a native library to get a job done. We’ll discuss the best practices of using JNI to bridge the Java to the native divide. Both C and C++ versions will be demonstrated.

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

Advanced OpenGL ES Has code image

There's some very powerful graphics hardware going into most new Android devices. Learn how to maximize its potential in this advanced session. We'll talk about OpenGL ES 2.0, Shaders, Framebuffers, Texture and Resource Management, and what it all means to you, the application developer. If you're new to OpenGL, it's recommended that you attend "Android OpenGL ES Essentials" prior to this class.

Level: Advanced
Topic Area: Developer Essentials
BYOD: Your Data on an Employee's Devicestarburst image Has code image

Thanks to the “Bring Your Own Device” trend, your users have a combination of Android phones, Windows Phones, and iPhones, and you still need to give them access to share data. This session looks at different ways to share data between users across different devices, while keeping the data secure. The focus is on native apps and not browser-based solutions.
 
Leaving data access open to browsers and third party apps gives up control of your data. Providing native apps on the devices allows for continued control over the data even when you don’t control the device. Control the when, where, who and how of data access across multiple devices.
 
Learn how to track and restrict access, and handle when employees leave the company or lose devices. We'll also cover other issues and options for securing your data on an employee’s device.
 
Examples will emphasize the Android platform, but from the point of view of sharing that data on other devices. Attendees should have experience developing on the Android platform, and familiarity with databases.

Level: Advanced
Topic Area: Developer Essentials
Creating Apps for Google TV, Parts I & II Has code image image

In this two-part, 150-minute class, you will learn how to optimize Android applications to run on a television-type device. First, you will see how to optimize your user interface design for "non-touchscreen" devices and get real-world examples of how to implement efficient UIs for large screen devices.

Since the most exciting TV applications revolve around streaming content, the second half of the class focuses on streaming media to Android applications. You will get an overview of common encoding and hosting techniques and see how to create applications delivering high quality video content.

Many of the best practices and examples you will see can be used to improve the quality of all Android applications, and when used early in the design and development cycle, will result in flexible and reusable Android applications, which can scale from the smallest to the biggest screens.

Level: Intermediate
Topic Area: Android Tablets and Beyond
Hands-on Icon Creation, Part IIstarburst image Has code image

This lab builds upon the class "Beautiful Android on a Shoestring," and will put theory into practice. You will see demos on how to use the free resources to download vector graphics to create beautiful icons for your app. If you want to follow along, bring a laptop with Photoshop and Imagemagick installed.

(Part I: Beautiful Android on a Shoestring.)

Level: Intermediate
Topic Area: Developer Essentials
Making Successful Appsstarburst image

Your app idea is important, but it's only the beginning. You'll also need a quality development and launch plan. In this class, you'll learn how to manage, execute, market and sell your app beyond the usual details. Features, UI, UX, design, messaging, price, and even the app's name all play a major role in your app's success. Get ready to question your app's finer details.

Asking these important questions will help you formulate the answers necessary to give your app the best chance for success. A solid plan provides a solid foundation, and with a solid foundation, your app will have a greater chance of success.

At the end, we'll have Q&A with answers tailored to your specific app dilemmas!

Level: Overview
Topic Area: Android Business
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 opportunities 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 and try them out.

Level: Advanced
Topic Area: Developer Essentials
Thursday, December 6
8:30 AM - 9:45 AM

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
Building HTML5 Apps for Phone or Tablet Has code image

HTML5 is truly a cross-platform development platform with its new functionality that can be used to build applications that run when a user is or isn't online. Doing so, however, requires a change in your design thought process. In this session, we'll discuss not only the new technologies, but review patterns that will let you write one application to run on devices of different form factors, with or without an active Internet connection.

Level: Intermediate
Topic Area: Developer Essentials
Connecting to the Outside Worldstarburst image Has code image

Because of Android's open nature, it makes it much easier for Android phone and tablets to connect to external devices via USB, Bluetooth and RS-232 serial interfaces. In this class, we show how to connect an Android tablet to different hardware, such as a barcode reader and a credit card reader via an Arduino board.

We'll look at the tools and techniques you can employ to make connecting to external devices and what pitfalls you may encounter along the way. We'll also write an Android app to read the barcode information and display the data on an Android tablet.

Level: Advanced
Topic Area: Developer Essentials
Creating More with Lessstarburst image Has code image

Building an Android application of any worth is no trivial task. From integrating with remote APIs to making sure that the UI and UX are set up properly takes a lot of time, and more so, a ton of code to do. In this session, learn how to stand on the shoulders of giants to create compelling applications with minimal code that will operate and look great on Android 2.x to the current version of Android.

You will be introduced to some open source libraries such as RoboGuice, ActionBarSherlock, GSON, HTTP Request, Maven and more. At the end of this session you should be able to download a template application and begin working on your next masterpiece.

Level: Intermediate
Topic Area: Developer Essentials
Inside Android's User Interfacestarburst image 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 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
Intent + Service + Content Provider = Plugin Architecturestarburst image Has code image

Android developers often lament the ability for Android to natively discover and launch application extensions via plugins. 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 plugin architectures: Intents, Services and Content Providers. The Content Provider fulfills the role of the plugin registrar. Services, even when deployed in separate applications, represent the plugins 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 plugin registrar. Techniques for declaratively classifying different types of plugins (services) and dynamically registering new plugins 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
Mobile Data Synchronization: Any Database, Any Back End, Any Time Has code image

QCDBSync is a small, free, easy-to-use open-source library you can add to your application that allows you to synchronize data stored in the SQLite database on Android devices with remote databases of any flavor. It also simplifies your SQLite DB interaction without restricting how you use it. Through rationalizing the data-storage requests along with this information and the data's JSON representation, synchronization becomes much easier to accomplish. Don't pay for an expensive, complicated, restrictive solution when a free, easy-to-use one exists.

In this class, you will learn how to use this small yet powerful library, and then learn its design and implementation. You will learn how to interact with SQLite databases, which Android requires be associated with a Context, without causing the Context to leak memory, a common mistake when threading Android applications. You will learn how to register SQL for use later in your application to avoid copy/paste errors, and to ease debugging. You will learn how to use prepared statements to increase your SQL's reusability, and transactions to increase your data integrity. You will also learn how to use Android's built-in HTTP classes to communicate with a remote server.

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

Android Tools and Techniquesstarburst image Has code image image

This class, presented by engineers in the Android UI Graphics group, will dive deeply into tips and techniques for creating better, faster, and smoother Android applications.

Level: Intermediate
Topic Area: Developer Essentials
App Marketing for Developers, Part Istarburst image

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 funnel, tracking and analytics, keyword research, and many key marketing terms. Actual examples will be shown.  
 
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. 

(Part II: Android Business Essentials.)

Level: Intermediate
Topic Area: Android Business
Introduction to Android Animationstarburst image 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
Programming Android for Your Enterprisestarburst image Has code image

With five years of history and more than 50% of the smartphone market, Android is no longer just a tool for games and social apps. It is a platform that either is already, or soon will be, part of your business. Whether you are building an Android-based OEM product or an enterprise application for a growing Android client community, there are several tricks you are going to need to know.

Android's data-management framework, from the Device Administration and Account Management APIs, through the classes that underlie them, ContentResolver, ContentObserver and ContentProvider—when correctly used—comprise an adaptable and powerful platform for creating effective and highly responsive enterprise applications.

Understanding the specifics of these components is essential to building reliable mobile applications. More important still, for building applications that integrate seamlessly into an enterprise environment, is understanding the architecture that the components imply: REST, idempotency and eventual consistency.

Level: Advanced
Topic Area: Developer Essentials
Protecting Your Android Source Code Has code image

Due to the design of the Java Virtual Machine (or 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 the 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 right 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 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
QC: An Easy to Use Modular Framework Has code image

QC is more than a library, it is a free, open-source framework used around the world that reduces time to delivery for applications. All applications tend to need data validation, data manipulation and data visualization. QC gets rid of the repetitions found in most Android and other types of applications. By helping you create your code using good modular practice, QC lets you focus on the important parts of your application: the validation, behavior and visual display. Its modern design also reduces support effort, time and cost.

In this class, you will learn how to use this small yet powerful framework, and then dive into the design and source to see how it works, and why it is so powerful and yet so small. You will learn how to do multiprocessing using AsyncTasks with their strengths and weaknesses. You will learn how to use Handler, Runnable and ThreadPoolExecutor to allow more flexibility in your multiprocessing, and when AsyncTask doesn't fit your application's needs or design. You will learn how to execute code before the main(String[]) method runs so that thread-sensitive code can be processed without worry. You will learn how to use threading without the memory leaks often found in Android applications by applying WeakReferences.

Level: Advanced
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 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 devices usage
  • Setting up a power profiling and power consumption lab that doesn’t break your bank account
Level: Advanced
Topic Area: Developer Essentials
1:45 PM - 3:00 PM

Android Business Essentials, Part II 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. Learn about:
  • A mindset that could be your biggest obstacle to success (and how to change it).
  • How to find tools and people that will help you get things done. 
  • How marketing is embedded in your app. 
  • Focusing and researching your ideas.
  • Maximizing app exposure within the Android market.
  • Specific ways to promote your app outside the market through Web marketing, video marketing and more.

(Part I: App Marketing for Developers.)

Level: Advanced
Topic Area: Android Business
Building an Efficient Background Sync Enginestarburst image 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
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
Extending the Android Platformstarburst image Has code image

Ever run into a roadblock when developing a new app for Android? Ever want to extend its capabilities, add a new feature, or simply solve that issue that fails to run properly across all devices? Still unhappy with Eclipse and command line tools?

In this class, we will look into the possible avenues you can take, from using the Android Open Source Project (AOSP) to help resolve issues to contributing back improvements to best practices for cross-platform version and cross-device support. A quick dive into getting you up and running using source.android.com will be presented, as well as standard Java techniques and patterns to use for addressing compatibility, from Java reflection to the lazy loading design pattern.

Have you ever run into an issue or limitation with the camera or SMS APIs? We'll walk through how to get around some common tough issues by looking at the source and examining if using hidden APIs is feasible and practical on a case-by-case basis, as well as what techniques and best practices to use.

Are you dealing with possible multi-APK support for third-party APIs and SDKs? How do you support a specific market API, a specific carrier API or a specific OEM API, as well as other third-party APIs with minimal pain? We'll look at best practices on detecting specific features on a device, and how to fall back from one API to the next without the need to replicate code or resort to more than one APK.

How do you tackle multiple libs or using multiple add-ons for a specific project? We'll walk through that issue and even show you how to roll your own SDK add-ons, or even your own code templates for custom wizards that suit your development environment.

Are the Eclipse or command-line tools limited or cumbersome? We'll also walk through how you can customize the tools to improve productivity. A walkthrough of tools.android.com will be presented, as well as some of the latest debugging tools and techniques.

Level: Intermediate
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.
  • Why you should be using Loaders to asynchronously load data into your app.
  • How to create smoothly scrolling lists by reusing views and implementing the ViewHolder pattern.
  • How to use ViewStubs, RelativeLayouts, and GridLayouts to optimize the drawing of your UI.
This class is intended for people already familiar with Java and the Android framework. You should understand the Activity life cycle, how data adapters work, and have a basic understanding of Androids XML layout.

Level: Intermediate
Topic Area: Developer Essentials
Reusable Custom Components Has code image 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 when to use them.

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

Level: Advanced
Topic Area: Developer Essentials
Utilizing Sensors in Androidstarburst image Has code image

This class explores how developers can utilize various sensors on a smartphone. Examples will include connecting camera and inertial sensors for augmented reality and building context-aware apps by using interpreted sensor data. Learn methods to optimize performance using the NDK and provide a more relevant result, as well as create sensor drivers for a custom embedded Android device.

Level: Intermediate
Topic Area: Developer Essentials
3:30 PM - 4:00 PM

Android Code Signing: What You Don’t Know CAN Hurt You 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 in 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 make sure 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, and 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
Android Monetization 101 image

This class will lay out options and different models to monetize your Android app. We'll review several of the most popular models and discuss the pros and cons of each. We will also match each model to specific app types for the best results.

This class is sponsored by StartApp.

Level: Overview
Topic Area: Android Business
Enabling Creativity on Touch Screen with Kanzi UX Solution image

This class will demonstrate how to easily create a stunning user experience on a touch screen using a PC-based UI tool integrated with a powerful engine. You will also learn to use existing UI effect libraries in real time, such as Morphing, Particles, Motion Blur, Reflection, Bullet Physics, etc. You will also be shown the fastest performance of an optimized API engine based on OpenGL ES.

This class is sponsored by Rightware.

Level: Intermediate
Topic Area: Developer Essentials
HTML5, Native or Hybrid: Making the Right Choice for Your App image

HTML5 is increasingly viewed as an attractive option for building cross-platform mobile applications, but the limitations of standards-based Web technologies can pose some challenges for mobile developers. This class will highlight common HTML5 pitfalls, explore the challenges posed by mobile Web fragmentation, and examine the risks and rewards of HTML versus native solutions. The class will also look at the opportunity offered by hybrid apps, which allow developers to use native code and Web technologies together.

This class is sponsored by Xamarin.

Level: Intermediate
Topic Area: Developer Essentials
Mobile App SSO and 2-Factor - Revolutionized with SecureAuth IdP for Mobile image

Forrester Research indicates that by 2016, over 350 million employees will use smartphones. Out of which, 200 million will use their own devices at work. Despite the popularity of mobile-device use in the enterprise, only a fraction of smartphones and tablets are protected by security software, while the amount of malware targeted at mobile devices is on the rise.

Your mobile workforce needs equal protection similar to your networks and cloud infrastructure. Mobile users have adopted smartphones and tablets to speed up business processes on the move. Requiring employees to remember and juggle multiple sets of user credentials and login steps is counterproductive. In this on-the-go business environment, how do you secure access to your applications on various devices and operating systems, like Android and others?

SecureAuth can help. Its revolutionary Mobile App and Web SSO solution with secure 2-factor authentication are all integrated into one product that is fast and effective. In fact, SecureAuth is the best choice for any enterprise standardizing user access to enforce identity governance for all cloud-based applications, mobile devices, and enterprise networks.
In this class, we will cover:
  • How to publish secure mobile apps (Android, iOS, other)
  • Enforce 2-factor
  • Provide SSO between mobile apps
  • Provide SSO between mobile-to-Web apps
  • All without mobile client software!
This class is sponsored by SecureAuth.

Level: Intermediate
Topic Area: Developer Essentials
The Importance of Testing Your Android App In the Wild image

Android app testing is complicated by the fact that it has – without debate – the most complex array of handsets, versions and carriers of any mobile platform. Unlike more-closed systems, each Android device presents its own set of challenges. But being challenging is no excuse for inefficient testing. Despite encompassing a large number of devices, there are a few things that can and should be tested across the field. It’s especially important to test Android applications in the wild on as many devices as possible, because something that works perfectly on one device might cause a bug on another.
 
This session will highlight tips for testing across the Android Matrix, and highlight some available tools that can help you standardize bugs that are reported in the wild, and benchmark your app’s performance while still in development.

This class is sponsored by uTest.

Level: Overview
Topic Area: Developer Essentials
Friday, December 7
8:30 AM - 9:45 AM

Building Powerful Apps using RoboGuice 2 Has code image

You can achieve a lot with the standard Android SDK, but why stop there? You've heard of the RoboGuice 2 framework and how Google, Facebook and others use it in their apps. We'll show you how to bring the full power of dependency injection to bear in your own applications using RoboGuice 2. Once you start using DI, you won't want to stop.

This class will show you how to leverage injection to build clean, powerful applications that are easy to develop and test. Using RoboGuice 2, you'll be able to slim down your application code and make it easier to follow, which in turn will result in fewer bugs. No longer will your app code be littered with the mechanics of the Android platform, but now it can focus on the actual logic unique to your application.

This class will serve as an introduction to RoboGuice 2 for Android developers, but we'll set aside some time to cram in some tips and tricks for advanced users.

Level: Intermediate
Topic Area: Developer Essentials
Creating Android Apps for Today’s Bluetooth Devices Has code image

This class is designed to show developers how to create applications that let Android smartphones and tablets communicate with the latest Bluetooth devices in today’s marketplace. This includes apps that let phones and tablets receive and process data from wireless heart-rate monitors, thermometers, weight scales, hands-free car systems, headphones, and many other types of Bluetooth-enabled devices.

You will learn how Bluetooth technology uses a client/server model for exchanging information between two devices, as well as use Bluetooth low-energy development kits to simulate the server-side of a profile. The client-side will be implemented using the Android Bluetooth package.

This hands-on class will:
  • Cover Bluetooth Low Energy 101
  • Cover basic understanding of Bluetooth Low Energy Stack
  • Emphasize on Application layer, Profiles GATT, ATT and GAP.
  • Cover the Android Bluetooth package
  • Overview of Androids’ Bluetooth package
  • Overview of underlying BlueZ open-source project
You will be provided sample code showing how to make an Android smartphone or tablet talk to a Bluetooth device. You will also be provided with a sensor device to write their sample application on.

NOTE: Attendees are required to bring a laptop with the SDK and tools.

Level: Intermediate
Topic Area: Developer Essentials, Embedded Android
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
MintChip and Virtual Loonies: A Case Study in Implementing Digital Currencystarburst image Has code image

Is there a way to make digital currency as reliable, secure and untraceable as cash? These are some questions the speaker sought to answer while taking The MintChip Challenge. The MintChip Challenge was issued by the Royal Canadian Mint for the development of a viable, digital alternative to hard currency. He learned some interesting things, which he would like to share with you in this class.

The goal was to make digital currency transferred between handheld devices as easy and convenient to use as cash. We will discuss some of the issues that this goal presented, such as making sure there was a high level of interoperability between different platforms so everyone can participate in the process. There also needed to be an easy way for devices to locate and communicate with each other, even when there wasn't a convenient Wi-Fi network available. 

We will walk through the MintChip architecture and go over some of the issues that had to be solved while making the application, especially since it is geared towards anonymity and being untraceable. We will also go over the communications protocols used (Bluetooth, WiFi, and NFC), and touch on the digital currency implementation and uses as they pertain to Android.

Level: Intermediate
Topic Area: Developer Essentials
Tips, Tricks and Secrets of the Android Multimedia APIsstarburst image 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 to increase the appeal of 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 playback requires more control. For those needs, we will cover AudioTrack for audio playback and AudioRecord for recording.

Going even deeper, we will take a quick look at processing audio PCM data within your application. For the more advanced audio needs, we will end by taking a look at integrating the FFmpeg into an Android app via JNI.

Level: Advanced
Topic Area: Developer Essentials
10:00 AM - 11:15 AM

Artificial Intelligence and Intelligent Appsstarburst image

Leading-edge apps like Google Now, Zite and Siri all use advanced mathematics and Artificial Intelligence (AI). This is driven by both competitiveness and the possibility to incorporate human-like behavior and capabilities into apps using AI. AI is a broad and complicated field, but it does not have to be difficult to integrate into your apps.

During this class, you will be provided a background and brief overview of AI and talk about technologies delivering reasoning power, image recognition, natural language interpretation and audio analysis. We will also cover biologically-inspired computing, both from a data mining perspective and for automated creation of smart models for optimization, estimation, classification and more.

We will elaborate on the new possibilities of AI and highlight the basics of how to practically integrate this tool into an app. The class will leave room to share new perspectives on user experience to backend data mining and machine learning. Topics will include server-side versus device-side computation; how to think about knowledge modeling and data integration, as well as the current limitations of the technology. You will also see a case implementation of an AI-powered app.

Level: Overview
Topic Area: Developer Essentials
Extending the Android Vibrate Function for Gamesstarburst image Has code image

In an ocean of new games, how do you differentiate yours? Cool graphics and sound are now commonplace and no longer leave the same impression on gamers.

With touch-screens becoming the default UI in mobile devices, gaming Haptic feedback becomes one of the most overlooked and valuable aspects of the gaming experience. Come to this class to learn how to implement console-like gaming effects to get your games noticed for increased revenue possibilities with handset manufacturers and carriers.

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

Level: Advanced
Topic Area: Developer Essentials
Security and User Privacy in Android Appsstarburst image

User privacy and security is a crucial issue for mobile developers. Discoveries of security breaches or poor privacy practices in popular apps attract a large amount of media coverage – much of it playing to consumers’ worst fears – and the attention of legislators and regulators as well. In an attempt to head off new laws and rules around apps and user data, many platform and app store providers are tightening their policies in this area and expecting developers to, in turn, tighten up the security of their applications.

There are a number of challenges facing developers in this space, particularly because there is a wide scope for problems caused by oversights or simple ignorance, rather than any evil motivation.

In this class, you will learn everything you need to know from a technical and legal perspective to ensure you are not putting your users at risk, and opening yourself up to PR nightmares, government fines or worse. You will learn:
  • Privacy rules from major Android app stores.
  • Government rules and regulations you need to be aware of, such as COPPA, HIPAA and FTC rulings.
  • How to create a privacy policy – and stick to it.
  • Testing applications to ensure they are not transmitting passwords and other user data insecurely.
  • Encrypting and hashing user data.
  • Working with third-party code, such as advertising SDKs, and ensuring it’s not harming the security of the app.
Level: Intermediate
Topic Area: Developer Essentials
Tracking User Behavior Creativelystarburst image 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 not required, but highly recommended you bring a laptop with the SDK and IDE installed. Ideally, at the end of the class, you will be able use a simple provided 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

Battle-Tested Patterns in Android Concurrency Has code image

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

However, concurrency is never easy. When do you use Loader instead of an AsyncTask? Or code a custom Thread? How do you keep your threads from getting out of control? What is the difference between a BlockingQueue, a Latch and other Java concurrency tools? And most of all, how do you best avoid dreaded synchronization problems when the user reorients the device?

In this class, we'll take a look at tested patterns to solve your concurrency problems and delight your users. You should be an experienced Android developer and have a good understanding of Java.

Level: Advanced
Topic Area: Developer Essentials
Bringing Up Android on Your Favorite X86 Workstation or Virtual Machine, Part Istarburst image 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
Designing Accessible Android Applicationsstarburst image Has code image image

Integrating accessibility features into new or existing applications make them more noticeable and reachable to more users. Attend the class to learn the importance of this while designing an application. We will cover Android’s built-in accessibility features and its evolution in different Android versions. This will include Android’s built-in support for touch, speech and many other features that can be incorporated to make an application more accessible.

We will deep dive into a few of the available features, like sensors, haptics, and gestures, that will make the application stand out and be more accessible. There will be code examples that explain the accessibility features, as well as tips to add common useful effects that go a long way in creating a compelling User Interface.

Level: Intermediate
Topic Area: Developer Essentials
Developing and Optimizing for Atom Processor-Based Platforms Has code image

In this session, you will learn about developing Android applications for Intel Atom processor-based tablets and smartphones. This session will address porting native libraries using x86 NDK, tips and tricks for identifying and removing performance bottlenecks, and identifying optimization opportunities to make your apps run best on Intel Atom-based tablets and smartphones. 

In addition, attendees will learn how to develop multi-platform apps with techniques that has been applied to a real life application. Attendees will also learn about valuable technical resources available to developers through the Android Developer Community at www.intel.com/software/android. Attendees should have a basic understanding of Android app development.

Level: Intermediate
Topic Area: Developer Essentials
3:30 PM - 4:45 PM

Advanced Techniques for Developing Powerful, Yet Lightweight Android SDKsstarburst image 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, supporting 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
Bringing Up Android on Your Favorite X86 Workstation or Virtual Machine, Part IIstarburst image 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 a full working laptop (including ethernet, Camera, Bluetooth, WiFi, sound and graphic 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
Exposing the Android Camera Stackstarburst image Has code image

Cameras in mobile devices have gone mainstream, and this class should facilitate engineers wanting to integrate, improve or innovate using the Camera subsystem.

Android was released with support for many advanced Camera Features, like Video Snapshot, Face Detection and Video Stabilization. This class provides an overview of the android.hardware.Camera APIs, followed by a technical deep-dive into the Android Camera Stack Internals. The Camera.Parameters pipeline enables different image sensors to expose their hardware-specific functionalities to the application layer. The system-level camera service interacts with the media framework, the display subsystem, and the camera hardware via an implementation of the Camera Hardware Abstraction Layer (HAL).

The Low Level Camera Interface discussion will include a general overview of camera hardware, the hardware interfaces used by the camera (control and data), and the driver interface to the camera. The class will culminate in a demo of a hardware development kit fitted with a custom camera module.

The intended audience for this conference session is engineers who want to learn more about the Android Camera APIs, Camera Internals, and driver Architecture.

Level: Intermediate
Topic Area: Developer Essentials
Intro to Renderscript or Can’t I Just Depend on JIT?starburst image Has code image

Renderscript is this little-known addition to the Android Developer’s toolkit since Honeycomb. It adds one more language variant—C99—into the mix, some additional APIs, and some newly deprecated ones. Android developers may wonder why to bother doing Renderscript at all.

This class will go over the Renderscript architecture and API. We will be using a "simple to moderate" compute task implemented in Java and Renderscript. The goal is to give a better understanding of Renderscript by following along with a novel example, and going through some of the tradeoffs made during implementation. By the end, you should have a better feel of the code complexity, development issues, and respective performance of Java and Renderscript.


Level: Intermediate
Topic Area: Developer Essentials