When the Hackathon started, we wanted to work on something that would truly be useful. I always felt that Google Now could go a few steps further in making Android better and along with my team, we decided that we would create something that would fill the space that Google Now leaves
What it does
SemAndTricks essentially does two things. One, it monitors your app usage so that it can predict when and where you are going to use what app, and add that to your lock screen, making it super convenient and direct for you to access the app you are most likely to use in a certain situation. For example, if you use the gmail app at 10am at your work every weekday, then the next time you are in the same situation, GMail can be directly accessed from your home screen. Or say you are at an amazing tourist destination and you suddenly want to take a snap for Snapchat, you will find the Snapchat app conveniently added to your lock screen as a widget, so you can get instant access and you don't miss a single moment. The second feature is just as impressive. The app will monitor your text messages to understand your behavior and moods, and whenever it notices a spike, it will give you recommendations that will help deal with the spike. This is effectively a very targeted advertising tool that works wonders for the user too (imagine breaking up and getting a discount coupon for a bar at the same night). With these two implemented features, and some others in the pipeline, this app is the tool you need, so that your device actually understands you and shapes itself to work better for you.
How I built it
We have an Azure SQL and machine learning server running for the first feature. The machine learning helps cluster similar users (to provide a better means to distribute advertisements/alerts/common notifications to similar users). It also helps us identify the app the person will be using next based on his past usage data. We used a K-means clustering for the first thing and a multi variable random forest for the second. This was paired up with the android app, on which we had to do some hacky things to monitor the android system and to properly connect the app to Azure (not as easy as it originally seemed)
Challenges I ran into
One particular challenge was that monitoring currently running apps is a very tough task on Android and there were no tutorials as such. To combat this, we downloaded the apk of an app locker application and reverse engineered it to figure out what methods the app locker used to monitor which apps were running and/or being launched. This was something that truly defined our Hackathon experience, because it was hacking in the true sense of it
Accomplishments that I'm proud of
Reverse engineered an app's code to successfully use some features but in a different use case. Set up a live SQL server with a constantly updating machine learning model and got and android app synced to all of this with just POST requests
What I learned
I finally learnt how to manage a SQL database and quite a lot about HTTP methods and their applications in android too.
What's next for SemAndTricks
We plan to implement some of our other pipeline features soon and then launch the app officially.