The internet and mobile networks in oppressive regimes are monitored for restricted communications. CodeTalker uses light to enable mid-range communication that is difficult to monitor / crack-down on, as interception / detection require line-of-sight.
What it does
Send messages in airplane mode!
Transmission between two devices works by encoding a message as a series of binary flashes from the flashlight of one device that are then received by the camera on the other. Because it does not use radio waves, messages are difficult for a malevolent agent to monitor for or intercept without the presence of a significant ground / recon force.
The receiver can recognize light flashes but timing signal issues have made it difficult to decode. We receive the binary communication, but decoding is a work in progress. The project has been beset by several other unfortunate events which, theoretically, were probably a result of sabotage by malevolent agents of oppressive nation states who hate freedom of information.
How we built it
We used Java / Android Studio, as well as OpenCV for computer vision.
Challenges we ran into
Camera framerate was lower than we would have liked, necessitating a reduction in bandwidth to 10 bits per second. Java does not have unsigned primitive types (particularly bytes) which complicated encoding.
Accomplishments that we're proud of
The transmitter works perfectly, and the receiver is mostly working.
What we learned
Unit testing with JUnit, Android CameraManager API, Android Development / UI.
What's next for CodeTalker
Encryption to protect against adversaries that manage to achieve line-of-sight.
Image sending / receiving capabilities.
Quality of live improvements such as a nicer UI and voice input.
Generalization for other transmit and and receive devices.
A dedicated receiving device with a constant framerate would allow us to transmit with greater bandwidth.