Welcome to Droidcon NYC! We'll go over plans for the weekend, discuss finding your way around and what not to miss.
Chris and Kevin will discuss the evolution of Android design, Tumblr’s design battles (with numbers to back up the company’s claims of success), and give a call to action on the importance of building beautiful software in the era of Material Design.
At Devoxx 2013, Cyril Mottier gave a great talk on Mastering Android Drawables. Hoping to build on that talk and go a bit more indepth into how to actually implement a custom drawable. What is a Drawable? How do you make one? How do they interact with their Views. Lisa’s got a few stories to share about writing a custom Drawable type from scratch. Do you know the difference between getMinimumHeight vs getIntrinsicHeight, and more importantly why making custom Drawables is painful. We’ll talk about the native Drawable types, how custom Drawables can be included in XML (hint, they can’t), the nuts and bolts of how Drawable instances share their constant state (So why bitmap images for Drawables get shared). Finally, we’ll go into the relationship between views and drawables -- how do drawables’ size get set, and what’s the difference between using a ColorDrawable versus a BitmapDrawable with respect to the View that is using the Drawable as a view backing.
The Facebook platform is supported by a diverse ecosystem of developers working tirelessly to make sure things are running smoothly. With over a billion users regularly accessing the mobile app and site and numerous partners building upon the platform each day, there is a constant need to tackle performance issues associated with a platform of this scale. As such, Facebook has built a dedicated Android infrastructure team in New York focused on improving feed rendering and seamlessness of posts -- no easy feat when you consider the wide range of people, brands, and entities sharing content spanning text, video, photos, reshares, and more.
In a continued effort to improve speed and reliability, Facebook’s Android infrastructure engineers rewrote the feed rendering so stories are split into logical sections rather than as an entire single post. This design was inspired by problems exposed when trying to present a rich and diverse feed, such as a deep view hierarchy, poor scroll performance and testability.
In this session, hear from Omer Strulovich, Software Engineer at Facebook New York, on how Facebook rethought the process for feed rendering on Android to result in a quicker, smoother scrolling experience for users, and improved developer velocity. Omer will detail specific problems his team addressed, including: reduced scroll performance, implementation of customizations where Android's defaults were not efficient, and deep view hierarchy.
If you're attending the conference to start your Android journey, this talk is for you. I'll introduce you to the tools and the basic programming concepts. I'll create some simple Android apps and run them on real phones.
This isn't a hands-on session. But if you work on some examples during the conference, I'll be available to help you get past any hurdles that you encounter.
Prerequisite: Reading knowledge of an object-oriented programming language such as Java.
What is NoSQL and the trends in database. From MongoDB, Couchbase, etc and how it will benefit the developers and end users. Breaking down the iOS and Android development into separate topics (Topic #2 and Topic #3 respectively) but can be combined with Topic #1 as well in a condense overview format.
Home screen widgets and live wallpapers are a powerful innovation available only on the Android platform. These tools allow users to view a summary of real time information from your Android apps and can serve as a shortcut to opening your app. In this talk I will give an overview of two important pieces of behavioral science - the glance-able display and the quantitative self. After a design discussion covering lessons learned from the Stanford Design School on a Medical School research project I will cover the essentials of how to code these remote views. Live wallpapers and home screen widgets will come to life. The design discussion is quite relevant to the new Android Wear APIs.
Attendees will learn the steps required to create these features through a slide presentation and sample code.
Historically, Android has been notorious for making it difficult to create great looking apps with awesome functionality. As the platform has evolved, so have the UI tools and widgets to help you on the front end.
As a developer focusing on how your app looks, how can you take the bare bones default UI that your engineer gives you, and make it into something that your designer would be happy with?
This talk will focus on some of Android's essential UI components - ListViews, ListViewAdapters, and ViewPagers - and will show you how you can work with them to create the UI that you want.
* The naive way Android apps are built (and why it is slow).
* Where the opportunities for improvement are and how Buck capitalizes on them.
* How we use exopackage (http://facebook.github.io/buck/article/exopackage.html) to take things a step further and make incremental Android development insanely fast.
In 35 minutes I can explain how to communicate with an arduino over BLE, and how to visualize IMU data on an android. This is great for prototyping wearables and flying things. I will demonstrate these concepts usig Femtoduino.com's IMUduinoBTLE, with a Samsung Live (watch) and a Nexus 5.
Android gives you several options to store your data, and the Android community gives you even more. This talk will cover the many different data storage options available to you and the reasons you might choose one over the other. We'll look at implementation details, common pitfalls, and examples of how you might use each in the real world.
As a major established brand embracing Android, Yahoo needs to design its applications within Android guidelines, in order to be familiar to existing Android users who are new to Yahoo, while remaining familiar to its existing users.
Current state of Go on Android: http://golang.org/s/go14android
Geography is helping us to better understand the earth and apply geographic knowledge to a host of human activities. The Geographic Approach provides a new way of thinking about problem solving by including geographic information, e.g. Location services, geofencing, geocoding, etc. Leveraging some of the core Android technologies like the Android location framework classes which define location based services on Android we can show how the Geographic Approach helps mobile workers make decisions.
We can't always be within service range, so being able to take your data offline and continue to be able to work with it is an important part of the mobile ecosystem. We will look at ways to continue to work with your data offline to extend the Geographic Approach.
A proper understanding of threading is critical to developing for Android, yet relatively little attention is paid to the topic. You will not succeed as a mobile developer if you don't understand this topic.
We'll cover the basics, touch on some strategies and frameworks, then talk about what we're doing at Touch Lab.
As Square has grown from a tiny startup to a large brand, I am leading our effort to maintain Squares high quality software releases for Register.
Our latest campaign has to deal with automation testing. Delivering a solution that executes a matrix of tests over a matrix of devices with different configurations (screen sizes, cpus, android OS versions and so on).
- Making it easy for our team to write new tests and understand existing ones
- Reduction of manual testing
- Decrease in regressions and gaining confidence
- Localization via screenshots (while tests are running)
- Custom "Variations" that provide execution of tests with different parameters (similar to Parameterized tests but tailored for Square)
- Dealing with flakiness in tests and how to write good automated tests (we are using Espresso)
- Team culture for writing tests
I am the tech lead behind both Android and iOS, I will be focusing mostly on Android but a few examples can be provided for comparison with iOS.
We are tackling this problem head on. We've tried in the past but we feel like we are now succeeding in realizing our goals.
My talk is about brand and quality, how both interconnect and how my primary goal at Square is to have our Register app running reliably for all our customers. Payments has a few intricacies and our team must remain disciplined.
With increased UI/UX demands, image filters are arguably no longer the domain of speciality apps. The talk will cover using Renderscript/Filterscript to alter your content images and touch upon more advanced ways like OpenGL ES 2.0 shader language.
This talk will explore in detail some of the proven IA and UX methodologies to deploy when designing new products. These methodologies focus on objectives, growth and getting to the core of the customer value.
In today’s world it can often be difficult to address whether function is more important over form, and this tried and true mentality may not always be valid with brand having such high value in our culture.
Making the decision of giving priority to one over the other isn't always clearcut, though, and in the best products, it appears that visual design and UX blend together seamlessly.
We will explore these and other concepts in this session while always retaining the goal of building and preparing a new product design for success.
The Android ecosystem is exploding, and the tools of our trade are evolving rapidly with it. Unlike the world of web development, where there are many emergent “go to” patterns and solutions, we are faced with myriads of new choices every day. Analytics, metrics, A/B testing, continuous integration, testing & coverage, crash reporting, etc.: all of these are relatively new concepts in the Android app development landscape, with many approach alternatives floating around for each. How does one choose? Let’s talk about selecting the right stack to propel your app to success!
The Java programming language has a knack for requiring a lot of boilerplate code. Annotation processing is a feature of the Java compiler which provides hooks that allow automatic code generation based on annotations. This greatly simplifies your code by pushing the burden of the boilerplate on automated tooling.
This talk will focus on showcasing existing annotation processors for Android development. We will also briefly cover how to get started writing your own annotation processor.
Emerging markets has seen significant economic development over the last couple years, many people continue to lack access to quality essential services. However, 80% of the population do have access to, or individually own, a mobile phone and the technology offers a channel through which access to financial, utilities, employment, education and other services can be offered to the underserved at scale.
Emerging markets mean more opportunities for those capable of cover the particular needs. In this talk we will explore different strategies that we have used to approach these this markets.
The Android app ecosystem is an international phenomenon. 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 fact, at Twitter on the Crashlytics team, we've detected a significant percentage of issues caused by third-party SDKs.
Crashlytics is well-known for its focus on SDK quality, and have been deployed on hundreds of millions of devices. In this session, attendees will learn the skills to develop and distribute SDKs for Android. We'll explore how to design and build an SDK for stability, testability, performance, overall footprint size, and, most importantly, exceptional ease of implementation. Over the course of the session, we'll develop a simple but well-architected SDK and uncover and explain many of the challenges we encountered when building SDKs at Twitter. Topics include device feature detection, supporting multiple application types (from Widgets to Services to Foreground GUI applications), API design, deploying artifacts, and coding patterns to support developer customization. We'll conclude with advanced topics, from less-known but very useful tricks to minimizing impact on application start-up time to reducing memory footprint and persistent CPU use.
Speaker Elissa Shevinsky is CEO of Glimpse, an end to end encrypted app. We'll review security and privacy considerations when building for Android. Using popular apps like Snapchat, Yo, and Secret as examples, we'll do a deep dive into best practices for avoiding some of the most basic (but pervasive) hacks on social networks. We'll end with an overview of security differences at the hardware level, comparing security vulnerabilities recently uncovered in Apple (by iOS forensics expert Jonathan Zdzieraski) to the high security hardware being developed for Android (such as the Blackphone, by leading cryptographers Jon Callas and Dan Ford.)
The best products are not created in a bubble. Over the course of this talk, we will review the critical roles that, through teamwork, the best products are launched. In addition to understanding the definitions/responsibilities of these roles, we'll discuss how to give constructive feedback, common mistakes that teams make (large and small) and analyze experiences that have had successful launches.
Come to the code lab and work on an app!
The Android ecosystem has come a long way in terms of reusable libraries, courtesy of build system improvements like the Android library project. In this presentation, we will explore "better than average" practices for creating, distributing, and supporting libraries for Android developers, with a particular emphasis on open source libraries.
Covers why we animate, what we animate, and how we animate Android applications.
Let's explore indoor positioning and proximity models with Android and BLE. Android has been supporting Bluetooth LE since Android 4.3 and 'L' takes it forward with Central support. In this talk you'll learn about basics of Beacons, Bluetooth LE, code examples. I might have check-in app prior to the talk for you to download from Android Market.
We will go through a number items that will help you be more productive with Android Studio. Some knowledge of Java and Android development is assumed.
Learn how to use SQLCipher, IOCipher and NetCipher, three open-source developer libraries, to protect, defend and encrypt your on-device databases, local file storage, and network communications from all kinds of threats. The tutorial will walk through how these enhanced APIs are different from the stock Android APIs, review their security features in depth, and discuss real-world threat models apps face. You will work on sample projects, as well as real, complex shipping applications that incorporate the software, will also be dissected. This is a hands-on session, where you will walk away with what you need to better protect your users and their data, using freely licensed, open-source tools.
All too often mobile apps get to the point where they are collapsing under their own weight, and the engineering team throws up their hands and say ‘we have to rewrite it!’. This talk will give a strategy for building Android applications that don’t turn into “legacy code” in 12 months. We will cover Android specific architecture, testing patterns, best practices, and tools that help teams build large scale apps successfully.
Google Fit was released as a developer preview back in August. This talk will start with an overall view of what Fit offers you, and then we will take a deeper dive into how to get started. We will also look into how wearables can interact with Fit.
Review the newbie topics, and discuss what not to miss for the rest of the conference!
Recap of day 1. Talks not to miss on day 2.
The best apps are connected to the cloud. Enhancing your app with cloud data, authentication, and push notifications opens up truly transformative user experiences that cannot be matched by local-only apps. Microsoft's Azure cloud platform provides a fast and easy way to cloud-enable your app without writing any server code. With our commitment to community technologies and open source, you'll feel right at home.
Come join us for this fun-filled, demo-filled talk... with a special unannounced surprise twist.
1. NDK Overview
2. Sample NDK app/usage
3. Advantages of NDK
4. Tips to improve security and obfuscation of IP protected content
5. [Stretch goal] Extend Android's framework to add custom hardware and interface via JNI
The era of SmartWear and Internet of Things is upon us. Technological development is never at a standstill - this session will walk through 8000 years of human innovation and extrapolate scenarios for our near future. We will go into detail on what you can do with the just released SmartEyeglass SDK as well as the SDKs for our Wi-Fi controlled cameras and other SmartWear products.
A quick live-coding exploration of the new frontier for Android development introduced to the community at Google I/O, Google Wear. Rob from Twilio will take you through getting started developing for the smart watch platform with all the goods, gahs and gotchas with this new form factor.
Google recently launched Google Cast, a technology that enables devices to send and control content over multiple screens. The platform is easy to get started with and is a delight to play with! I’ll explain how the sender/receiver mechanism works, and delve into the code of an Android sender app and the simple web app on a $35 Chromecast dongle. I’ll expand on the extensibility of the platform and show ways in which you can enhance your existing apps to benefit from the Big Screen.
Over the past 18 months, a team of Facebook engineers have been working on the experience of using our flagship apps on Android in emerging markets.
In 2013, we were able to achieve significant improvements in data usage, performance, and app size of Facebook by focusing on scenarios that we identified to be problematic during a trip to Africa earlier that year. In this talk, we'll discuss some the changes we made to the Facebook app that resulted in 65% data usage improvements and 50% efficiency gains over about a 6 month period.
While these gains were mostly general efficiency improvements that benefited all of of our users, for the second phase of the project we’ve been working on more targeted optimizations. These improvements could be optimized based on type of device, network connection characteristics, or general usage patterns of the app. We’ll delve into some of the details of the system, including an overview of our innovative device- and network-classification technologies, a new configuration system that powers this optimization, and a discussion of our "smart prefetching" technologies.
The last thing we'll cover is how we improved the speed and performance of Instagram for Android, and share some of the methods we use to maintain a fast and reliable experience.
All you need to learn to get started with Depth Maps (for 2D plus images, post processing image effects, navigation, gaming and more).
Although we'll walk through code for the first commercially available dual lens based depth map processing APIs using the HTC M8, the concepts and code will still be applicable for related Android based projects such as Project Tango, Amazon's latest device, and more. Bring your devices and laptop for a hands on coding session! (loaners will be made available)
Depth Maps on Android are here and it's time to take advantage of these new APIs in new innovative ways.
The best Android apps are connected to the cloud. Find out how Microsoft's Azure can add the backend capabilities you need, including push notifications, authentication and data, to your Android applications in minutes. See how easy it is to work with structured data in the cloud using our native SDK, including support for offline data sync. Send push notifications at scale in a single line of code. You can even secure your data with Node.js server scripts for authorization and more. There'll be very few slides, plenty of live coding and lots of demos... open to both novice and experienced developers.
Everyone keeps talking about Reactive Programming and RxJava, but how is it actually used in Android programming? This talk will discuss the building blocks of reactive programming, Observables, and how to understand the core parts of push-not-pull programming. Learn how to easily do work on a background thread in one line while still updating your UI on the main thread, easily implement a Publish-Subscribe pattern with Observables and Subjects, and take advantage of RxJava to make form-based UIs simple. Finally, we'll look at how using Observables can improve testing and ensure that your code will not block the UI thread if operations are blocked.
In the aftermath of TDD being pronounced dead, it continues to cause an incredible amount of frustration on Android. The limited support and tools require a bit of black magic dance to setup. In this talk, we will walk through the setup required for testing an Android gradle-based project and uncover how easy it to groove our way to green tests with Robolectric. After setup, we'll explore some of the features that make Robolectric a great way to begin building up your unit test suite.
With the rise of bluetooth enabled prototyping hardware boards we are witnessing a new generation of wireless hardware accessories emerging. Most hobbyist electronics projects today use the smartphone as an interacting interface via some kind of wireless connection.
relayr created the WunderBar to enable app developers to quickly apps with physical components. But an unexpected outcome was to see hardware tinkerers become app developers, because their projects need an app.
In this talk I will showcase my own story of how I developed an Android App for a gadget used to help keep my insulin safe. most of the talk is about the overlap app/device and best practives to produce an Android-compatible BLE gadget.
Integrating accessibility features into new or existing applications to make it stand out and reachable to more users.
The session will cover:
Importance of accessibility while designing an application.
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.
Deep dive into few of the available features like sensors, haptics, and gestures that will make the application stand out and be more accessible.
Code examples explaining accessibility features.
Tips to add common useful effects that goes a long way in creating a compelling User Interface.
Topic Area: Developer Essentials.
A detailed discussion of how Square uses its open source libraries Dagger, Flow and Mortar to build its apps and enjoy the process.
For building mobile audiences and retaining them as users, developers and producers can follow the R.A.C.E. method of operation: *Retention, *Acquisition, *Content and *Engagement
There is a cyclical process of marketing, obtaining new users, keeping them entertaining, keep them on boarding, monetizing them and continuing again with new and different cycles of users.
I have been working on Vine for Android's video framework in the last 18 months, wanna share all the experience and things I learned on Android's video playback and recording capabilities. #MediaPlayer #MediaRecorder #MediaCodec, #ExoPlayer, #TextureView, #FrameRecording, #Camera
The network is unreliable. 3G networking is slow. Using WiFi drains your battery. The NSA is spying on you. Different versions of HttpURLConnection have different bugs.
I'd like to talk OkHttp, a library I maintain, and how to use it to make your app's networking work even when conditions aren't ideal. I'll talk about how to configure caching to improve behavior and save resources. I'll talk about crypto. And I'll give advice on which libraries to use to make good networking easy.
While Android already provides easy and quick access to the existing camera application on a user's device, to fully integrate the camera into your application and user experience, to add your own custom filters and processing, to control the format and persistence of media, or to fully leverage new and advanced features such as metering and face detection, you may find yourself wanting to build a custom camera application.
This session is for developers with Android experience (intermediate level and above) but who may not be familiar with the Camera API. During the session, we will run through an example of building a custom camera from scratch, from the basics of retrieving camera permissions and features, to properly controlling and working with the flow of the Camera class, to laying out and displaying camera previews, and finally accessing camera features. We will also talk about common issues you may encounter and other considerations to keep in mind while building a custom camera.
A very useful and powerful feature of android that developers sometimes ignore or use it wrong. The small details of your app is what make it amazing, in this presentation we will talk about how Shapes, Layer-Lists, Gradients and more can make your UI jump to another level and amaze your users. All that without being a rockstar designer!
A map can show you where you are or how to get from here to there. But in a world of location aware devices maps can do so much more. Maps and location-based features are the foundation for many apps and provide a rich contextual experience that transforms based on your environment. Open source location services and map frameworks can give you greater transparency, flexibility, compatibility, and control when building location-based apps. This talk will explore how to implement maps and other location-aware features on Android using open source and open data.
Etsy loves Gradle. We use it for all our builds, and have it integrated with our Jenkins / CI jobs to run all of our tests, lints, builds, update version numbers, and deploy our internal releases.
Everyone should love Gradle. This talk will get the audience acquainted with the Groovy/Gradle DSL, and then move into some really sweet ways you can clean up and reuse your build code (for multiproject builds and plugins).
What this talk will cover:
- Groovy basics: closures, filtering, variable declaration, classes
- Gradle primitives: files, tasks, configurations
- Gradle execution phases: configuration and execution
- Setting up a multiproject build
- Writing a Gradle plugin to make reusable build logic: I'll walk through the process we went through to set up a simple Gradle plugin we use at Etsy to keep our tablet layouts synced across multiple screen resolutions.
The relayr team will bring some of the very first, freshly baked WunderBars from the factory for a hands on workshop to help you get started with the Android SDK and various BLE sensors. We will build an app that communicates with several wireless sensors within a few minutes, then assist you with building your very own sensor connected app.
Implementing Growth Oriented Design at the Heart of your Product - Learn how to deploy growth oriented design as a key component of your product strategy, and position your Android applications for aggressive growth.
Platform experience is everything - Platform product design is no longer just an application but an experience that spreads across the entire platform. In this session we will explore new ways to integrate wearables with Android applications to drive experience.
Many applications can benefit from having near-real time background location updates. However, due to battery concerns many apps attempt this but eventually shy away from it. This talk will talk about tips and best practices on how to achieve this including the settings and techniques like geofencing. We'll also talk about best tools and brute force approaches to track battery usage so that you can baseline and improve your apps' battery performance without giving away accuracy and key use cases.
Show a real world example of espresso and automation
Take intro tour to setting up a project with espresso
Deeper dive into advance features espresso offers
Have you been wondering what it would be like to code for an organization that does more for the world than just make a profit? Have you ever wanted to use your talents to do more for society?
Our panelists will help you get an understanding of what it's like to be a developer working with or volunteering for a company or organization who's primary purpose is to make the world a better place. Come with all your questions, we plan to leave plenty of time so you can ask.
A deep dive into what the Android internals consist of for both of these wearable device platforms. We'll look at what's available via AOSP and how you can use this knowledge to your advantage, how to build and modify the kernel source code and current best practices to target both platforms from the same code base efficiently. Intermediate level, warranty voiding optional.
Polyglot android development. I will try cover at least two languages: Scala and Clojure. If there is still time, I'd like to cover Groovy and Ruby as well. The talk will focus the pros/cons of these languages for Android development, tooling, testing and debugging techniques.
Wrap up and discussion of future plans.