I think we've all had the experience of trying to study when we're dead tired, or even read an article that we promised a friend we'd check out. It's in these exact moments that Zoning comes into play.
What it does
Zoning tracks whether or not your eyes are stationary for too long to see if you're "zoning out." If you are, it vibrates your phone to let you know. You can also customize how long the duration between "zone outs" are.
How I built it
I used OpenCV in order to conduct the eye tracking, based on contour mapping and facial features, compiling it into it's IOS framework then checked whether or not a person's eye remained stationary for a certain number of frames. This allowed me to check whether someone is actually actively reading or they're not actually paying attention to the text.
Challenges I ran into
Compiling the OpenCV framework is always a bit of a nightmare. However, since I have experience with it, it was relatively simple. I'm still experiencing some issues with imposing UI elements on top of the view at the same time since the framework has to run on the main thread to access the camera.
Accomplishments that I'm proud of
It works! All and all I could actually use it my every day life and it would actually serve the purpose that I wanted it to originally. I'm excited that I did what I set out to, as well as being able to work on a couple other projects and help some others out with theirs.
What I learned
This project taught me how to use eye tracking which is pretty awesome. I've done facial tracking, but never the kind of eye tracking that I'm doing with this app.
What's next for Zoning
Despite what I've accomplished, Zoning is far from a perfect product. The UI is far from glamorous because I am a coder, not a designer. I really need to bring someone else in to design UI. I also still have to figure out some of the threading issues. If I can work those out and reduce the processing power used by my phone, that would be incredible. I could also add analytics for users. As you can see, there's a lot I can do with this project, but the base functionality works, and that's enough for me.