September 24, 2015Android Development
NOTICE: This post has been IMPORTED from a previous blog.
I’m sorry to report that Good To Go have updated their website and it has broken the app. I have been in contact with them about a promised API, but it appears one is not in the works. Sadly, I had to unpublish the app.
I included it here because it was a great experience to build and release the original application.
I’m happy to announce the release of another Android application, WA State Toll Tracker!
Go install it now at the Google Play Store:
- If you like it, please leave a great review!
View the official web page:
Questions about the project
Where did this idea come from?
I came up with the idea for this app while crossing the SR 520 bridge, which is a toll road. All tolling is handled by an automated system that is linked to an online account you setup with the State of Washington. You can read more about the program at http://mygoodtogo.com . You sign up for an account, and provide a credit card to get started. When you cross the bridge (or another tolled area) their system reads your pass and deducts the toll from your account.
I had read some stories about people who had racked up large fines for failing to notice they had outstanding tolls and fees on their accounts. I decided to double-check my account, but couldn’t remember my username or password. It would be ok if it happened once, but every time I wanted to check my account I would have to go through the process of forgetting my username or password and having to reset my account.
So I built this app. It allows me to quickly view my tolling activity without having to reset my password. Now when I want to quickly review my account, I can just open the app and refresh for my most recent activity.
It has also saved us money. We had a car that had problems with a sticker pass. The system would recognize the pass but someone at Good To Go had to visually confirm the toll via a photo. It’s called a photo enforcement fee, and you get charged an additional 25 cents for each time it occurs. It happened so frequently that it became cost effective to get a new pass.
How long did it take to build?
I think it was about a year. It was done in my spare time, and I allowed some other interests to get in the way if needed, like painting my fridge to look like a TARDIS.
What’s your status?
I’m a full-time contractor, so I was looking for something to do on the side for fun. I don’t do any advertising for my apps, and I feel if I was ever going to look to do this more seriously it would be beneficial for me to keep publishing apps.
What got you into Android development?
Honestly, I couldn’t afford a computer from Apple. I did some robotics development a few years ago that I very much liked. The same bug that might render a web page incorrectly might sent your robot into a ditch. Android development reminded me of that past, so I wanted to explore it further.
What challenges did you face with building the app?
- My other apps were Activity-based apps, and I wanted to play with fragments. It was a bit of pain, because some things I knew, but not enough to do everything I wanted to do. So I was making jagged progress - some things came quickly, others moved forward like a snail.
- InApp billing was a little bit of a pain. For starters, InApp billing needs more real-world examples, and the ability to debug a beta APK with InApp billing enabled
- The technique to implement a Navigation Drawer changed half way through my development of the app. Honestly I’m glad I put the time in to change it because the new way is better.
- It seems petty, but would it kill Android Studio to allow you to set a breakpoint on an empty line? I mean that I want it to stop before the next executable line. Android Studio will let you set the breakpoint on an empty line, but completely ignores it come debug time.
I have a few ideas rolling around in my head, and some friends with ideas of their own. My biggest fear is that since I’m doing this myself that I’m missing out on the collaborative learning I would get if I was working with a team.