In recent years, with the removal of the headphone jack from most flagship smartphones, customers have been forced to move to wireless headphones and speakers or risk dealing with the dongle. Despite promises from major tech companies on Bluetooth improvements and better QoL use, it's still a pain to switch pairing from one device to another. Our goal was to create something that enabled users to stop manually switching headphone pairing, and allow them to transition seamlessly, while simultaneously being backwards compatible with older generations of Bluetooth devices.
What it does
Our application runs primarily in the background, keeping track of audio output states on MacBooks, in order to facilitate automatic handoff. When the user closes YouTube on MacBook A, and open Spotify on MacBook B, their headset or speaker will unpair from A and pair to B without any user input.
How we built it
BlinkLink is driven by a Java database that keeps track of the various MacBook audio states behind the scenes, and anticipates the user's future needs based on the data. It directs the right device to connect with the headset or speaker.
Challenges we ran into
It was quite challenging for us to get the operating system to pair with a specific device in a seamless, fast, and transparent manner. Cross platform functionality in Windows was attempted but not completed because of that fact.
Accomplishments that we're proud of
Creating a solution to a problem that has not been sufficiently addressed in our opinions - getting the multiple parts to work together was a huge challenge, and we persevered to overcome the difficulties.
What we learned
We learned how we can use mysql and java servlet to use as backend, how to write python, and some libraries that lets us control bluetooth functionality.
What's next for BlinkLink
BlinkLink was a super ambitious project from the start! While were are proud to have full support for macOS, we are eager to expand to other platforms to have a truly cross platform solution to our idea. We started implementing support for Windows but have some issues to resolve to have support for both Mac and PC. The next logical step would be to build support for iOS and Android.
We’d like to optimize our program farther to get it down to 2 seconds or less when switching between devices but require tighter integration with the operating system that we were not able to implement at this time.
Furthermore, currently, the solution does not run as an app nor daemon which we would like to implement so it can launch at login completely transparent and seamless for the user. Lastly, the installation process should also be made easier for the user so that they do not have to clone from Github and run the program from there.