After over 8 years in the Play Store SMS Bot Widget has had to be taken down. Google has updated some policies on apps that have the permission to write SMS messages. Basically any app with this permission has to be a fully fledged SMS sender/receiver app. SMS Bot Widget was never intended to be that so it has to go. It wasn’t the most popular app but over its lifetime it had an average rating of 3.86 stars which I think is pretty good. If I get round to it I might release the source code on github so that it’s spirit can live on!
I just uploaded a new app to the Google Play Store. It’s called NutriLens. It scans nutritional information on food packaging to show you how healthy it is. Sometimes food packaging can be hard to understand or even deceptive. The UK Government put together some guidelines but these are not mandatory. Where packaging does not use the traffic light system NutriLens can read the text on the packaging using the device’s camera and Optical Character Recognition (OCR). After parsing this information the app displays the nutritional information as it should be with red, amber or green for fat, saturates, sugar and salt like this:
- New theme
- Only Android 2.3+ supported (Android 1.5-2.2 support dropped)
- Widget count reduced to one resizeable version on Android 3.1+
- Improved widget loading on reboot
Dropping support for the ancient Android versions let me remove a lot of legacy code from the app, simplifying it. I think Android 2.3 is a very reasonable minimum in 2017! I also realised that having 3 different widget versions for Android 3.1+ was redundant. Having one resizeable widget simplifies things. However, existing 1×1 and 2×1 widgets already on home screens will need to be re-created.
I still use my Moto 360 (the first and best version because of the lugless design). It’s great for never missing notifications when my phone isn’t right next to me, setting reminders and controlling music. I keep my phone on silent so sometimes its easy to miss texts and calls. A while ago I took it swimming with me and it started acting strangely. It’s rating is IP67 (dust tight and water-resistant for up to thirty minutes in 1 meter of water) but it started to behave as if it was charging all the time. This means the screen was on permanently no matter what settings were used (cinema mode, raise to wake and ambient mode). This drained the battery really quickly so the watch became useless. After trying all the usual tricks like putting it in rice, in a cupboard with a dehumidifier and putting it in rice in a cupboard with a dehumidifier it still thought it was always charging. After searching for fixes I found that because it has Android 6.0 it’s possible to send an adb command to it that simulates unplugging the charger:
adb shell dumpsys battery unplug
This command is for testing things like doze mode whilst still being attached to a computer fro debugging. This finally made the Moto 360 turn its screen off, preserving the battery and making it viable again. Unfortunately there are some drawbacks:
- It doesn’t obey the raise to wake setting. The screen has to be touched before it turns on
- The battery level is not reported correctly in the pull down menu
- The little lightning charging indicator is still permanently displayed
To get around drawback number 2 I made a simple watch face that uses the battery level API in Android to show the correct battery level. The source code is in github.
I have added a monocular branch to the mARsquerade project in github. It allows the app to be used without Google Cardboard i.e. like a camera app. There is take picture button which saves images to /sdcard/Pictures/mARsquerade but it doesn’t save the masks on top of the photos yet and there is no gallery built into the app. I’ve got these features on my to do list. When the app first starts it asks if you want to use Cardboard or not. The monocular mode can only be used in landscape for now.
l spent some time on an interesting side project towards the end of last year. The theme for the work Christmas party was a masquerade ball. Instead of creating an ordinary mask I thought I’d do something more Android. Using the following items I created something called mARsquerade:
- Google cardboard with a hole cut in it
- Bluetooth selfie stick
- A borrowed Samsung Galaxy Note 4
- An android application that uses the cardboard SDK and camera
- A Weetabix box
- Gold spray paint
Simply put it’s a face detecting augmented reality rig that can take photos:
The face detecting part uses smile detection to put a sad mask over a frowning face and a happy mask over a smiling one. Like this:
The results can be disturbing! I questioned my own sanity a couple of times during development! I ran out if time to really finish off the hardware part so it looks a bit tatty. Originally I tried two Note 4s for a crazy stereoscopic setup but it was just too heavy and so would have required some sort of reinforced neck brace for support. The extendable selfie stick was really handy for taking photos from a high vantage point. The stick uses Bluetooth but luckily it just sends an enter keystroke to the phone rather any kind of proprietary Bluetooth command or something. I used the cardboard trigger to toggle on the flash as a torch. Useful for finding your way home after a hard nights mARsquerading. I put the code in github if anyone wants to take a look. It’s not in the Play Store because its pretty niche and requires a cut up Google Cardboard. Obviously it works best on a Note 4. The 1440p screen and decent camera make it work well. Running it on a device that doesn’t support a good square preview size (like the Nexus 5X) means a distorted camera view. WARNING: after a while the device seems to get a bit hot! Previewing the camera, distorting it for cardboard and detecting faces is probably a fair amount of work!
The Tesco API has been experiencing some problems lately. On around 26th October its SSL certificate expired. They fixed this last week but anonymous login was broken. Anonymous login allows Paperless List to access data on Tesco products for sale without the need for a tesco.com account. I learned today from the Tesco Labs team on Twitter that anonymous login has been disabled because it was being abused (not by me but presumably other app developers). This means most of the functionality of Paperless List doesn’t work so I removed it from the Google Play Store. Existing users can still use the app but it will only work with manually added (i.e. not Tesco) products. It’s a shame because I have been working on a material design update for the app for a while. It looks like this:
Paperless List may be resurrected with a login screen in order for it to work again with the Tesco API.
Edit: Tesco have a new API with anonymous login but it has less features. I am exploring the possibility of using it and keeping tabs on its development
V2.91 is a bug fix release of Paperless List. I made some plumbing changes in V2.9 that introduced some bugs, especially on older Android version like 2.3.
- Exiting during search crash fixed
- Editing manual items on older Android versions fixed
- Search re-submitting on orientation change fixed
- Progress not visible in action bar on older Android versions fixed
Paperless List V2.9 is now out in the Google Play Store. I added a new feature to display nutritional info:
Just long press on an item in the list, search results or favourites and select the “Nutritional info” option. Values for energy per item and per 100g are shown. The real value in the feature is the traffic light system. Based on FSA guidelines this is a simple way to show if a product has low (green), medium (amber) or high (red) levels of fat, saturates, sugar and salt. Unfortunately, Tesco doesn’t have nutritional info on every product but hopefully they’ll add more in future. I also fixed a bug with scanning items on the list screen. It wasn’t adding them immediately because you had to navigate back out of the list and go back in to see the scanned item.