The alert app in the Pebble emulator
The Android app.
First Place Winner - SwampHacks
J.P. Morgan Chase "Best Social Good Hack" Winner
Chris lives in an ADA accessible dorm room. This means that there is a doorbell for the hard-of-hearing. It works by flashing lights and sounding a super-loud buzzer, which can be felt as well as heard. Curious neighbours and prankster friends alike enjoy pressing the doorbell, often at 2AM when people inside are sleeping. This began to make us think about better ways to alert the hard-of-hearing to events.
For the deaf and hard-of-hearing, being aware of the surrounding environment can be a challenge since most cues for events are auditory. The use of accompanying lights has been a solution to indicate that an event is occurring (think fire alarms, police sirens, smartphone flashlight), however, the lights may be easily overlooked if one is turned the wrong direction. We created BuzzEar as an additional solution to these everyday problems.
What it does
What it does The BuzzEar Android app samples ambient audio and measures volume levels. For noises above a certain threshold, an alert, accompanied by a vibration, is sent to a Pebble smartwatch via a companion Pebble app. This alert informs the wearer to assess the surrounding area for events that the user may want to be aware of.
How we built it
We used C to build the Pebble companion app and we used Java and Android Studio to build the Android app. The Pebble Toolkit was also used to allow the Android app to work with the smartwatch.
The Android app sets a media recorder to sample sounds received by an Android device’s mic every 0.5 seconds. The max amplitude of these sound bites are then converted to a measurable volume scale that measures in Pascal (referenced: https://stackoverflow.com/questions/10655703/what-does-androids-getmaxamplitude-function-for-the-mediarecorder-actually-gi). If any sound sampled is over a threshold set higher than the environment, the pebble is sent a packet via Bluetooth to open the companion app and display an alert while vibrating.
Challenges we ran into
It was harder than we expected to make the Android app alert the smartwatch. It was also difficult to find/create an appropriate algorithm for volume recognition.
Recording sound was a challenge as well. This was the first time anyone on the team created an Android app (same with a Pebble app), and we couldn’t figure out why we couldn’t get any recordings to playback for debugging purposes. It turns out that when you load a new layout (even if all logic is done in the same file and class), the states of variables set in previous layouts are forgotten in Android.
Also, we couldn’t develop an efficient way to continuously sample audio without overworking the main thread. This slowed down our app and put the animation of our audio-recording switch on delay.
Accomplishments that we're proud of
Once upon a time, there were four strangers with four different education levels from two different schools. They came together as a team and created an amazing app in 36 hours. <<<< That’s us by the way. None of us knew each other before the event (Chris and Gaurav actually met because they were charging their phones from the same outlet).
We are also proud that we were able to create workarounds to the challenges we faced in linking the Pebble and the Android. So, hurray!!
What we learned
Althea and Chris learned to develop apps for a smartwatch in C, while Emily and Gaurav learned to use Android Studios. All of this was done with no prior experience with either technology. Cool beans.
What's next for BuzzEar
We developed for the Pebble smartwatch, which is a wearable we found in the MLH Hardware Lab. Pebble is no longer manufacturing watches so development will probably have to switch to Android and iOS smartwatches.
We would also like to tweak how the loudness threshold is set by the android app. Right now it’s hard-coded in. In the future, we would like the threshold to adjust incrementally if the environmental noise gently increases (kind of like the boiling frog problem).
If at all possible, we would like to implement noise recognition. There exist many technologies to convert speech-to-text, but there isn’t much out there to identify certain sounds. Identifying sounds would be useful so that alerts sent to the smartwatch would be more personalised.
Also, we should probably figure out how to make the toggle switch not freeze.