Lately I have been working on my android skills as I have a few projects I will need to use them in the near future and I was hunting for ideas on a simple and and yet useful project that I could start and build as I learn new things .
One of my motivations to learn android is that I want to familiarize myself with native mobile device programming.I have been writing desktop applications for a few years now mainly using the Qt framework .Qt is super perfect for desktop applications .While being a cross platform though ,in my opinion it is still building itself up in the mobile apps arena:this means that some features you will have to build yourself from the bottom up.
For example Qt does not provide a way to build android services.Yes you can use JNI and all the goodies but that requires you to know a good deal of information about Java and specifics of android.This pushed me to want to know more about the android native side of things.
Another point I have learned from experience is that to really take advantage of cross platform app development out there, and there are many ,it helps to have a good grasp of at least one of the native development environments.I made a lot of mistakes trying to use desktop development concepts on android devices in the past.When I really think about it I am learning android so I can make better use of the Qt framework on mobile devices.
Why android and not ios?Qt can be used to build ios apps after all.Well I don’t own a mac and I really am an open source guy.Android being libre and free ,I found it to be a natural choice.
With some background on why I am excited to dive into android out of the way now what is your killer app idea?It’s a calorie counter app!One of the problems we face as software developers is spending a good amount of time sitting and sending some stuff down our throats.
As I don’t want the “recursive function to calculate my mass cause a stack overflow“,one of the programmer’s jokes ,I decided to count every piece of calorie I take in,at least do the best possible.As most calorie counter apps out there are directed to the western audience and my wife and I find ourselves doing most calculations by hand anyway,so why not turn this into a shiny new android app?
So here are a few design goals for the app:
App name: Imirire(means approximately the pleasing act of eating in kinyarwanda,my local language)
Target audience: my family and people from east africa
Open source: Yes
I want this to be a good guide for new people to android looking for some practical project to learn from .My plan is to document each major change as a tutorial and upload the completed tutorial code to github so anyone can benefit.I will try to discuss my findings in the process as much as I can.
Basic Logic Behind the App
Most foods you buy from the super market have a label somewhere telling you how many Calories or KJ there are in 100 g of the food you consume.Some vegetables and fruits from local grocery stores don’t have labels ,we usually have to run up to google to find the calorie intake on these.We bought ourselves one of these kitchen electronic scales,
and we do the math to count the number of calories per gram of each food we take every day.The math is simple.Over time we have developed a table of common foods we take and the amount of calories contained within.What I ll do is load all that data into some model .When one opens ,the list of foods is shown .The user scrolls through the list ticking check boxes for the chosen foods and providing the amount of grams for each food.The aim is to keep user operations at a minimum and yet provide to best possible flexibility.
When the app is first opened ,the user is presented with a user interface similar to what is shown below:
The operations are simple ,the user simply scrolls through the list ,when he/she gets to the food of interest ,she checks the check box somewhere near the food icon(this selects the food) and inputs the amount in grams in the input field to the right.As she inputs food weights ,the amount of calories is automatically computed and displayed in the text display field on the top of the user interface.The app is designed to look like a calculator because it is a calculator :-). The app will also provide a context menu option to add new foods.
Resources I am using to learn android (Jan 2016):
Head First Android Development 1st Edition:Head First Book Series are my first stop when I have a new technology I want to learn about.I like how they give a flow to your learning experience through puzzles stories and pictures.I feel that this book is not enough though,it is difficult to come back and find stuff for reference.That’s why I got my self another copy on Android,
Android Programming: The Big Nerd Ranch Guide (2nd Edition):This is the best book on Android so far in my opinion.It covers more topics and topics are compact.Each topic is 10 pages more or less .May be I found it very useful because I was just done with the Head First one.
That’s all for the rough idea of the app ,I sure will come up with more details as we progress more in the design of the app.The app is simple in nature and I still have a lot to read and learn to make it the best I can.I am excited to start this project and hope my experience can be of use to somebody in the future.
Wish me Luck.