Exploring Image Keyboard Support on Android

During a recent hack day we added a bunch of small but impactful features into our application, one of these being integration with the GIF input provided by the Google keyboard. This involved us making use of the Image Keyboard Support (IKS) functionality that was introduced in Android 7.1 (API level 25), this allows us to hook into the media functionality of keyboards and make use of the data that our application retrieves from them. If you implement this into your application, it will look a little something like this: In this quick post I want to take a quick…

Modularizing Android Applications

We’ve all been there. Single module android applications — at some point in our Android development career it’s likely we’ve worked on, or are working on, a project that consists of a single module. Now, there’s nothing wrong with that at all and in a lot of cases, a single module will most likely do the job. But in cases where our applications may grow, or we may want to take advantage of new distribution features (Instant apps, app bundles) from Google, or even just create a clear separation of concerns to make our project easier to work with— modularizing our applications…

Exploring Android on Chrome OS: Optimising keyboard navigation

Recently I managed to get my hands on a Pixelbook. If you haven’t got one, or even read to much into them, then you’ll be excited to know that they have the ability to run Android applications on them. That means that if you have an application in the Play Store, anyone on Chrome OS can download that app, install it and run it on their device. Whilst in most cases the applications will work out of the box, there are a bunch of things which you can do to improve the experience of your applications whilst they are being…

Exploring Android P: Magnifier

At Google I/O there were a lot of new announcements around the latest version of Android, P. One of these announcements was the new Magnifier functionality—a feature that will make it easier to view and select content that the magnifier is currently being shown for. In this article we’re going to take a quick dive into what this magnifier is and how we can use it on our own view components within our applications. Now, if you haven’t seen the new Magnifier component that is available in Android P then this is what it currently looks like: It’s quite a…

Exploring Firebase MLKit on Android: Barcode Scanning (Part Three)

At Google I/O this year we saw the introduction of Firebase MLKit, a part of the Firebase suite that intends to give our apps the ability to support intelligent features with more ease. With this comes the barcode scanning feature, giving us the ability to scan barcodes and QR codes to retrieve data from the real world and manipulate it inside of our applications. In this post I want to dive into how we can implement this feature into our applications. When I first started looking into Ml Kit I’ll admit that the bar-code scanning feature was the one I…

Learn Clean Architecture for Android at Caster.io

Last year I opened sourced a collection of Clean Architecture boilerplate repositories over at my works’ GitHub page. Whilst these were experiments and me exploring to find a balance between abstraction and maintainable code, these all gathered quite a bit of attention and with this attention came a lot of questions. These questions were all understandable to be asked as there was a lot going within these projects: Between the three there was use of MVP, MVVM and MVI architectural approaches Persistence was handled using Room For the MVVM and MVI examples, the Lifecycle Architecture components were used Dependency injection…

Exploring Android P: Priority Buckets

At Google I/O there were a lot of new announcements around the latest version of Android, P. One of these announcements were Priority Buckets — a battery management update to Android where the system will prioritise resources based on both how recently, and how frequently, the application in question is used. In this article we’re going to take a quick dive into what these buckets are and how they will effect the behaviour of our applications in these circumstances. These new priority buckets are designed to allow the system to be smarter about how resources are distributed between applications — if there is an…