[This is a guest post from Dave Cotter and Bruno Botnivik, co-founders and CEO/Chief Architect of family social network SquareHub, detailing their experience developing for the new Amazon Fire Phone.]
When we were young, our parents told us that playing with fire was dangerous. Well, in this instance, they’re wrong. We’ve been working with Amazon for the past several months to bring SquareHub to the Amazon Fire Phone, and it was very fun (sorry Mom and Dad).
So we thought we’d share some our experience to explain why playing with Fire, from a developer’s point of view, is worth breaking the rules.
Striking the Match
When we first got our hands on the phone, our reactions were a lot like the customers in the teaser video: “Whoa” … “What the?” … “OK weird — this thing is tracking my head!”
We liked the size of the screen and the feel of the phone in our hands. The display was crisp and we were impressed with the battery life.
We quickly determined that development would be straightforward since we already had an Android and Kindle Fire version of our app. We were quick to integrate the 3D components leveraging Amazon’s Dynamic Perspective UI controls in our existing Android 2D layouts.
We found that most of the 3D controls are very similar to their 2D counterparts and derived from the standard Android classes, meaning that they share many of the standard Android methods, attributes and event handlers. This meant we could use an incremental approach while experimenting with 3D UI elements within minutes. This, combined with the high-level Motion Gesture and Head Tracking APIs, provided a complete abstraction of the underlying hardware, but was flexible enough for us to integrate gesture capabilities in SquareHub with a few hours of development.
We then started to dig into the SDK’s to figure out how to map the phone’s capabilities to useful things for our customers. We first jumped into the Dynamic Perspective SDK (this is what lets us incorporate the motion gestures and 3D display) and then Firefly (snap/scan stuff in the real world and interact with it).
Gaining our Dynamic Perspective
Our app is designed to be used by family members of all ages. So Motion Gestures (which allow users to tilt the phone in different directions to activate certain features and menus) are a great way for families to access the menu, see recent activity, and read the family newsfeed faster than constantly having to touch and swipe. Amazon now refers to this as “One-handed shortcuts” and “One-handed reading.”
As part of the shortcuts, Amazon recommends putting menus in the “left panel,” which is easy to wire up simultaneously as either a tilt or a bezel swipe from the edge (either action will work, so it’s up to the end customer). This fit in easily into our framework: regardless of age or technical experience, it’s easy to use.
We liked one-handed shortcuts, and determined we could take One-handed reading further, similar to how Amazon has done this in their Silk browser. Using the Dynamic Perspective Motion Gesture APIs, we wired up the family news feed, so you can read the news feed easily with one hand, just by tilting the phone backward slightly.
We then coupled that capability with the Head Tracking API so that we can detect when the user is looking at the family feed and scrolling accordingly, and then stop scrolling if the user’s head turns away from the screen, or if the distance between the phone and the user’s head is above a certain threshold. No fingers involved.
Improved information display was a real win for our app. The Fire Phone’s Home screen carousel enables app widgets, which we used to display recent messages and additional context for family communication in a richer way than traditional phones. Two key things we discovered about Amazon’s app widgets in comparison to those on other platforms: First, they are really easy to develop, and second, customers don’t have to configure ANYTHING to use them. We believe this will be a great time-saving feature, since you don’t have to jump into the app to see recent activity.
SquareHub in 3D looks great. It actually looks more like an enhanced screen with more depth/perspective. We decided NOT to make the text of the family news feed 3D because we didn’t want people getting dizzy reading messages. Instead, we focused our 3D efforts on elements in the top bar, our bottom action bar, the menus, and our logos, contrasted against 2D text for the family feed. Using a combination of 3D and 2D elements in our app turned out really well. The contrast is really captivating. And a captivated user means a more engaged user for us.
Amazon did a good job with their SDK and the Dynamic Perspective UI APIs to make it easy for us (without any 3D development background) to include complex 3D scenes and widgets in our app. By integrating 3D tools via Autodesk Maya, they allowed us to shift most of the development work to the 3D designer.
That meant all we had to do was manipulate the high-level 3D objects that the 3D designer created. For example, creating a photo library carousel is done by entirely modeling the carousel and its animation in Maya and importing the corresponding visual bundle in the Android project. Then we implemented the code for controlling the animation and switching textures with the photos from the library on the carousel. We didn’t have to learn Phong, Gouraud, z-buffering, spatial partitioning, or B-splines, and could concentrate on our app’s core features.
We’re looking forward to getting API access to the 3D mapping capability to track the location of kids and loved ones during the day. Our check-in feature with 3D maps is going to be really cool. The 3D map API wasn’t externally available yet, but expect that to be hot feature when available.
In the end, the Dynamic Perspective Motion Gesture APIs can be cool. However, unless you’re developing a game, figuring out which elements of an app should be represented in 3D, and specifically how to take advantage of the motion gestures API, will be something to explore carefully. You’ll need to walk a fine line between practical and gimmicky.
Catching the Firefly
The Firefly SDK could be a game-changer down the road. It’s like a QR code reader on steroids. Essentially it allows you to scan a real-world object and let a customer interact with it.
With our Family Bucket List, families can store lists of activities to do together, share links to movies and restaurants, and shop on Amazon, eBay, IMDb and Yelp without ever leaving SquareHub (and we earn money in referral fees).
With Firefly, a family member can now identify a product, household item, book, movie, CD, etc. and easily store it in our Bucket List. This is much faster than what Android and iOS have to offer. It makes gifting or adding things to a family member’s wish list very easy. Firefly is also a great way for families to quickly identify and take action on phone numbers, web addresses and email addresses and share them with other family members in their SquareHub.
Adopting Firefly with SquareHub was very straightforward. Applications that want to use Firefly are plugins that register themselves with the system to receive digital identities of items (goods, books, phone numbers, etc.) that Firefly in turn processes into searches from Amazon’s catalog. Firefly, when combined with the Mobile Associates program, offers us a nice new revenue stream, as well.
While Firefly provides a complete abstraction of the underlying technology and integration complexity, in the future we’d like to have the Firefly SDK fully integrated inside our application so that users could scan items directly within SquareHub without having to switch to the Firefly app. Also, as an Amazon developer, already having published our application for Kindle Fire Tablets, we’d like to see the Firefly technology and SDK made available to the Kindle Fire platform to provide a consistent user experience across all Amazon devices.
Message to developers: Light it up!
Overall the technical capabilities of the phone are really impressive, and developers shouldn’t be afraid to jump in for fear of a steep learning curve. All the standard Android knowledge directly applies, so building a Fire Phone app only required us to learn the specifics of the new controls (UI, gesture, home widget) and we had SquareHub up and running within hours.
The biggest drawback was the lack of a complete simulator for the Fire phone, which means some tests must be done on a real Fire phone device (such as the HeadTracking API and UI API), and some on regular Android devices.
With the phone just coming on the market, the big question for many developers will be whether a Fire Phone-optimized app will drive more downloads and/or engagement from their users as compared to an iOS and Android app. In a world where the right apps are a critical part to a phone’s success, time will tell whether Amazon can convince app developers to take the innovations of the phone and turn them into differentiated apps that will entice consumers to switch to the phone. We’ve seen comments touting the phone as the next great gadget customers are dying to get their hands on, while others have bemoaned the $199 price point with a two-year contract with AT&T. For consumers, only time will tell. And we all know how patient Amazon is.
For developers, however, this phone is different and you should be fully intrigued by its possibilities for your app and users. Amazon has done a great job of making the development of apps for the Fire Phone easy and straightforward, especially if you already have an Android app. And some of the features (Dynamic Perspective and Firefly) could be game-changers for making your app more immersive and captivating for your users.
Our recommendation to developers considering creating a Fire phone optimized app? Light it up!
Dave Cotter is CEO of SquareHub, a family social network, and a former Amazon general manager. SquareHub co-founder Bruno Botnivik also contributed to this piece.