Exploring Android Q: Location Permissions

Last week we saw the announcement of the Android Q beta release 🎉 With this version of Android comes a collection of exciting changes which we need to get our apps ready for. In this set of articles I’m going to be diving into each one of these so that we are fully prepared for getting our apps ready! Note: You can find the code for this article here. As outlined in the beta release notes for Android Q, one of the changes we are seeing introduced is the way in which we work with user locations inside of our applications – these changes affect the…

Exploring Android Q: Settings Panels

It’s here! Yesterday we saw the announcement of the Android Q beta release 🎉 With this version of Android comes a collection of exciting changes which we need to get our apps ready for. In my next set of articles I’m going to be diving into each one of these so that we are fully prepared for getting our apps ready! Note: You can find the code for this article here. As outlined in the beta release notes for Android Q, one of the new features we are seeing introduced is what are known as Settings Panels. These allow us to…

Handling pricing changes with the Google Play Billing Library

Sometimes things change. And in these cases, it’s likely that you’ll want to be able to make adjustments to reflect these changes. In the context of applications, we may offer subscriptions – and it’s common for the prices of these to change along the way. In this case, we’ll want to adjust the prices for our in-app subscriptions. From the Google Play Console, we’re able to change the prices of our products and when we do so, these changes will be seen almost instantly for all new purchasers of these products. However, for existing users who may already have purchased…

Chords, Conversations and the Kotlin Client Library

I recently launched a side-project I had been working on for the last several months, Chord Assist. Whilst this guitar is made up of many different moving parts, at the centre is the brain of the conversational tool. Whilst I made use of dialogflow to build this functionality, I needed to make use of some server-side component to handle the logic of the conversational tool that could not be handled inside of dialogflow itself (known as fulfilment). For this I decided to use the Kotlin Client Library for Actions on Google! Note: This project is completely open-source and can be…

Flutter CI with Bitrise

If you weren’t already aware, I’m already a big fan of bitrise – and when I heard they were adding support for Flutter, I gained even more love for the product. Naturally I wanted to take this for a spin – so I decided to setup Bitrise CI with my Voice flutter project. Let’s take a quick look at how we can setup our Flutter projects in Bitrise CI and what is available with the workflow editor. Setting up the project requires minimal manual steps from your side – Bitrise automates as much of the process that is possible. After…

Exploring the View Pager 2

It’s likely when working in the Android realm you’ve come across the ViewPager class at some point. This view allows us display a collection of fragments or views to display to the user in a swipe-able format – especially popular within on-boarding and content display screens. This component has been with us in the Android world for some time, it was even ported to the androidx libraries – but now we have a newer version of this component, the View Pager 2, which has recently seen an alpha release go out live. Let’s take a look into exactly what’s so…

Chord Assist: Building an accessible smart guitar for the mute, deaf and blind

In 2017 I created an Android Things project called BrailleBox — a Braille News Reader for the partially sighted. I’m really passionate about helping others and using the knowledge I have to do so, even if it means learning new things to help achieve that goal. This was the main driver for creating Braille Box, but I felt that I could go further and create something that could help others engage in areas that I myself find joy, that may not currently be so accessible (whether accessible at all, or just not quite affordable right now). The result of this project was…