Monthly challenge #1: Learn Java & Android by building an app that translates Morse code.

Charlie Gerard
2 min readAug 2, 2017

--

I love learning new things and I’ve decided to start setting myself some monthly challenges to get the chance to be exposed to technologies I don’t usually work with.

As a 1st challenge, I decided to focus on learning Java by prototyping an Android app. The concept of the app is to translate text into Morse code using the mobile’s flashlight and translate Morse code into text using computer vision.

I started this challenge with pretty much no knowledge of Java, Android or computer vision. The end result is not 100% working and the code is not great but I’m pretty happy with all the things I’ve learnt along the way! :D

Process

I tried to spend a few hours a day on it but, as I also like to do other stuff, I missed a few days.

I documented the steps I took by writing short entries in this post. It’s more of a brain-dump (see below), so you really don’t have to read it.

Intense work.

Writing a small paragraph every time I got the chance to work on it allowed me to reflect on the steps I was taking to get to my end goal. I also kept links of resources to access them again easily if I needed.

Learnings

I can’t say that I’m an expert Java/Android dev now (that wasn’t the goal anyway) but I’ve really learnt a lot! For example:

  • How to setup a basic Android app.
  • How to use Android Studio.
  • Basics of the Java programming language.
  • The different elements of an Android app (Activities, manifests, layouts, drawable resources, etc…).
  • How to import libraries in an Android project.
  • How to access the flashlight.
  • How to display the camera preview.
  • Basics of OpenCV in Java.
  • How to do image processing in OpenCV (convert to grayscale, blur, blob detection, etc…).

And I’m probably forgetting a few things.

Of course, I did a lot of googling along the way, this wasn’t easy, and I’m pretty sure I don’t understand 100% of what I wrote, but I’m really happy I got to experiment with all this. :D

You can find the Github repo here if you want to have a look.

--

--

Charlie Gerard

Software developer, creative coder and tinkerer of things.