Library

Delta Air Lines has a well planned and effective enterprise mobile strategy. Delta employs a healthy mix of devices based on the role, environment and required tasks. The employees in the terminals need business mobility devices as rugged as Thor’s Hammer and for everyone else, there are consumer devices. Their business mobility development team is focused on one hybrid platform, which supports their fleet of Android rugged devices and iOS devices.

I was recently tasked with creating an Android application to read data from Near Field Communication tags. In the process of understanding this technology’s history, standards, and then actually writing the app, I spent a large chunk of time digging through old documentation, out of date web tutorials, and unanswered Stack Overflow questions. In the spirit of Larry Wall’s Three Virtues, I’ve created this primer as a condensed explanation and implementation for those looking to add Near Field Communication tag reading to their own Android project.

An Introduction

Like Bluetooth, Wifi, and other forms of wireless signals, Near Field Communication (NFC) is a communication technology based around the idea of transmitting data over radio waves. NFC uses the same type of technology found in other products, such as mobile payment systems, RFID cards, and electronic key fobs. The main advantage of NFC over these other forms of wireless communications is its ability to store and transmit small amounts of information between a passive, unpowered storage system and an external, powered reader. And it can transmit data without having to pair devices traditionally, like with Bluetooth or Wifi. An NFC storage device can be something as small as a sticker, coin, business card, or bracelet. Additionally, most Android phones come with a built-in NFC reader. So let’s get to the good stuff.

So look. The mobile world is booming, and the world says everyone has to have a mobile application. The problem is, you may not have the time, money, or resources to make the leap to a native mobile application. So what do you do? Do you go hybrid? Well, maybe, but that has it’s own can of worms. Do you just say forget it and do nothing? HECK NO!!!!!! Do you say, well I already have a web application, maybe I should just optimize it for mobile? This is a very good option. You can still use the resources you have in house while also using much of the same codebase. There is just one problem…It’s still not native. Now that’s not a huge problem when it comes to your application functionality, because you may not need any native device features, but it does pose a problem when it comes down to user experience.

Native vs Web (Mobile UX)

Discovery

So native applications get all the cool stuff. A user can go to the Google Play Store and search for the app they want, then click on install, and BOOM!!!!! Now your shiny new app is sitting on the user’s home screen in all of it’s glory, and that app continues to be at their fingertips until they uninstall it. Now historically with a web app, a user may use Android’s Google Search widget to find a web app or they may just enter the web app’s url in a browser. At this point, they may decide to bookmark the url or just do nothing. This forces them to open up their browser, and enter the web app’s url every time they want to use your web app, and that’s definitely not as easy as just clicking an icon on your home screen.

Engagement

Do you remember how you re­-engaged users when it came to web apps? Through email. You sent out an email saying “Hey User, We love you. Come back”. At that point you hope it made it through the spam filter, and you hope it didn’t get buried in the thousands of other emails they received. What about native apps? Well, you just send them a push notification. Push notifications are quick and straight to the point, and let’s not forget they are touch magnets. I think it’s built in all humans DNA to check and touch every push notification we receive. With a push notification you really don’t have to worry about if a user has seen your message. Mostly likely they have, and if they don’t re-­engage, then it’s probably because your app just isn’t that good :). At any rate. Native applications have it easy when it comes to engaging users.

User Interface

Yo! Web apps are dope when it comes to amazing user interfaces, even in the mobile browser. The problem has always been in how web apps have been presented, basically in the center of a browser that already has it’s own design. Native applications get the luxury of having their own shell which makes for a tight and cohesive design.

So the question now becomes. How do we get a Native Android experience without having a native app?

Not many believe in Microsoft anymore, and some have zero confidence in what it will bring to the table, especially in the mobile space. However, I believe Windows 10 mobile could be the beginning of a new era for Microsoft. I know what you are thinking – Microsoft is way behind their game. I don’t blame you- I was in the same boat until the new OS was announced. Microsoft is on its way to release its full version of Windows 10 at the end of July and, with it, the hope that it will save Windows Phones from hitting rock bottom. Microsoft is creating a positive vibe among consumers and developers with great ideas like One Application Platform, allowing porting of Android and iOS apps to the Windows ecosystem, and other great improvements of core features like Cortana and the new Internet Explorer (Project Spartan), among others.

Microsoft in the mobile space

We all know Microsoft has struggled immensely since the appearance of the iOS and Android operating systems. Therefore, a lot of consumers and developers have left the Windows environment and switched to its competitors. When someone asks, “What about the Windows Phone?,” usually the response is “Who cares about Windows”.

On the consumer side, as well as the enterprise, Microsoft is near the bottom in terms of market share. Figure 1 shows the percentage of registered Mobile Operating Systems as of 2014. Android has a dominance of roughly 52% market share, followed by iOS at 39% and Windows at 2.5%.

Android applications are built with Java. Gradle is (finally) a mature and well-known build framework. Jenkins is a Java-first Continuous Integration platform and already has fantastic support for Gradle (as well as Maven and Ant) out of the box. So what’s the problem?

Internet-connected smart things are great, but what if you can’t get them connected to the information superhighway? Let’s explore some of the methods and interactions that put the “I” in IoT.

The Purchase.
You’ve watched crowdfunding videos, scoured the blogosphere for reviews, watched countless unboxing videos, screamed “shut up and take my money” into a computer and finally received this smart thing for your abode. Your palms begin to sweat as you meticulously reenact your favorite unboxing video.

The Nest Thermostat comes with a fancy little screwdriver.

The Setup.
Don’t botch this; you’re doing good. With toolbelt on, you crawl under the house / tiptoe through the attic / climb a ladder and get the device installed. (Bonus points if the tools came in the box. Nest, I’m looking at you.) It’s wired to a wind-tunnel-tested wall wart and ready to talk to the mothership. You button up the install and hop off the ladder. Read More