Joel and Jeremy, two of our Android developers were on the ground at Google IO. Here are some of the notes from Day 2:

We began the day with a stream of presentations on new input devices to address the problems that arise as devices get smaller and smaller (i.e. watches). You’ve probably read articles on Project Jacquard – making textiles touch-sensitive devices by weaving capacitive wire through materials. Pretty cool, but the one I liked even better was Project Soli.

This involves shrinking a radar sensor down to a size that can fit in a watch and using it to detect hand gestures made slightly above the device. The fidelity it can detect is pretty amazing – it can understand the rolling gesture you make with your finger and thumb as if you were adjusting the crown on a watch. Worth checking out some videos if you can find them.

At lunch we enjoyed a demo of a gigapixel project aimed at capturing pieces of art at super-high resolutions. A resolution at which you can zoom in to see the cracks in the paint or the texture of the underlying canvas.

We tried out the Cardboard Jump booth. It showed off example stereoscopic 3D videos captured with the 16 GoPro, 360-degree camera rigs. This was amazing. Combined with 3D sound you felt like you were there. I can’t wait until content is available on YouTube. I attended a session on “Designing for VR” which was essentially “How to not make Cardboard user’s sick”. It emphasised the fact that as VR devices increase their capabilities the difficulty of creating virtual experiences also increases. It was primarily aimed at games developers, but I know this tech is going to become a standard for real estate apps in the not too distant future. Pretty sure Domain is already incorporating photospheres into some of its listings.

Project Ara did make an appearance, but unfortunately not in the form of a device demonstration. It merely had a stand taking suggestions on types of modules people would be interested in.

The following is very Android-specific but I thought I’d include it here anyway:

Sessions on testing and architecture were generally very popular meaning you had to arrive a session or two early just to get a seat.

The unit testing session was validation for architecture styles we are already applying, like Clean and MVP/MVC. The first slide posed the question “How do I unit test Android code?”. The second said “Don’t”. Move as much code into classes that do not depend on Android framework classes, and if you have to, use things like Mockito and, if you can’t avoid it, PowerMock.

Architecture sessions made it very clear that they weren’t going to promote any libraries, and that patterns come and go in popularity, but there are some fundamental elements that make for a good design. Google did a really good job of describing good architecture without relating it to specific, currently popular libraries or patterns. The focus was on ensuring your presentation layer is really responsive. Events are king for updating views when data changes; whether that be through callbacks, event busses, or reactive frameworks. Also important, ensuring the user knows that the data they are seeing may not be fresh if the request to update it is still in progress (e.g. a message app that displays a message in a different colour if it is currently being sent compared to when the send is complete).

Two of our Android devs, Joel and Jeremy trekked to San Francisco for Google IO. Here are some observations from developers (rather than journos) and pics that you might not have seen about in the blogs yet:

Google Now on Tap is pretty impressive that promises to add a lot of exciting functionalities to your app. Google now takes care of the machine learning logic for you so that your app can provide a rich user experience.

Material is one year old and was celebrated by creating an in depth set of design guidelines and expanding it even more. With the new library called Android Design Library now supports Material components down to 2.1. A lot of useful design guidelines will be available such as Device screen guides, iOS to Android design.

Battery enhancement is a also big topic this year with Google introduced a new mode called Doze. Exciting improvements from project Volta now help reducing battery usage when device’s screen is off up to 2 times compared to before. They also provide backward compatibility to these enhancements with the new GCMNetworkManager.

New GCM 3.0 with new but not so-new features such as topic subscription (copy Amazon :p) and priorities.

New app permissions model, essentially requesting permissions when they’re required. Seems to be a move more towards the iOS way of doing things where they have nothing on install, but when you start the app you’ll be prompted.

iOS support for all the things (well, haven’t heard anything about Wear yet!)

Google Photos update is impressive and available now (unlimited storage for all! yay!)

Play Store developer pages seems like it might be a good way for Outware to promote its portfolio and get some credit for the work we do for others

Project Tango – we got some hands-on time with Project Tango, and when asked whether we have one we asked when they’ll be available in Australia – this was met with blank “nfi” stares. But Jeremy had fun visualising what a Camaro would look like in his garage. I’ve got some videos of this, but they’re too big to upload now.

Data binding demo – This stuff was really cool and the session went into it in a lot more depth than mentioned in the “What’s new in Android” talk. The documentation in the developer section has the best description of the functionality it provides. Compile-time generation data-mapping, observable view models, null-safety, etc. It’s all good.

In particular, the fact that you don’t have to worry if a particular view is present or not in the layout that the device is using in order to map data to it. E.g. your tablet layout probably contains more views than your phone layout, but when you map to them in code you don’t need to worry about doing an ‘if tablet’ check. Just map data to the view using the binding classes and if it doesn’t exist (i.e. you’re on a phone), no dramas.

Fingerprint auth API – Fingerprint auth was pretty much what you would expect. It’s something to start building into apps now so that when hardware comes along that actually includes fingerprint scanners we’ll be ready to go. For the demo they were using a modified Nexus 5 with a fingerprint scanner strapped on. The API was really simple and easy to use – just startActivityForResult and wait for SUCCESS.

Memory performance – Most of the stuff mentioned in this Colt McAnlis talk  would assume we already do at Outware; e.g. don’t allocate anything in onDraw of custom views, re-use bitmaps to avoid heap fragmentation, but something new was the ArrayMap feature – a data structure designed for Android to be more memory efficient than HashMap; the tradeoff being it’s slightly less efficient when performing lookups/insertions/deletions. The recommendation is to use ArrayMap instead of HashMap when the number of items is less than 1000 (which is most of the time). In these scenarios the extra lookup time is negligible compared to the reduced memory footprint.

20150528_153259 IMG_0368

It’s been a long and exciting night at OutwareHQ with many Outwarians foregoing a peaceful night asleep to spend time together watching the Google IO keynote that just took place in San Francisco.Google IO

We are still absorbing all of the exciting new announcements that came out of the keynote, but on the surface here’s a list of the things that we’re most excited about:

  • Android M – the latest version of Android, set for release later this year has heaps of new features including Chrome custom tabs, Granular permissions and App state backup.
  • Android Studio 1.3, Polymer 1.0 and New Material Design Library – improvements to the dev tools we use on a daily basis will make our development practises more efficient
  • Inbox for Gmail – we are heavily invested using the Google ecosystem at Outware and rely on Google for Work. Inbox is a new client for Gmail that makes dealing with large volumes of email easier and more efficient.
  • New Developer Pages – a much nicer home in the Play Store for our clients apps, and the ability to do A/B testing

We will provide further updates and details as we explore all of the new goodies in the coming weeks!