I have been thinking about the issue of being too dependent on technologies. A few months ago, I decided to be more independent. So I deactivated Facebook and experienced the world without it. The experience is totally worth it and I learnt a lot. Continue reading
Link to the app in Play Store: https://play.google.com/store/apps/details?id=thack.ac.whatsoever
It all started out as an experiment on new views in Android L developer preview(now known as Android Lollipop). Sometime at late September, I was researching on how to Card-like views in Android and found out that CardView is part of the new Widgets introduced in Android L, together with RecyclerView.
When trying out RecyclerView(which is a replacement for old ListView), I thought of this idea to develop a Android app as a search engine for social media sites. I liked the Facebook style where each post is wrapped inside a card, so I want to build a interface where there is a RecyclerView, inside RecyclerView there would be a list of statuses/posts, each wrapped in a CardView.
For the social media site integration, I started with Twitter, and the integration with Twitter API was quite straight-forward thanks to a library called twitter4j. Everything is well-formatted and follows Java conventions and I did not have to do to much to populate the data into my CardView and RecyclerView.
Then I went on to try integrate Facebook, however, unfortunately, it appears that Facebook Graph API does not allow searching of posts/statuses. Hence, I had to give up on Facebook and try other social media sites.
The next one was Google+, there is a Google+ API client for Android, however, it requires logging in. I did not want that since I want to user to be able to search without having the trouble to log in. So in the end I used the Google APIs and parsed the json “half manually”. That is to take advantage of the pre-defined Google+ classes on Google+ provided in the Google+ API Java client, such as com.google.api.services.plus.model.Activity . This was pretty cool as all I had to do was to use response.parseAs(ActivityFeed.class).
Then I decided that Instagram should be also integrated. Instagram has a pretty well-documented API although it is a relatively new platform, however, there are no native or 3rd party libraries for Java or Android so I have to manually parse the json response. This involves some error handling but was still manageable. A good practice would be to create a Class and use
response.parseAs, but I was a bit lazy and decided to just use some local variables.
At that point of time, CardView and RecyclerView were not well-documented, in fact there were no official documentations (now they are documented). So I have to work with limited resources and try to figure out how to use them by myself, it was a painful but exciting experience for me. Of course I put in a lot of time in designing the UI and improving the UX. I also got quite a few suggestions from my friends I tried to do modifications to improve the app.
So here it is, the Android App is in Google Play Store, please do give it a try!