A Look Behind the Scenes at How I Developed My First Android App

In Android by Mark A. Barros

Background

Recently I have been more and more interested in creating an Android App. I had several ideas that I mulled around and even started programming a few, but ultimately decided that I wanted to keep things simple for my first Android app.

When tackling any new/unfamiliar project or platform I like to keep the technical challenges to a minimum so I can focus on understanding all the other aspects involved in successfully deploying whatever it is I am working on.

For Android, the obstacles I would have to overcome included:

  • Selecting and Setting up the IDE (Integrated Development Environment)
  • Downloading and installing the appropriate SDK (Software Development Kit)
  • Learning/Understanding the Android Architecture
  • Learning what API’s (Application Programmer’s Interface) were available
  • Figuring out how to secure (i.e. copy protect) and deploy my app

Aside from all the technical hurdles, I would also have the following other tasks to complete prior to launch:

  • Create a website for my app
  • Choose a name for the app
  • Buy a domain for the app
  • Build a webpage for the app
  • Secure/setup a facebook fan page
  • Secure/setup a twitter account
  • Secure/setup a Google+ fan page
  • Secure/setup the YouTube channel
  • Create a video for the app
  • Promote and Market the app

Oh yeah, and I would have to program the app (that’s why I kept this part simple).

What is Buzzworthy and Why I Chose To Develop It

Recently I started purchasing and reading Kindle ebooks on my Motorola Xoom with the free Kindle App. I wasn’t sure if I would like it because I am use to thumbing through pages. It didn’t take me long to realize how awesome digital reading is. What sold me are three killer features:

  1. The ability to access your book from multiple devices. So you can start reading on your tablet and continue on your phone when you are say, sitting in the waiting room of your doctor’s office.
  2. The ability to highlight text by dragging your finger over the screen. I hate marking up my books so this is a killer feature for someone who is anal-retentive like myself.
  3. The ability to make digital notes, by again highlighting an area and then typing in some associated text.

One day my wife, who had been reading a book on nutrition, asked me how she could export her notes. She wanted to organize her highlighted information so she could have it at her fingertips when she went grocery shopping. Interestingly enough, there was no way to export highlights or notes. Not from within the Kindle App or through a third party.

The lightbulb went off and I went right to work creating an app that would allow you to export Kindle notes and Highlights. Within a few weeks I had that working and thought it would also be nice if you could share your highlights with friends on facebook, twitter or Google+ (making digital reading a more social experience). It seemed like a very natural evolution, so I added that feature as well.

It took me just under 3 months to develop and deploy Buzzworthy.

What is Buzzworthy?

Buzzworthy is an Android application that allows Kindle App users to share their favorite Kindle book notes and highlights with others via Twitter, Facebook, Google+, MMS and email. It also allows users to export all their highlights or notes to email or evernote so they can manage and organize the passages they find most interesting offline.

How I Learned How To Program For Android

Android is based on Java so the first thing I did was crack open my favorite Java book Head First Java to refresh my memory on the syntax. I highly recommend this book if you are thinking of programming in Java as it explains everything to you as if you are a six year old (which is what I like) and does not bog you down with information you don’t need and will never use. :)

Once I got up to speed on my Java there was this whole Android architecture I needed to understand. My wife is a visual learner which means she does great learning by seeing.

I unfortunately, am not. I learn by doing. I hate lectures and presentations and prefer to read and absorb information at my own pace. Enter Lynda.com. A site that provides top notch high quality video tutorials on a wide range of subjects. I splurged and signed-up for their cheapest subscription ($25/month) which is more than enough. This subscription gives you access to any of their 80,000 tutorials accessible from anywhere with no long-term commitment. Woot!

The course that taught me how to program and develop on Android was Lee Brimelow’s Android App Development with Java Essential Training.

Lee Brimelow’s course teaches you how to setup your Android development environment, provides an overview of the Android architecture and walks you through the most important and commonly used methods.

Each section within the course runs anywhere between 2 and 17 minutes with the average topic lasting about 8. This presentation style worked extremely well for me because you can pause, repeat or jump around lectures as you like.

Google’s Android developer site has a lot of great information and you will need to reference it as well (which I do constantly). But I found using their site as a starting point can be a bit overwhelming. There is just so much information and trying to figure out what you need to know now and what you need to know later can be daunting.

In the end, I created my app using a combination of what’s available on Google’s Android Developer site, Lee Brimelow’s Android App Development with Java Essential Training and scores of Google searches to fill in the blanks.

Building The Webpage For the Buzzworthy App

I am not a graphic designer by any stretch of the imagination. So when it came time to create the website for my app (BuzzworthyApp.com) I resolved to using wordpress which I self-host on HostGator. WordPress is nice because it’s pretty easy to setup and there is tons of support and an endless supply of themes out there to help you customize its look and feel.

I chose Appify as the theme for my site because it was designed for people like me; Mobile Application developers who need a pretty store-front to display it in. Going this route allowed me to have an attractive site up and running in a few hours. Something that would have probably taken me weeks if I had tried to craft it myself (which I assure you wouldn’t have looked half as good). Hat tip: Benny Hsu from getbusylivingblog.com who turned me on to this theme.

My bee logo and black honeycomb background were purchased from istockphoto.com and were used with the Appify theme to further customize its look and feel.

Selling the App

I launched Buzzworthy on Google’s default app sales platform Google Play and then three and a half weeks later on Amazon’s App Store.

I was reluctant to sell it on Amazon’s App Store because it would complicate my releases but in the end I am glad I did because I have sold more on Amazon then I have on Google Play despite the three weeks head start Google Play had. This is most likely due to the fact that there are far less apps on the Amazon App Store then there are on Google Play, and that Buzzworthy is a Kindle companion app.

One of the advantages of Google Play however, aside from being the default marketplace for app purchases, is the app review cycle time. Apps released on Google Play are available to customers within a few hours (something like 6 – 10 hours), that includes updates you roll out later. That is huge because it means you can roll out a fix to a pesky bug in a short amount of time.

Amazon’s App Store on the other hand, makes you wait up to two weeks (assuming they don’t find any issues) before your app or update completes their review process. That’s a lifetime in the app world, and one of the most unattractive parts of their program.

Dealing with Bugs and Defects

Every piece of software ever written has bugs (areas of code that don’t work as you intended or unanticipated conditions that cause your otherwise beautifully designed program to fail spectacularly).

So what’s a developer to do? In my case, I have about four different Android devices lying around with different flavors of Android running on them. Prior to any release I load my latest and greatest code onto all of them and run some basic tests to make sure things are still working as expected.

I also integrated code from Crittercism into my application (which is super easy to do by the way). This allows me to collect real-time crashes that occur in the field. This powerful and free service returns a stack trace, in the event of a crash, along with anonymous device information like the app version the person was running, the version of Android, the hardware make and model, etc.

This information can be invaluable when attempting to track down a defect.

I also built in some debug code that I ask users (who report issues) to run that sends me some additional information for me to review, which has proven to be extremely helpful in resolving bugs found in the field.

Other Remote Debugging Options
Bugsense is another great third party service that allows you to collect near real-time analytics of defects found in the field. It works very much like Crittercism and may even be a hair easier to setup.

With that said, I ultimately chose Crittercism because they offered a little more for indie developers as part of their free plan. In addition, they have a support feature that you can easily integrate into your app that enables users to submit forum questions and feature requests right from within your application. This feature gives users a mechanism to provide you (the developer) with feedback or solicit help.

Without this, the user’s only mechanism to provide such feedback is through the marketplace rating system which is never a good thing unless you like accumulating one stars. :(

Marketing and Promotion

Since there is nothing like Buzzworthy on the market for people to reference, it was important for me to create a demonstration video in order to help people understand the value proposition of my application.

Using a video camera I recorded two separate videos of myself (my finger rather) going through the steps required to perform two major functions of my app.

When I originally produced my video it was more of a silent movie. Since I lack the deep baritone James Earl Jones voice that conveys confident authority, I instead added pop-up text to explain the sequence of events my fingers were trying to accomplish.

Although it helped make things clearer, it wasn’t enough. So I took to the interweb in search of someone to do the voice-over work. Here’s what the finished product looks like:

How To Share a Highlight

How to Export all Highlights

So Where Did I Find The Voice-Over Talent?

I really didn’t want to spend a lot of money so I hit Fiverr.com. Fiverr is a fantastic site where people offer to perform work for you for five dollars.

That’s right, I found a brilliant professional radio personality from Utah to record the voice-over work for five dollars. I made two videos so it cost me $10 in total. Don’t ask me why people do anything for five dollars, but they do and I couldn’t be happier.

Allison was quick, professional, and easy to work with. All I had to do was provide her with a script (here’s mine) which included a time offset, duration, and the words to be spoken, and in less than 4 days she produced the results you heard in the above videos.

The single file she returned contained all the various audio recitations with the proper inflection so I had to edit it in Adobe Audition CS5.5 and then mix those sound bytes into my existing video in Adobe Premiere Pro CS 5.5.

Each of these tools can be highly complex to use so I tapped my friend Lynda.com on the shoulder again and she hooked my up with Chad Perkins Premiere Pro CS5 Essential Training.

I skipped around and watched less than an hour and twenty minutes worth of that lecture before I new enough to be dangerous and produce the above two videos.

Conclusion

This entry was not intended to be a “How To” guide. There’s far too much information to cover, and thousands of sites on the Internet have already done that better then I could. What I hope you take away from my experience is:

  • Don’t be intimidated to try new things.
  • I had no idea where to begin with this project. All I had was an interest in learning. Scope out your project, break it down into smaller digestible parts, and then proceed.
    How do you eat an elephant? One bite at a time.

  • It’s OK to get outside your comfort zone.
  • There are many aspects of the process that intimidated me but I did not let it stop me. I like to learn and I like to be challenged. Never say “I can’t” or “I don’t know how”. There is so much information on the Internet so there really is no excuse if you really want to do something.

  • It’s better to try and fail then to not try at all.
  • You know the drill. “Winner’s never quit and quitters never win”. Regardless of how successful my app is I am happy to have gone on the journey for now I know what it takes to develop and deploy a mobile app on the Android Market. Remember, “Life’s a journey, not a destination”.

  • Know your strengths and weaknesses and then use your strengths to help you overcome your weaknesses.
  • I don’t know the first thing about hiring voice-over talent, but damn if I’m not resourceful. Using my resourcefulness I found fiverr.com and was able to hire a voice-over actor from the comfort of my own home.

Now go make something great! And as always, if you have any questions, put them in the comments section below.