From da Vinci to Marie Curie, mastering what’s in the toolbox of their time was fundamental to their success.
As software people, two important items in our toolbox have got to be: 1) mobile SDKs; 2) public APIs. Taking time to learn them deeply is definitely a good investment, because they are the building blocks of beautiful and useful things.
In the last few weeks, I experimented with the edges of Android’s capabilities and made “Selfie Assistant” to see how app designs can be pushed if I ignore the need to make features that must run on both Android and iOS.
Experiment #11 — Introducing Selfie Assistant for Android
After you start the app , it stays in background and listens only to camera 📷events. Every time you activate the front camera to take selfies, Selfie Assistant wakes up and shows an arrow ⬆️ pointing to the physical location of the camera… to tell selfie participants where to look, resulting in better selfies.
Behind the scenes, it uses a capability known as Foreground Service in the Android toolbox, something that iOS app developers do not have. You can make apps that blend in with other apps like Instagram or Snapchat to augment them.
Another technique I found intriguing is crowdsourcing, so I built it into Selfie Assistant too. If your Android phone is a well-known device (like a Samsung or Google Pixel), the app will position the ⬆️ to the right place immediately. If it’s a device that the app has never “seen” before, it prompts you to align the arrow so you don’t have to do it again. In the background, the app also saves that position for other users of the same phone to enjoy. It’s fun to experiment with ideas like these. The broader the app is adopted, the better it gets; like Waze’s traffic incident reporting feature.
A few things have surprised me along the way…
- Old tricks, applied in new context, can surprise and delight your users. Remember those “Terminate-and-Stay-Resident” programs (e.g. Sidekick and DESQview) in the good old DOS days? This little popup arrow, in context, is essentially the same trick in the mobile world.
- While iOS is easier to develop for (see my other blog post here), Android SDK enables experimenters to push the envelope a lot more. In addition to Foreground Services, Android gives you full access to NFC sensors (read/write), FusedLocationProvider, multi-app collaboration (iOS 13 is adding the Intent construct), auto-start / BroadcastReceivers and many more.
- Animation has a big role to play, even for utility apps. Yes, it takes much effort to code it right, but do consider it. For Selfie Assistant, I started with a static arrow, but eventually took time to create animations for it because it makes the experience more fun and offers more utility (as you can spot the animated arrow much more quickly. Speed matters.)
Hope this helps… and until next time.
https://play.google.com/store/apps/details?id=com.evergreenlabs.selfiecamarrow