Android Development #4: App That I Developed During My Internship; Full Source Code

First posted on 29/01/2014

During my internship with Neowave Sdn Bhd, I was assigned to build an Android app for selling things. I haven't had much experience in developing Android app yet at that time. The only thing I know was to make a Hello World text. Before using a real IDE for Android development, I have tried using MIT App Inventor and built a Krik Krik app. Lol. It was basically an app that produces cricket sound. The idea is simple, wait for your friend to make a horrible lame joke that no one else is gonna laugh, and when you press a button, a cricket sound will be heard. Get it? Get it? Ok.

So, about my internship. There are several things I need to state here before I jump into the technical parts. First of all, I am not an expert in using Java language, so bear with my code as I don't make use of OOP design. Second of all, my time during the internship is limited for only about 3 months, so I had to finish it during that range of time. Lastly, I am a beginner in Android development. Expect some lame implementation in my code design pattern. My implementation is pretty straightforward I can say, because I only use the basic methods on how to do things in Android development.

In developing the app, I relied everything on tutorials found on the net, so most of my implementations might be outdated such as the usage of AsyncTask.

I didn't use any framework for the server side instead, building my own framework from scratch. I used PHP for the server side scripting, API calls etc, MySQL for the database, and Java, which is obviously a native Android framework language of some sort. You can read the details in the readme.md file.

Here is a brief description of what I learned in developing this app. I can say this is more of a demo app to me as it is to everyone. Well, I wish to explain everything in a separate blog posts, but I haven't had much time to do that just yet.

Let's take a look at the demo source here. Basically, there are two project folders in the source which are,

  1. Client side (Android)
  2. Server side (API calls) + database schema

In the client side, contains all of the source code for the

  1. Login/Logout/Register Authentication using SQLiteOpenHelper
  2. Populate custom ListView from URL using custom Adapter/SimpleAdapter
  3. Usage of AsyncTask and JSONParser
  4. Upload image from device gallery/camera to the server
  5. Update values from device to server using POST method
  6. Moving and passing values from an Activity to another Activity
  7. Inflating custom layouts (button, edittext, background, *layout)
  8. Usage of Geolocation
  9. Usage of open source libraries (Picasso, CardsUI, Base64)
  10. Usage of Log/Dialog/Toast for debugging
  11. Detecting network state

In the server side, contains all of the API calls required by the client side. All of the uploaded image from the device will be sent in a folder. MySQL database schema is included.

All of server side scripts are hosted in separated shared hosting platform namely, db4free for database and 000webhost for php scripts.

Moving on from the technical side, I'm going to explain what this app does. As I mentioned earlier, my task was to build an app that can sell things. Well, that basically it. Here's how it works, a user wants to sell his shit, take a photo of the item, and upload it to this app. This app will display it in a category accordingly. It is much like Instagram only for selling things. I named this app, Zellar. Umm, a combination of stellar and seller. HA HA! Although it sounds useless, but I think improvements are needed to make the app as niche as it can possibly be done. It is a real challenge for those who never had experience doing business before, like me. I never understand real life.

Anyway, to anyone who is interested to learn (and steal), you can view the source code here in my Github repository:

Android
Server stuff
Zellar Website
APK installer (Android 3+)

Show Comments

Get the latest posts delivered right to your inbox.