James Stanley

Choozi for Bangle.js

Tue 14 September 2021
Tagged: software, banglejs

Do you know Chwazi? It is an Android app that chooses a person at random. Everyone puts in their finger and it selects one at random to highlight. It's useful for example if you're playing a board game and need to select a person at random.


(photo from la-matatena.com)

Well, I finally thought of a useful app to make for my Bangle.js watch. It's called "Choozi". Here's a demonstration:

The watch doesn't have a multitouch screen, and even if it did it would be a bit unwieldy asking multiple people all to put one finger on the watch screen. So instead it just distributes segments in a circle around the outside of the screen. The intention is that the group would be seated in a circle, and it would be clear which position corresponds to which person.

I am quite pleased with the animations. They are actually pushing the device pretty far. That's as fast as it can render those animations, there's no kind of delay or frame rate calculations at all, it's just drawing each frame one after the other as fast as it can.

The Bangle.js development process is slightly strange. You first write your app in the Espruino IDE (using Chromium because Firefox doesn't support Web Bluetooth) and test it out on the watch by uploading it to RAM via Bluetooth. Once you're happy with it, and you want to add your app to the menu so that you can use it again, or to the official Bangle.js apps loader so that other people can download it, you need to make a clone of the BangleApps repo, make a directory for your app, copy and paste your code out of the web IDE and into a source file in that directory, and then modify apps.json to include your app. And then use the Espruino Image Converter to turn your logo into an Espruino graphic suitable for use on the watch. Make sure you output as "Image String" instead of "Image Object", otherwise it won't work and won't tell you why.

I have submitted a pull request to get Choozi added to the official loader. If it's accepted then you should be able to install it on to your watch from there. In the mean time, if you want it, you can install it from my fork of BangleApps loader instead.

If you like my blog, please consider subscribing to the RSS feed or the mailing list: